Ultimate Micox Menu drop-down CSS - até 4 níveis
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í. Dúvidas, é só postar lá no fórum. Até a próxima diversão.
Março 8th, 2008 03:29
Você é o cão mesmo!!!!
Março 26th, 2008 15:32
Como poderíamos fazer para deixar os links acessíveis via teclado (tecla TAB). Teria que se utilizar uma funçãozinha para utilizar o onfocus?
Deixo ai o desafio…
Parabéns!
Março 27th, 2008 08:13
Boa idéia Mário.
No futuro vou ver se dá pra implementar isso ae.
Março 31st, 2008 10:26
rapaiz vc é 10 d+
há tempos estrou atrás de um menu drop-down que seja funcional sem javascript, testei aqui no FF e IE e funfou redondo.
o código está bem simples e fácil de implementar.
Parabéns !!!
Abril 11th, 2008 11:23
Parabéns micox!
Ótima solução!
Abril 13th, 2008 20:50
Poderia me tirar uma dúvida.
Porque quando altero a cor da fonte do menu ele para de funcionar o drop-dow??????
Abril 14th, 2008 07:58
Ricardo. Poste sua dúvida completa lá no fórum webly por favor. “Completa” quer dizer pra colocar o código fonte ou o link, pois nos meus testes, alterei a cor de fundo, e outras várias propriedades e não tive problema algum.
Té.
Abril 15th, 2008 22:53
Ok resolvi o problema da cor estava alterando no .menu-vv errado.
Outra dúvida. Seria possivel com esse codigo manter o rastro de background quando navego pelos sub-menus?
Isto é se entrenderam, quando passo o mouse sobre um item e ele muda a cor de fundo e abre um sub-item, quando vou até o sub-item muda tambem sua cor de fundo teria que manter a cor de fundo do item principal alterada tambem…???
Abril 16th, 2008 10:41
Ricardo, é só fazer assim:
.menu-hv li:hover { background-color: gray }
.menu-hv li.hover { background-color: gray }
Junho 3rd, 2008 16:38
o.o
continuo meio boiada, assim, nem to conseguindo botar direito em css
mas ta muito bom do mesmo jeito !
Junho 3rd, 2008 17:32
muito bom
Junho 3rd, 2008 17:37
Seu site ta muito Amorim,no tenho + nd a disser.
Junho 3rd, 2008 17:38
Seu site ta muito …,no tenho + nd a disser.
Junho 12th, 2008 09:48
Olá micox.. Realmente excelente este menu. Meus parabens. Utilizei ele aqui em alguns exemplos e reparei q o trecho abaixo:
* 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’) }
Deixa os navegadores do IE extremamente lento na navegação..
Voce tem alguma alternativa? Abraço
Junho 12th, 2008 10:40
Olá micox, achei uma alternativa..
troquei o trecho *html* por *#meu_div* para restringir as acoes ..
Abraco
Junho 13th, 2008 08:14
Opa, boa solução rafael.
Outra saída é usar o velho javascript pra ativar o hover que todo mundo conhece.
Junho 13th, 2008 09:04
Opa, boa saída rafael.
Outra opção é usar o velho javascript externo que todo mundo conhece pra ativar os hover.
Junho 19th, 2008 11:54
Grande Micox.
Realmente este teu código é o melhor que já vi por aí.
Mas, veja bem, não está funcionando quando se coloca cor, ou seja, se acrescentarmos o (color: #fff; background-color: #036), por exemplo, os sub-menus param de funcionar.
E tambem não está funcionando no MozillaFireFox. Os menus ficam todos muito confusos no Mozilla, sem obedecer nada do css.
Eu te mandei o código em que acrescentei algumas coisas, mas parece que não recebestes.
Se realmente não recebestes, me avisa que eu te mando de novo para que possas ver o que não está funcionando.
Grande abraço.
Dauber.
Julho 9th, 2008 22:58
axo foda o kra no ter o q fazer
e perder seu tempo fazendo um site pra explicar como ser um nerd.
vao ver uma playboy ou coisa do tpo kct.
Julho 27th, 2008 06:58
Antes de mais nada, se você leu é porque você não sabe mas quer saber, logo, você é um noobão que fica criticando o trabalho dos outros.
Seu n00b de merda! E ao invés de ver uma playboy seja mais interessante arranjar uma namorada.
Outubro 30th, 2008 10:16
Muito bom o código , mas não funciona no FireFox
Outubro 30th, 2008 10:50
Ué, funciona sim.
Eu uso ele neste site de concursos e em vários outros sites que já fiz.
Outubro 30th, 2008 10:53
Ué, funciona sim,
eu uso ele em vários sites. Exemplo: http://www.resultadoconcursos.net
Outubro 30th, 2008 10:53
Ué, funciona sim.
Uso isso aí em vários sites. Exemplo: http://www.resultadoconcursos.net
Outubro 31st, 2008 11:46
Testei o seu site e realmente funciona no firefox. Vou fazer novos testes…
O seu menu apresentou alguns problemas no i.e 7 no menu “shopping”
Outubro 31st, 2008 12:56
Hou shit. Valeu o aviso cara.
)
Caracas, é que eu tive que colocar z-index pois são 2 menus diferentes. Mas parece que o z-index não funfou no maldito IE7.
(o problema não tem nada a ver com o código do ultimate menu não
Outubro 31st, 2008 15:54
Micox VS IE7 (bug do z-index): Micox Wins! Tive que colocar tudo o que tiver abaixo do elemento com z-index pra ter position:static. Bizarro