Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Moleiro

Menu com submenus na Horizontal

Recommended Posts

Olá!!

 

Peguei um exemplo de menu no site do Maurício Samy Silva (http://www.maujor.com/tutorial/ddownmenu-a.php) e adaptei para ficar na horizontal. Ficou bom, mas gostaria que somente os submenus ficassem na vertical mas não estou conseguindo... se alguém puder me ajudar desde já meu muito obrigado!!

 

Marcos

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br" xml:lang="pt-br"><head><meta name="keywords" content="tutorial,acessibilidade,css,css menu,estilo,folhas estilo,layout css,layout sites,menu css,paginas web,tutorial css,web design,web standards,webdesign,tableless" /><meta name="description" content=" Tutoriais, macetes, dicas sobre uso das CSS para projetar sites." /><meta name="author" content="Nick Rigby" /><meta name="MSSmartTagsPreventParsing" content="true" /><meta http-equiv="imagetoolbar" content="no" /><meta http-equiv="Pragma" content="no-cache" /><meta name="robots" content="all" /><meta name="language" content="pt-br" /><meta name="ICBM" content="-22.975781,-43.193082" /><meta name="DC.title" content="CSS para Web Design" /><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Horizontal Drop Down Menus - Parte 3</title><script type="text/javascript">function IEHoverPseudo() {	var navItems = document.getElementById("primary-nav").getElementsByTagName("li");		for (var i=0; i<navItems.length; i++) {		if(navItems[i].className == "menuparent") {			navItems[i].onmouseover=function() { this.className += " over"; }			navItems[i].onmouseout=function() { this.className = "menuparent"; }		}	}}window.onload = IEHoverPseudo;</script><style type="text/css">body { font: normal 62.5% verdana; }ul#primary-nav,ul#primary-nav ul {	margin: 0;	padding: 0;/*	width: 600px; */ /* Width of Menu Items */	border-bottom: 0px; solid #ccc;	background: #fff;   /* IE6 Bug *//*	background: blue;  /* IE6 Bug */ cor do fundo dos menus	font-size: 100%;	}ul#primary-nav li {	position: relative;	list-style: none;	display: inline;		float:left;	}ul#primary-nav li a {	display: block;	text-decoration: none;		float:left;	color: #777;/*	color: red;   cor das letras do menu */	padding: 5px;	border: 1px solid #ccc;	border-bottom: 1;	}/* Fix IE. Hide from IE Mac \*/* html ul#primary-nav li { float: left; height: 1%; }* html ul#primary-nav li a { height: 1%; }/* End */ul#primary-nav ul {	position: absolute;	display: none;	left: 0px;   /* Set 1px less than menu width */	top: 23px;	}ul#primary-nav li ul li a { padding: 2px 5px; } /* Sub Menu Styles */ul#primary-nav li:hover ul ul ,ul#primary-nav li:hover ul ul ul,ul#primary-nav li.over ul ul,ul#primary-nav li.over ul ul ul { display: none; top: 17px;} /* Hide sub-menus initially */ul#primary-nav li:hover ul,ul#primary-nav li li:hover ul,ul#primary-nav li li li:hover ul,ul#primary-nav li.over ul,ul#primary-nav li li.over ul,ul#primary-nav li li li.over ul { display: block; } /* The magic */ul#primary-nav li.menuparent { background: transparent url(arrow-down.gif) right center no-repeat; } /* ul#primary-nav li.menuparent { background: yellow url(arrow-down.gif) right center no-repeat; } Cor dos que tem o -> */ul#primary-nav li.menuparent:hover,ul#primary-nav li.over { background-color: #f9f9f9; }/*ul#primary-nav li.over { background-color: blue } cor da selecao quando tem submenu */ul#primary-nav li a:hover { color: #E2144A;  }/*ul#primary-nav li a:hover { color: blue; background-color: blue} cor da letra dos menus com selecao / cor do fundo */</style></head><body><h1>EXEMPLO DE MENU PRINCIPAL NA HORIZONTAL</h1><h2>Adaptação feita por:</h2>Marcos Antunes Moleiro<br><br><ul id="primary-nav">  <li><a href="#">Home</a></li>  <li class="menuparent"><a href="#">About   </a> 	<ul>	  <li><a href="#">History</a></li>	  <li><a href="#">Team</a></li>	  <li><a href="#">Offices</a></li>	</ul>  </li>  <li class="menuparent"><a href="#">Services   </a> 	<ul>	  <li><a href="#">Web Design</a></li>	  <li><a href="#">Internet Marketing</a></li>	  <li class="menuparent"><a href="#">Hosting   </a> 		<ul>		  <li><a href="#">Dedicated</a></li>		  <li><a href="#">Virtual</a></li>		  <li><a href="#">Shared</a></li>		  <li><a href="http://www.uem.br" target="_blank">Managed</a></li>		</ul>	  </li>	  <li><a href="#">Domain Names</a></li>	  <li><a href="#">Broadband</a></li>	</ul>  </li>  <li class="menuparent"><a href="#">Contact Us   </a> 	<ul>	  <li><a href="#">United Kingdom</a></li>	  <li><a href="#">France</a></li>	  <li><a href="#">USA</a></li>	  <li><a href="#">Australia</a></li>	</ul>  </li></ul></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu micox!No link que você me passou encontrei um outro link (http://solardreamstudios.com/learn/css/cssmenus/) postado pelo Santiago que faz exatamente o que eu preciso... Obrigado!MarcosPs. Como você fez essa busca?? Tento mais não consigo... digito em Procurar por Palavra-chave "menu+vertical" (sem as aspas) mas só retorna a minha postagem!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente a busca aqui do invisionBoard não está muito boa.Eu mandei pesquisar pelas palavras "menu vertical" (sem as aspas) dentro do forum webstandards.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora funcionou a busca... vai saber :wacko:

 

Com relação ao menu, mudei os Css para poder usar mais submenus. Agora dá para usar até o 4 submenus (acho que exagerei http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif ).

Também fiz alterações no html para poder usar uma seta como imagem para os submenus, já que no código original (em solardreamstudios) usava o sinal de "+".

Os menus originais (com os "+") podem ser vistos em:

Original Horizontal

Original Vertical

 

os menus modificados (com as setas) podem ser vistos em:

Menu Horizontal

Menu Vertical

 

Ficou bom, mas... o código html dos menus para aceitarem a seta ficaram muito repetitivos, pois sempre deve-se escrever:

STYLE="background-position: center right; background-image: url(SetaDireita.gif); background-repeat: no-repeat;"

 

como pode ser visto nesta parte do código:

...  <li><a href="#" STYLE="background-position: center right; background-image: url(SetaDireita.gif); background-repeat: no-repeat;">				  Learn   </a>	<ul>	  <li><a href="#" STYLE="background-position: center right; background-image: url(SetaDireita.gif); background-repeat: no-repeat;">					  Fireworks</a>		<ul>...

Para evitar essa repetição tentei criar um estilo chamado seta da seguinte forma...

#seta { background-position: center right; background-image: url(SetaDireita.gif); background-repeat: no-repeat}...  <li><a href="#" ID="seta">				  Learn   </a>	<ul>  <li><a href="#" ID="seta">					  Fireworks</a>		<ul>...

... mas não deu certo... alguém poderia me ajudar???

 

Obrigado!

 

Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Simples. Troque o ID="seta" por class="seta".ID é o identificador (nome) do elemento.Ah e procure usar sempre minúsculas pra ficar no padrão.Muito boa sua solução. Parabéns...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mesmo assim não funciona (a seta não aparece)...acho que deve ser por causa dessa parte do código que inicia o menu<ul id="navmenu">e ai não consegue achar o estilo "seta"Aguadeço a ajuda desde ját+Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcos. Estude sobre seletores. no site do maujor explica bem.

 

Seu código ficará assim:

.seta { /* <-- Alterado de # (malha) para . (ponto) */background-position: center right;background-image: url(SetaDireita.gif);background-repeat: no-repeat}...  <li><a href="#" class="seta"> <!-- alterado para class -->				  Learn   </a>	<ul>  <li><a href="#" class="seta"> <!-- alterado para class -->					  Fireworks</a>		<ul>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Realmente preciso estudar um pouco mais... http://forum.imasters.com.br/public/style_emoticons/default/joia.gif!!

 

Não querendo ser chato, mesmo assim não funcionou!

Veja a figura abaixo:

http://img126.imageshack.us/my.php?image=c...061118387vj.jpg

 

O que será que está acontecendo? http://forum.imasters.com.br/public/style_emoticons/default/cry.gif

 

 

Se puder me ajudar, desde já agradeço!

 

t+

Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já consegui algum progresso, estudei um pouco mais e fiz as seguintes modificações:

 

no html

...<ul id="navmenu">  <li><a href="#">Blog</a></li>  <li class="setabaixo"><a href="#">				  Work   </a>	<ul>	  <li class="setadireita"><a href="#">					  Websites</a>		<ul>...
no css

.../* Alterações feitas para colocar setas nos menus */ul#navmenu li.setabaixo a { background-position: center right; background-image: url(SetaBaixo.gif); background-repeat: no-repeat}ul#navmenu li.setadireita a ,ul#navmenu ul li.setadireita a ,ul#navmenu ul li.setadireita:hover a ,ul#navmenu ul li.setadireita li.setadireita a ,ul#navmenu ul li.setadireita li.setadireita:hover a ,ul#navmenu ul li.setadireita li.setadireita li.setadireita a ,ul#navmenu ul li.setadireita li.setadireita li.setadireita:hover a { background-position: center right; background-image: url(SetaDireita.gif); background-repeat: no-repeat}...

 

Esta funcionando perfeitamente no Mozilla/Firefox, mas no internet explorer não :o

Olhe só as imagens:

Tela de Menu no IE

Tela de Menu no Mozilla

 

Aqui está o link para o menu:

Link para o Menu

 

O que devo fazer para rodar no IE??

 

Muito obrigado desde já

 

Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

No IE o hover só pode ser aplicado a elementos <a>.Mas testei aqui no IE6 e parece que tá igual. você já mudou o código fonte?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... no Mozilla/Firefox funciona bem, mas no internet explorer não. Nas fotos dos screenshots da minha última mensagem você pode ver que os menus abrem no IE6 só que quando o mouse está sobre o menu/submenu as setas somem... e aí que é o problema...Acho que tenho que modificar alguma coisa no .js para que aceite a classe setadireita, mas não estou conseguindo.... o que você acha???obrigado!Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

você observou o que eu disse antes ou nem leu?

No IE o hover só pode ser aplicado a elementos <a>.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Li sim... é que no arquivo html.js tem um código que corrige essa falha do IE...

 

navHover = function() {	var lis = document.getElementById("navmenu").getElementsByTagName("LI");	for (var i=0; i<lis.length; i++) {		lis[i].onmouseover=function() {			this.className+=" iehover";		}		lis[i].onmouseout=function() {			this.className=this.className.replace(new RegExp(" iehover\\b"), "");		}	}}if (window.attachEvent) window.attachEvent("onload", navHover);

Como a rotina funciona no Mozilla com as modificações que eu fiz, e tem uma rotina em JavaScript que corrige essa falha que você colocou, não sei porque não está funcionando!!

Será que devo acrescentar a classe setadireita no JavaScript?? Como??

 

Obrigado!

 

Marcos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a todos!!

 

Consegui fazer o menu da maneira como queria http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Os links da minha última mensagem estão desatualizados pois estava alterando-os para um novo modelo que encontrei na internet.

Pesquisando aqui no imasters (não sei em quais mensagens, desculpe a falta do crédito, pois foram muitas mensagens pesquisadas) encontrei um link que me levou a outro link e desse a um outro link com o seguinte artigo:

http://www.htmldog.com/articles/suckerfish/dropdowns/

 

Lendo e estudando o artigo acima pude entender um pouco mais sobre como trabalhar com menus horizontais.

Com o artigo acima descobri uma nova forma de construção do CSS (um pouco diferente dos meus posts anteriores) bem mais claro e simples.

Neste mesmo artigo tem um exemplo de menu horizontal bem interessante:

http://www.htmldog.com/articles/suckerfish...pdowns/example/

 

Fiz algumas mudanças no código para se adaptar as minhas necessidades: Cores, posição, mudança para aceitar mais níveis (agora aceita 5 níveis :wacko: ) e menu no mesmo estilo na Vertical.

 

Um exemplo do menu adaptado por mim pode ser visto em:

Menu Horizontal

Menu Vertical

 

Gostaria de compartilhar com todos do forum a solução encontrada para Menus Horizontais.

Gostaria, ainda, de pedir a ajuda para testar em outros navegadores e possíveis correções, pois testei somente no Mozilla, Firefox e Internet Explorer.

Me parece que no Konqueror não está funcionando muito bem...

 

Gostaria de agradecer a todos, mas principalmente ao Micox pela grande ajuda!!

 

t+

Marcos

 

PS. Achei também outros modelos de menus olhem só que menu interessante:

http://www.thedesigntribe.com/new-menu12.htm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcos,

 

Primiero, muito legal você ter colocado o resultado do seu trabalho aqui, para que todos possam ver! Isso é muito bom! B)

 

Segundo, PARABÉNS!!! Espero que outras pessoas sejam influenciadas por você....q foi atrás, pesquisou, postou aqui, enfim, mostrou q correr atras do q se quer não é tão dificil!!! Novamente parabéns a você, e é claro, ao micox tab, q sempre nos ajuda qdo precisamos! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

 

Abraços a todos!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.