Fonte: http://elmicox.blogs...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.
<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.
<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.
/* 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í.