Jump to content


Photo

Menu 3 Níveis, Porém Com Css's Diferentes


  • Faça o login para participar
7 replies to this topic

#1 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 02/09/2009, 10:03

Olá pessoas...

Estou desenvolvendo um painel de controle, e o menu dele tem 3 níveis. Porém, não é um drop-down comum.

O primeiro nível, mostra as categorias, mostra um ao lado do outro através de float:left.
O segundo nível mostra as subcategorias, mostra embaixo das categorias, mas um do lado do outro, com float tb...
O terceiro nível mostra as opções dessa subcategoria, e deve ser mostrada em drop-down.

Porém não estou conseguindo fazer isso no CSS utilizando a estrutura semântica correta:

<ul>        <li><a href="#">Gerenciar conteúdos</a>            	<ul>                	<li><a href="#">Textos</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Links</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Arquivos/downloads</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Galeria de imagens</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Eventos</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Vídeos</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Depoimentos</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Banners</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                    <li><a href="#">Avisos</a>                        <ul>                            <li><a href="#">Cadastrar registro</a></li>                            <li><a href="#">Editar registros</a></li>                        </ul>                    </li>                </ul>            </li>     </ul>

Pronto, deveria ficar assim:

Posted Image

Ao passar o mouse em "Gerenciar conteúdo", a linha preta deveria abrir as opções. Estas opções devem ter as sub-opções em drop-down como mostra a imagem!

Empaquei no css aqui:

#menu { clear:both; margin-top:5px; }	#menu ul { font-size:11px; }	#menu ul li { text-align:center; position:relative; }	#menu ul li:hover ul, #menu ul li ul li:hover ul { display:block; width:100%;}	#menu ul li a { float:left; width:138px; height:30px; padding-top:10px; text-decoration:none; color:#444; background:url(../imagens/menu.png) no-repeat; }	#menu ul li a:hover, #menu ul li a.ativo { background:url(../imagens/menu-hover.png) no-repeat; color:#FFF; }	#menu ul ul, #menu ul ul ul { display:none; position:absolute; top:30px; left:0; margin:0; padding:0; }	#menu ul li ul li { float:left; }	#menu ul li ul li a { background:url(../imagens/bullet-1.gif) no-repeat 10px center; float:left; width:auto; height:28px; line-height:28px; color:#FFF; padding:0; padding-left:23px; padding-right:10px; margin:4px 0 0 0; }	#menu ul li ul li a:hover { background:#444 url(../imagens/bullet-1.gif) no-repeat 10px center; }

UPDATE: Consegui fazer o inline, mas ainda falta o drop-down, e parece que está tendo problema no chrome, e no IE7, o menu fica escadinha... zzzz

vejam online: http://www.gpaprospe...br/clientes/up/

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#2 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 05/09/2009, 18:54

ningúem?

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#3 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 07/09/2009, 11:17

então mayke, até onde sei, eu fica um inline para o sistema da escola, mais não cheguei a fazer um terceiro nivel como dropdown, mas já tinha feito um segundo, mas pensando rapido, seria assim:

O primeiro menu você faz normalmente.

E segundo, que é o ul dentro do li, você deixa com position: absolute, left: 0; e top em uma media no top que ele fica na linha preta, o novo li, vai ter que ficar com position relative, para servir de referencia para o novo dropdown...


Obs, o primeiro ul tem que estar com position relative, para servir de referencia para o primeiro submenu.





código base:
ul{
   position: relative;
}

ul li{}

ul li ul{
 position: absolute; top: 20px, left: 0;
}

ul li ul li{
 position: relative,
}
ul li ul li ul{
  position: absolute, top: 20px; left: 0;
}

Flw.

#4 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 09/09/2009, 13:28

opa! Valeu édipo, esse é o caminho das pedras mesmo...

dei uma mexida, está quase lá (pelo menos no firefox, estou sem os outros navegadores pra testar)

[codebox] #menu { clear:both; margin-top:5px; }
#menu ul { font-size:11px; position: relative; }
#menu ul li { text-align:center; }
#menu ul li a { float:left; width:98px; height:20px; padding-top:10px; text-decoration:none; color:#444; background:url(../../imagens/menu.png) no-repeat; }
#menu ul li a:hover, #menu ul li a.ativo { background:url(../../imagens/menu-hover.png) no-repeat; color:#FFF; }
#menu ul ul { position: absolute; display:none; top:30px; left:0; margin:0; padding:0; }
#menu ul ul li { float:left; position: relative }
#menu ul ul li a { background:url(../../imagens/bullet-1.gif) no-repeat 10px center; float:left; width:auto; height:28px; line-height:28px; color:#FFF; padding:0; padding-left:23px; padding-right:10px; margin:4px 0 0 0; }
#menu ul ul li a:hover { background:#444 url(../../imagens/bullet-1.gif) no-repeat 10px center; }
#menu ul ul ul { position: absolute; background:url(../../imagens/menu-dropdown.png) no-repeat; width:130px; height:63px; }
#menu ul ul ul li { width:130px; }
#menu ul ul ul li a { text-align:left; height:20px; line-height:20px; width:130px; }
#menu ul li:hover ul { display:block; width:100%; }
#menu ul li:hover ul ul { display:none; }
#menu ul li ul li:hover ul { display:block; }
[/codebox]

Porém, agora a parada é outra... o background do drop-down está herdando o tamanho da UL de cima! (que não é especificada tamanho) se vocês verem, eu estou setando o tamanho da UL em 130px, mas ele está pegando a UL de cima...

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#5 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 10/09/2009, 02:07

veja se o problema não é de dar clear nos li pois o link você deixou como float, e tem que ter algo segurando se não estoura a li.

dar o clear sem poluir o código html:

li:after, .menu-hv.after { content: "."; line-height: 0px; clear: both; display: block; visibility: hidden}

fonte: http://elmicox.blogs...ox-sim-ele.html

Edição feita por: Édipo Costa Rebouças, 10/09/2009, 02:09.
erros de português


#6 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 10/09/2009, 08:57

não deu certo! pela lógica, como você falou, o clear:both não tiraria o que prenderia, então estourando?!

adaptei assim: [codebox]#menu li:after, .#menu ul.after { content: "."; line-height:0px; clear:both; display:block; visibility:hidden; }[/codebox]

Mas sem resultado... veja como fica no anexo enviado!

Usei o web developer pra me dizer o que cada elemento estava trazendo do CSS, e para minha surpresa, não está certo, não sei pq... veja na imagem anexada 2!



a UL selecionada deveria estar trazendo o BG setado no css... mas pq não está?!

Attached Files

  • Attached File  tt2.jpg   79.83KB   3 downloads
  • Attached File  tt.jpg   23.68KB   5 downloads

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#7 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 14/09/2009, 18:04

Tentei e nada...
Tenho outra dúvida também:

Gostaria de que ao entrar na segunda UL, a LI ficasse marcada, pra indicar qual categoria ele está!... tentei usar o pseudo-class "before", mas nada :ponder:

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#8 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 18/09/2009, 10:08

ninguem pode me ajudar?! :(

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq