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í.

Você gostou? Comente no fórum!

Comentários:

Maclaw disse:

Boua senhor micorox...
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:

Olá,

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:

Ummm, meu menu ainda não tem suporte a isto mas você me deu uma boa idéia pra implantá-lo.

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 !).

Mais recentes em WebStandards e CSS

Mini-lib css reset do micox
Por Micox - Abaixo mostrarei tipo uma mini-lib css com o qual eu...
Mapear regiao
Por faro - Substituindo a tag map pelo css....
Layout diferente.
Por faro - Boa noite pessoal como vão todos... esse é meu primeiro...
Rollover via css
Por NightSpy - Achei este efeito na net, como não achei novamente,...
Menu drop-down só com css - até 4 níveis
Por Micox - Código pronto - só copiar, colar e usar...

Ver mais Artigos de WebStandards e CSS.

Ver e retirar outras dúvidas no fórum Webly.

Alguns Direitos Reservados | RSS | O Fórum

Webly Portal e Fóruns - Internet + Humana | Design by ArthurHenrique.com