Ultimate Micox Menu drop-down CSS - até 4 níveis
Fonte: http://elmicox.blogspot.com/2008/03/ultima...n-css-at-4.html
HOoooaa. E ae malucada.
Há um tempo eu
venho brigando em busca do código de menu css drop-down perfeito.
Eu queria um menu dropdown css pra copiar e colar, simples, rápido, sem precisar de configurações.
Apenas copiar/colar no meu CSS, definir cor e largura dos itens, usar a classe no html e pronto. E tudo funcionando nos navegadores mais usados (FF, IE6/7, OP).
Ontem eu postei a peça que faltava (
ativar hover no IE6 via css).
Veja o
exemplo online (e o código fonte) do Ultimate Micox Menu Drop Down CSS até 4 níveis.
Bem, vamos aos códigos:
Primeiro é só fazer seu velho menu usando UL e LI.
CODE
<ul>
<li>class='menu-hv'</li>
<li><a href='#'>2</a></li>
<li><a href='#'>3...</a>
<ul style='background-color: red; '>
<li>31</li>
<li><a href='#'>32</a></li>
<li>33</li>
</ul>
</li>
<li><a href='#'>4...</a>
<ul>
<li>41</li>
<li><a href='#'>42</a></li>
<li><a href='#'>43...</a>
<ul style='background-color: blue'>
<li>431</li>
<li><a href='#'>432...</a>
<ul style='background-color: gray'>
<li>4321</li>
<li><a href='#'>4322</a></li>
</ul>
</li>
</ul>
</li>
<li>44</li>
</ul>
</li>
</ul>
Depois você coloca a classe menu-hv no UL (ou no div pai de UL) para ativar o menu horizontal com submenus verticais. Para o menu vertical vertical (em pé) a classe é menu-vv.
CODE
<ul class='menu-hv'>
Por último é só colocar o código do Ultimate Micox Menu drop-down CSS (UMMDDCSS huahe) no seu arquivo CSS ou em um arquivo CSS separado. O local onde você pode alterar a cor, largura, etc dos itens do menu está indicado no código. Não mexa no resto pra não correr o risco de estragar.
CODE
/*
Menus drop-down horizontal-vertical (hv) e vertical-vertical (vv) até 4 níveis
by Micox - elmicox.blogspot.com - Ver. 2.0 - 20/02/08 - Creative Commons License
*/
.menu-hv, .menu-vv { position: relative; margin: 0; padding: 0; display: block; zoom: 1;}
.menu-hv * , .menu-vv * { margin: 0; padding: 0; list-style: none}
.menu-hv li , .menu-vv li { position: relative; line-height: 1.2em; vertical-align: top }
.menu-hv a , .menu-vv a { display: block; zoom: 1; line-height: 1.2em }
.menu-hv li ul, .menu-vv li ul { position: absolute; visibility: hidden }
.menu-hv li:hover ul, .menu-vv li:hover ul,
.menu-hv li.hover ul, .menu-vv li.hover ul { visibility: visible }
.menu-hv li:hover ul ul, .menu-vv li:hover ul ul,
.menu-hv li.hover ul ul, .menu-vv li.hover ul ul { visibility: hidden }
.menu-hv li li:hover ul, .menu-vv li li:hover ul,
.menu-hv li li.hover ul, .menu-vv li li.hover ul { visibility: visible }
.menu-hv li li:hover ul ul, .menu-vv li li:hover ul ul,
.menu-hv li li.hover ul ul, .menu-vv li li.hover ul ul { visibility: hidden }
.menu-hv li li li:hover ul, .menu-vv li li li:hover ul,
.menu-hv li li li.hover ul, .menu-vv li li li.hover ul { visibility: visible }
/* características horizontal-vertical */
.menu-hv:after, .menu-hv.after { content: "."; line-height: 0px; clear: both; display: block; visibility: hidden}
.menu-hv li { float: left; }
.menu-hv li ul li { float: none; }
.menu-hv li ul li ul { position: absolute; left: 100%; top: 0; }
/* características vertical-vertical */
.menu-vv { float: left; }
.menu-vv li ul { left: 100%; top: 0; }
/* ****************************************
ALTERE ABAIXO. defina a largura, cor, formatações, etc, dos itens do seu menu abaixo
ou apague as linhas se for definir em outro lugar
*/
.menu-hv li { width: 100px; background-color: yellow }
.menu-vv li { width: 100px; background-color: yellow }
.menu-hv li a:hover { background-color: cyan }
.menu-vv li a:hover { background-color: cyan }
/* Micox Pseudo-class-css2 to IE (MXPC). Activate .hover and .first-child in IE 6
http://elmicox.blogspot.com/2008/03/ativando-hover-e-first-child-no-ie-6-um.html */
* html * { color: expression( (function(who){ if(!who.MXPC){
who.MXPC = '1';
if(who.nodeName != 'A'){
who.onmouseenter=function(){ who.className += ' hover'};
who.onmouseleave=function(){ who.className = who.className.replace(' hover','')}; }
(who==who.parentNode.firstChild) ? who.className += ' first-child' : '';
} } )(this) , 'auto') }
Pronto! Agora ficou fácil fazer um menu drop down CSS. É só copiar e colar isso aí no código. Não precisa pegar javascript externo, não precisa quebrar cabeça com floats ou displays. É só colocar isto no seu documento e fazer seu menu ul-li.
Os espertos devem ter percebido que dá pra aumentar a quantidade de níveis facilmente adicionando novos níveis onde começa os visibility: hidden né? heheh
Bom, é isso aí.
Comentários:
Maclaw disse:
Agora sim... IEca 6, 7, 8...
Firifox 0.1, 0.2, 1, 2
xou...
Sem mais problemas de Ul, li no Ieca 6...
Good job...
=P
GustavoZetum disse:
Sou novo neste site, mas não é primeira vez que vejo um de seus menus, acho todos eles muito bons e já usei vários como modelo.
Bom, eu tenho um menu horizontal com submenu vertical, versão antes desta, que funciona perfeitamente no ie e firefox, até quando precisei utiizar um iframe, daí deu problema.
No ie continuou funcionando, já no firefox os elementos do submenu que aparecem sobre o iframe não dá para acessar, parece que o firefox dá mais preferencia ao iframe do que ao menu.
Eu queria saber se este bug está corrigido nesta nova versão?
Um abraço e parabéns por seus excelentes trabalhos
Micox disse:
Enquanto eu não faço um novo (vai demorar) você pode ir usando esta solução aqui:
http://erainfo.blogspot.com/2004/09/mostra...-um-select.html
Talvez dê certo.
Ver o restante dos comentários no fórum (e aproveitar pra comentar também !).