iMasters Fóruns: Repente CSS - [Menus] - iMasters Fóruns

Ir para

  • (2 Páginas)
  • +
  • 1
  • 2
  • Novo tópico
  • Responder

Repente CSS - [Menus] Desafios curtos.

#51 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5690
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 26 agosto 2009 - 23:38

Opa! mas é lógico ^_^
vamos lá.. a minha solução pro Terceiro Menu, foi esta:
http://www.cenasordi...rceiroMenu.html

Veja que a marcação é a mais simples possível:
	<ul id="menu">
		<li class="home"><a href="terceiroMenu.html">Home</a></li> 
		<li class="game"><a href="terceiroMenu2.html">Game</a></li> 
		<li class="dicas"><a href="#">Detonados</a></li> 
		<li class="voltar"><a href="#">Voltar</a></li> 
	</ul><!-- /menu --> 
apenas com adição de classes para cada item, para depois conseguirmos fazer o efeito de página atual.
Algumas coisas são básicas, como troca de cor e sublinhados.

Em soluções 'tradicionais', já que temos cantos arredondados, usaríamos uma imagem para cada canto(esquerdo|direito), e uma para se repetir horizontalmente, para poder deixar o menu 'esticável' em largura. Ai totalizaríamos 3 imagens.. e um certo malabarismo para posicionar elas.
Não precisei de elementos vazios. Pois trabalhei com apenas 2 imagens.

Eu consegui isso, pois os meus cantos redondos da esquerda, já possuem a suposta repetição:
Apliquei no LI:
#menu li {
	float: left; /* flutuar cada LI, para termos um menu horizontal */
	margin-left: 5px; /* espaçamento de um item para o outro */
	height: 28px; /* importante definirmos a altura, para que não 'corte' o background */
	background: url('bgLIs.png') left center; /* aqui já entra a imagem, posicionada no left do elemento, e com a altura no centro, por causa do css sprit */
}
CSS Sprite
e a outra imagem eu apliquei no outro elemento, o A:
#menu li a {
	color: #fff; /* cor do texto */
	text-decoration: none; /* retirando o underline no estado :link */
	font-weight: bold; /* deixando o texto em negrito */
	display: block; /* importante definir o display block, por causa do efeito que eu quis */
	padding: 0 25px; /* padding left|right de 25px; para afastar as bordas do texto */
	height: 28px; /* a mesma altura do LI */
	line-height: 28px; /* para centralizar o texto na vertical, coloco o mesmo valor do height */
	text-align: center; /* alinhando o texto no centro horizontal explicitamente, só para garantir */
	background: url('cantos.png') no-repeat right center; /* aqui é a outra imagem, com apenas os cantos redondos da direita */
}
seguindo no meu css, temos um 'hack' para concertar um bug do IE6:
/* bug do IE6 com o display: block; para elementos sem width */
* html #menu li a {
	width: 40px;
}
é o 'hack estrela html', pois apenas o IE6 aceita um 'pai' para o elemento HTML.
Daí em diante vem a 'magica'. O estado de "mouse over".
#menu li a:hover {
	background: url('cantos.png') no-repeat right top; /* aqui eu mudo de 'center' para 'top', é o CSS sprite! */
	color: #000; /* coloco o texto na cor preta */
	text-decoration: underline; /* coloco um underline */
}
#menu li:hover,
#menu li.over {
	background: url('bgLIs.png') left top; /* aqui eu troco a imagem dos cantos esquerdos, e do corpo dos items.. e mudo o 'center' para 'top' tb.. aproveitando o css sprite */
}
note que a classe '.over' só existe por causa do Javascript que é usado para aplicar :hover no LI, para o IE6.
Sem o JS, a minha solução funciona perfeitamente nos outros browsers mais 'standards'.

Oque segue, é para aplicarmos o efeito de 'link atual'. Muitos confundem com o pseudo :active, mas ele é apenas o momento do click.
As outras soluções usaram uma class="current", que deve ser colocada no link da página em questão.
Dessa forma, temos que testar item por item do menu, para sabermos quem vai possuir a classe.. se tivermos um site dinâmico, isso se tornará bem custoso.

body#home ul#menu li.home,
body#game ul#menu li.game,
body#dicas ul#menu li.dicas {/* essa do body#dicas não chega a acontecer nos meus arquivos */
	background: url('bgLIs.png') left bottom;	
}
body#home ul#menu li.home a,
body#game ul#menu li.game a,
body#dicas ul#menu li.dicas a {
	background: url('cantos.png') no-repeat right bottom;	
}
body#home ul#menu li.home a:hover,
body#game ul#menu li.game a:hover,
body#dica ul#menu li.dicas a:hover {
	color: #ff0; 
}
Aqui, a técnica, é ficar alterando o id do body do documento.
Veja:
terceiroMenu.html
<body id="home">
o link atual dele, é o item "Home" do menu.
e o terceiroMenu2.html
<body id="game">
o link atual dele, é o item "Game" do menu.
Mais uma vez, uso o css sprit.. para o terceiro estado(link atual).

A técnica foi deixar pro CSS resolver quem é a página. Pois veja que as declarações se tornam falsas.
E só vai aplicar a regra, qndo a id do body bater com a declarada na marcação.

Qualquer dúvida sobre as soluções perguntem. Vamos estudar a melhor forma, e criar efeitos interessantes usando os super poderes do CSS!

#52 Membro offline   Detonador PHP Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 131
  • Cadastrado: 05-outubro 06
  • Sexo:Masculino
  • Localização:Porto Alegre

Postou 27 agosto 2009 - 00:56

Primeiro quero me desculpar pois errei. William já tinha respondido! hehehe
Segundo, gostaria de participar do menu 3 ainda! Fiz com uma marcação extra infelizmente, mas acho que saiu mais limpo no fim.
Deem uma olhada e me digam o que acham:

HTML:
<div id="menu_nivel_01">

    <ul>
        <li><a href="#"><strong>home</strong></a></li>
        <li><a href="#"><strong>estatísticas</strong></a></li>
        <li><a href="#"><strong>usuários</strong></a></li>
        <li><a href="#"><strong>configurações</strong></a></li>
    </ul>

</div>



CSS:
#menu_nivel_01{
	clear:right;
	float:right;
	font-family:Arial, Helvetica, sans-serif;
	font-size:11px;
	font-weight:bold;
	text-transform:uppercase;
	color:#B5BDC2;
	padding-right:10px;
}

#menu_nivel_01 ul li{
	float:left;
	list-style:none;
	line-height:25px;
	padding:0px 2px;
}

#menu_nivel_01 a{
	display:block;
	color:#B5BDC2;
	text-decoration:none;
	height:25px;
	padding:0px 8px;
	cursor:pointer;
}

#menu_nivel_01 a:hover{
	color:#092E48;
	background-color:#fff;
	background-image:url(../imagens/cabecalho/menu_dir.jpg);
	background-position:right;
	background-repeat:no-repeat;
	padding:0px 0px 0px 0px;
}

#menu_nivel_01 a:hover strong{
	display:block;
	padding:0px 8px 0px 8px;
	background-image:url(../imagens/cabecalho/menu_esq.jpg);
	background-position:left;
	background-repeat:no-repeat;
	height:25px;
}


OBS: usei strong simplesmente porque pra mim era mais fácil dar um Ctrl + B e ele marcar automaticamente pra mim! Mas se fosse usar realmente outro marcador, seria o span!

#53 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5690
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 27 agosto 2009 - 01:00

opa! bacana!
Participa sim cara.. o desafio está sempre aberto.. pode entregar qualquer menu, que já tenhamos discutido.

Poste tb as imagens que você usou... hospeda no http://www.imageshack.us/, pois ai vamos conseguir analisar direitinho como você fez.
Isso aqui:
<div id="menu_nivel_01">

    <ul>
é algo que muitas pessoas andam fazendo.
Nesse caso, é totalmente desnecessário.
bastava:
   <ul id="menu_nivel_01">


#54 Membro offline   Detonador PHP Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 131
  • Cadastrado: 05-outubro 06
  • Sexo:Masculino
  • Localização:Porto Alegre

Postou 27 agosto 2009 - 01:17

No caso aquela div é porque tem mais código ainda no meu html... estou fazendo direto do meu projeto!
Dai pra organizar melhor o código achei melhor colocar o menu dentro de uma div pra separar das outras divs que tenho aqui!

Só uma pergunta: Tem como tirar aquela borda que aparece quando o link fica ativo? E porque a:active não pega no FF?

Olha ai as minhas imagens:
Canto Direito
Canto Esquerdo

Sem Javascript, sem nada! hehehe
Só realmente não gostei da marcação extra! mas paciência!
Eu vi no Majour um efeito em aba, quase o qu queríamos, mas era estático, dai fica mais fácil!
Agora se mechendo assim é complicado!

Qual a nota? E quais as observações (fora a div extra logicamente! hehehe)

#55 Membro offline   Detonador PHP Ícone

  • Ícone
  • Grupo: Membros
  • Posts: 131
  • Cadastrado: 05-outubro 06
  • Sexo:Masculino
  • Localização:Porto Alegre

Postou 27 agosto 2009 - 01:23

olha ai o menu de exemplo:
Menu

Só não da bola para a localização dele, pois é onde ele esta no meu projeto!

É... realmente agrupar seria muito bom!
uahauhuahaua... é que eu ainda esto aprendendo! Hehehehe!
mas no caso do:

#menu_nivel_01 a:hover{        
   padding:0px 0px 0px 0px;
}


Eu não tinha agrupado pois eu estava testando os padding pra encaixar os cantos, no caso sei que posso usar assim:
padding:0px; ou assim padding:5px 10px;

Mas realmente, os elementos do background ainda não tenho o costume de agrupas, e tenho vício em colocar unidade de medida para valores com 0. Vou ver se melhoro isso! hehehe

No caso eu tenho como tirar a borda do item quando ele fica com o a:active? Pois depois mais adiante, pretendo usar Ajax para carregamento dos menus, então não vai haver recarregamento da página para deixar o menu já selecionado!
E não funciona a:active no Fire Fox?

#56 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5690
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 27 agosto 2009 - 01:30

Vamos lá.. o teu ficou interessante.. o efeito é bem diferente do que eu sugeri.. até mais simples eu diria.
Existem diversas coisas desnecessárias.

Agrupar as propriedades é interessante:
        background-color:#fff;
        background-image:url('http://www.sistemaremoto.com.br/imagens/menu_dir.jpg');
        background-position:right;
        background-repeat:no-repeat;
viraria:
        background :url('http://www.sistemaremoto.com.br/imagens/menu_dir.jpg') #fff no-repeat right;
isso aqui:
#menu_nivel_01 a:hover{
        padding:0px 0px 0px 0px;
}
eu costumo deixar a cargo do seletor global:
* { margin: 0; padding: 0; }
mas você podia ter abreviado.. além de que se é ZERO, não é preciso declarar unidade de medida.
Ficou bom sim.

#57 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5690
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 27 agosto 2009 - 01:34

Quinto Menu:


Imagem

Os efeitos, vcs podem criar como acharem melhor, com CSS puro, tentem evitar Javascript(exceto deixar funcionando no IE6), a(s) imagem(s) vcs terão que pegar do meu print, organizem ela(s), e façam os recortes como acharem melhor..
só lembrando das regras que citei, e que a elegância da solução vai contar na avaliação.
Dica:
-> Tem 2 imagens mas se trata apenas de um único arquivo!
-> É "mais um" dropdown. O item "Dicas e Detonados" do menu, possui submenus. Atenção para a setinha embaixo dele.


Bom, é isso ai! SE VIREM! :graduated:
Boa sorte à todos. :joia:


Menus Entregues: 2 (até o momento)
  • klonder
  • William Bruno


Aguardando: 2
  • Imao
  • Thelon

PS: Podem ir postando, dizendo que estão fazendo.. encontrando dificuldades? ou que estão achando muito fáceis meus desafios... ^_^ (se for o caso, aumento a dificuldade ou abaixo). E podem é claro, entregar 'menus passados'.

#58 Membro offline   lmao Ícone

  • <? Brayan ?>
  • Ícone
  • Grupo: Membros
  • Posts: 73
  • Cadastrado: 28-junho 09
  • Sexo:Masculino
  • Localização:/home

Postou 31 agosto 2009 - 13:15

caara vou fazer os menus tbm ok ?

qdo sair do serviço vo tentar fazer em casa ^^

[]'s

#59 Membro online   Thiago Retondar Ícone

  • Moderador Webstandards http://twitter.com/thiagoretondar
  • Ícone
  • Grupo: Moderadores
  • Posts: 3713
  • Cadastrado: 04-março 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 31 agosto 2009 - 13:17

Imao, faz sim. ^_^

Depois manda os códigos para algum moderador por MP. :D

:thumbsup:

#60 Membro offline   Thelon Ícone

  • Desenvolvimento Web!
  • Ícone
  • Grupo: Moderadores
  • Posts: 1468
  • Cadastrado: 11-dezembro 06
  • Sexo:Masculino
  • Localização:Santo André - SP

Postou 31 agosto 2009 - 13:23

Vou tentar participar desse :)

#61 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5690
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 29 setembro 2009 - 08:51

Códigos Quinto Menu

klonder
<!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" xml:lang="pt-br" lang="pt-br">
<head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 <title>William Bruno - Primeiro Menu - Repente CSS [Menus]</title>
<style type="text/css">
* {margin:0; padding:0; list-style: none;}
html {overflow-x: auto;} /* fixes MSIE scrollbar bug DO NOT REMOVE, has no effect in Mozilla, or Opera */

 
body{margin:2px; padding: 0px; /* required for Opera to have 0 margin */
}

#divMenu {background:url('mn5.png'); width:470px; position:relative; margin:0 auto;}

ul.Menu {width:470px; height:28px; margin:0 auto; border:0;}
 
ul.Menu li {
position:relative; float:left; 
padding:3px 6px 6px 5px; border:0; margin:0;
}

ul.Menu li a {color:#FFF; font-family:helvetica,arial,tahoma; font-size:10px; text-decoration:none; text-align:left;
padding:4px 3px 4px 3px; 
display:block;
}
 
ul.Menu li a:hover {color:#FFF; background:#9C80A8}
 
ul.Menu li span {position:absolute; z-index:1; top:5px; right:0px; width:1px; height:16px;
background:#FFF;
}

ul.Menu li ul {display:none; width:350px; position:absolute; z-index:-1;
padding:0 0 3px 0; left:12px; background:#FFF; border:0; top:28px;}
 
/* ul.Menu li:hover ul {display:block;} */

ul.Menu li ul li {position:relative; margin:0; border:0; float:left; padding:5px 6px 0 5px;
}

ul.Menu li ul li a {color:#4D224D; font-weight:bold; font-size:10px; 
background:#FFF;
}
ul.Menu li ul li a:hover {color:#FE9900; text-decoration:underline;
background:#FFF;
}

ul.Menu li ul li .seta {position:absolute; z-index:2; top:0px; left:35px; width:14px; height:6px;
background:url("seta_roxa.png");
}
ul.Menu li ul li .borda {position:absolute; z-index:1; top:8px; right:0px; width:1px; height:14px;
background:#4D224D;
}
.spanBusca {position:absolute; width: 122px; right:20px; top:5px; padding:0; 
}
.seta_alaranjada {position:absolute; left:0px; top:4px;
}
.caixa {position:absolute; font-family:helvetica,arial,tahoma; font-size:10px;
padding:2px 0 2px 5px; margin:0; border:0; left:14px;
}

.botao {position:absolute; color:#FFF; font-size:10px; font-weight:bold; font-family:helvetica,tahoma,arial; cursor:pointer;
right:0px; width:25px;
margin:0; border:0; padding:1px 3px 2px 3px;
background:#FE9900; 
}
</style>
<script type="text/javascript">
function mostrar(vl){
var objUl = document.getElementById(vl);
objUl.style.display = "block";
}
function ocultar(vl){
var objUl = document.getElementById(vl);
objUl.style.display = "none";
}
</script>
</head> 
<body> 
<div id="divMenu">
<ul class="Menu"> 
<li><a href="#">HOME</a><span></span></li> 
<li><a href="#">GAME</a><span></span></li> 
<li onmouseover="mostrar('ul2')" onmouseout="ocultar('ul2')"><a href="#">DICAS E DETONADOS</a><span></span>
 <ul id="ul2"> 
<li><a href="#">ESTRATÉGIAS</a><span class="seta"></span><span class="borda"></span></li> 
 <li><a href="#">TELAS E MAPAS</a><span class="borda"></span></li> 
 <li><a href="#">ITENS SECRETOS</a><span class="borda"></span></li> 
 <li><a href="#">OUTRAS</a></li>
 </ul> 
</li> 
<li><a href="#">VOLTAR</a></li> 
</ul> 
<span class="spanBusca"><img src="seta_alaranjada.gif" alt="" class="seta_alaranjada"/>
<input type="text" value="BUSCA" size="12" onclick="this.value=''" class="caixa"/>
<input type="button" value="OK" onclick="javascript:alert('klonder - 2009')" class="botao"/>
</span>
</div>
</body> 
</html>


William Bruno
<!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" xml:lang="pt-br" lang="pt-br">
<head>
 <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
 <title>William Bruno - Quinto Menu - Repente CSS [Menus]</title>
<style type="text/css">
* {
 margin: 0;
 padding: 0;
 border: none;
 list-style: none;
}
body {
 margin: 20px;
 font-family: "Trebuchet MS", Tahoma;
 font-size: 11px;
}
#menu {
 background: url('bgMenuQuinto.jpg');
 height: 35px;
 padding: 0px 5px 0 0;
 width: 463px;
}
#menu li {
 float: left;
 height: 24px;
 padding: 5px 0 5px 5px;
 position: relative;
}
#menu li ul {
 display: none;
 position: absolute;
 top: 34px;
 left: 15px;
 width: 360px;
 background: #fff; /* estranho bug do IE6 */
}
#menu li.primeiro {
 background: url('esqMenu.jpg') no-repeat top left;
 padding-left: 10px;
}
#menu li ul li {
 border-right: 1px solid #4d224d;
 height: 15px;
 padding: 0 5px;
 line-height: 15px;
}
#menu li ul li a {
 color: #4d224d;
 font-weight: bold;
 font-size: 10px;
}
#menu li.sub ul li a:hover,
#menu li.sub ul li:hover,
#menu li.sub ul li.over {
 background: none;
}

#menu li ul li a:hover {
 color: #fe9900;
 text-decoration: underline;
}
#menu li a {
 color: #fff;
 text-decoration: none;
 text-transform: uppercase;
 padding: 2px;
 height: 12px;
}
#menu li span {
 padding-right: 5px;
 border-right: 1px solid #fff;
}
#menu li a:hover {
 background: #9c80a8;
}
#menu li.sub:hover, 
#menu li.over {
 background: url('bgHover.jpg') no-repeat bottom center;
}
#menu li.sub:hover ul,
#menu li.over ul {
 display: block;
}
#menu form {
 width: 130px;
 position: absolute;
 right: -209px;
 top: 0;
 background: url('arrow.png') no-repeat left 9px;
 padding-left: 10px;
}
#menu form label.campo input {
 color: #4d224d;
 padding: 0 1px 0 6px;
 font-size: 10px;
 height: 15px;
}
#menu form fieldset {
 padding-top: 2px;
 background: url('dirMenu.jpg') no-repeat right top;
 height: 30px;
}
#menu .semBorda {
 border: none;
}
#ok {
 position: relative;
 top: 4px
}
</style>
<script type="text/javascript">
window.onload = function() {
 if (document.all&&document.getElementById){
 navRoot = document.getElementById('menu');
 for (i=0; i<navRoot.childNodes.length; i++) {
 node = navRoot.childNodes[i];
 if (node.nodeName=='LI' && node.className=='sub'){
 node.onmouseover=function() {
 this.className+=' over';
 }
 node.onmouseout=function() {
 this.className=this.className.replace(' over', '');
 }
 }
 }
 }
}
</script>
</head> 
<body> 
 <ul id="menu"> 
 <li class="primeiro"><span><a href="#">Home</a></span></li> 
 <li><span><a href="#">Game</a></span></li> 
 <li class="sub"><span><a href="#">Dicas e Detonados</a></span>
 <ul> 
 <li><a href="#">Estratégias</a></li> 
 <li><a href="#">Telas e Mapas</a></li> 
 <li><a href="#">Itens Secretos</a></li>
 <li class="semBorda"><a href="">Outras</a></li> 
 </ul> 
 </li>
 <li><a href="#" class="semBorda">Voltar</a></li> 
 <li> 
 <form action="#" method="post"> 
 <fieldset> 
 <label class="campo"><input type="text" name="busca" value="BUSCA" size="12" /></label> 
 <label><input type="image" src="ok.jpg" name="ok" id="ok" value="OK" /></label> 
 </fieldset>
 </form> 
 </li> 
 </ul><!-- /menu --> 
</body> 
</html>


#62 Membro offline   Aline Branco Ícone

  • Nine
  • Ícone
  • Grupo: Membros
  • Posts: 46
  • Cadastrado: 09-novembro 06

Postou 30 setembro 2009 - 15:19

Que pena!!! Só vi agora esse desafio. :(
Fiquei com vontade de participar.
Será q ainda estão abertos???? :ermm:
Ou só é permitido a participação dos garotos??? rsrsrssss :P
Se ainda tiver tempo, eu entro no desafio.
Aline

#63 Membro online   Thiago Retondar Ícone

  • Moderador Webstandards http://twitter.com/thiagoretondar
  • Ícone
  • Grupo: Moderadores
  • Posts: 3713
  • Cadastrado: 04-março 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 30 setembro 2009 - 15:39

Aline, pode participar sim. ^_^

Desde o primeiro, se quiser. :D

:thumbsup:

#64 Membro offline   Aline Branco Ícone

  • Nine
  • Ícone
  • Grupo: Membros
  • Posts: 46
  • Cadastrado: 09-novembro 06

Postou 30 setembro 2009 - 16:06

Thiago Retondar,

Legal!

Eu só tinha visto até o quarto menu. Prestei tanta atenção nos menus q nem reparei q continuava na página 2. kkkkk
Já q pode participar desde o primeiro... Vou começar de onde vi, do quarto. Depois, penso nos outros.
To no trabalho, logo, posso demorar um pouquinho pra fazer e responder.
Mas já q pelo jeito sou a única mulher no desafio, os cavalheiros irão me aguardar, né?!!! kkkkkk
To nessa!

#65 Membro offline   Aline Branco Ícone

  • Nine
  • Ícone
  • Grupo: Membros
  • Posts: 46
  • Cadastrado: 09-novembro 06

Postou 01 outubro 2009 - 12:14

Vamos lá!
Meu menu. É o QUARTO MENU.

Testado em IE6, IE7, IE8, Firefox, Opera, Safari(windows) e Chrome.
Óbiviamente o único q precisa de "algo mais" é o IE6. Aff!!!! :angry: Para todos os demais, só usei HTML e CSS. :grin:

menu_ab.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Menu - versão da Aline para o desafio.</title>
<link rel="stylesheet" href="menu_style.css" type="text/css" />
<!--[if IE 6]><link rel="stylesheet" href="menu_ie6_style.css" type="text/css" /><![endif]-->

</head>

<body>

<ul id="menu_ab">
	<li> 
    	<a href="#"> Home </a> 
    </li>
    <li id="game">
    	<a href="#"> Game  </a>
        <ul>
            <li><a href="#">História</a></li>
            <li><a href="#">Persinagens</a></li>
            <li><a href="#">Screens</a></li>
       </ul>
    </li>
    <li id="dicas"> 
    	<a href="#"> Dicas e Detonados </a> 
    	<ul>
            <li><a href="#">Estratégias</a></li>
            <li><a href="#">Telas e Mapas</a></li>
            <li><a href="#">Itens Secretos</a></li>
            <li><a href="#">Inimigos(boss)</a></li>
            <li><a href="#">Outras</a></li>
       </ul>
    </li>
    <li> 
    	<a href="#"> Voltar </a> 
    </li>
</ul>

</body>
</html>


menu_style.css
* {
	border:none;
	border:0px;
	margin:0px;
	padding:0px;
	}

body { background-color:#c6c6c6;}

a { 
	color:#fff; 
	cursor:pointer; 	
	text-decoration:none;
	font:bold 14px Georgia, "Times New Roman", Times, serif;
	padding:13px 25px;
	text-align:center;
	display:block;
	}

a:hover {color:#6bff9d;}

ul#menu_ab {margin:20px;}

li {list-style:none; display:block;}

ul#menu_ab li{ 
	overflow:hidden;
	background:#3678b5 url(bg_menup.jpg) repeat-x;
	margin:0 5px;
	float:left;
	border:#fff solid 1px;
	height:43px;
	}

ul#menu_ab li:hover {
	overflow:visible;
	height:auto;
	background:#3678b5 url(bg_menug.jpg) top repeat-x;
		}
			
ul#menu_ab li:hover ul{ 
	display:block;
	height:auto;
	position:relative;
	z-index:200;
	background:#3678b5 url(bg_menug.jpg) bottom repeat-x;
	}
	
ul#menu_ab li ul li { 
	background:none;
	border:none;
	margin:0;
	float:none;
	
	}
ul#menu_ab li ul li:hover {background:none;}


menu_ie6_style.css
body { behavior: url(csshover.htc); } /* inclui efeito :hover, :active e :focus para Internet Explorer 6 */

#game {width:140px; }
#dicas {width:185px;}

#game a {width:140px; padding:13px 0 ; text-align:center;}
#dicas a {width:185px; padding:13px 0; text-align:center; }


csshover.htc
<attach event="ondocumentready" handler="parseStylesheets" />
<script>
/**
 *	Whatever:hover - V2.02.060206 - hover, active & focus
 *	------------------------------------------------------------
 *	(c) 2005 - Peter Nederlof
 *	Peterned - http://www.xs4all.nl/~peterned/
 *	License  - http://creativecommons.org/licenses/LGPL/2.1/
 *
 *	Whatever:hover is free software; you can redistribute it and/or
 *	modify it under the terms of the GNU Lesser General Public
 *	License as published by the Free Software Foundation; either
 *	version 2.1 of the License, or (at your option) any later version.
 *
 *	Whatever:hover is distributed in the hope that it will be useful,
 *	but WITHOUT ANY WARRANTY; without even the implied warranty of
 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 *	Lesser General Public License for more details.
 *
 *	Credits and thanks to:
 *	Arnoud Berendsen, Martin Reurings, Robert Hanson
 *
 *	howto: body { behavior:url("csshover.htc"); }
 *	------------------------------------------------------------
 */

var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,
currentSheet, doc = window.document, hoverEvents = [], activators = {
	onhover:{on:'onmouseover', off:'onmouseout'},
	onactive:{on:'onmousedown', off:'onmouseup'},
	onunknown:{on:'onfocus', off:'onblur'}
}

function parseStylesheets() {
	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
	window.attachEvent('onunload', unhookHoverEvents);
	var sheets = doc.styleSheets, l = sheets.length;
	for(var i=0; i<l; i++) 
		parseStylesheet(sheets[i]);
}
	function parseStylesheet(sheet) {
		if(sheet.imports) {
			try {
				var imports = sheet.imports, l = imports.length;
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
			} catch(securityException){}
		}

		try {
			var rules = (currentSheet = sheet).rules, l = rules.length;
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
		} catch(securityException){}
	}

	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!csshoverReg.test(select) || !style) return;
		
		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
		var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];
		var affected = select.replace(/:(hover|active|unknown).*$/, '');
		var elements = getElementsBySelect(affected);
		if(elements.length == 0) return;

		currentSheet.addRule(newSelect, style);
		for(var i=0; i<elements.length; i++)
			new HoverElement(elements[i], className, activators[pseudo]);
	}

function HoverElement(node, className, events) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}
	function hookHoverEvent(node, type, handler) {
		node.attachEvent(type, handler);
		hoverEvents[hoverEvents.length] = { 
			node:node, type:type, handler:handler 
		};
	}

	function unhookHoverEvents() {
		for(var e,i=0; i<hoverEvents.length; i++) {
			e = hoverEvents[i]; 
			e.node.detachEvent(e.type, e.handler);
		}
	}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}
	function getSelectedNodes(select, elements) {
		var result, node, nodes = [];
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
		if(identify) {
			var element = doc.getElementById(identify[1]);
			return element? [element]:nodes;
		}
		
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
		for(var i=0; i<elements.length; i++) {
			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
			for(var j=0; j<result.length; j++) {
				node = result[j];
				if(classReg && !classReg.test(node.className)) continue;
				nodes[nodes.length] = node;
			}
		}	
		
		return nodes;
	}
</script>


:P Hoje vai ser puxado aqui no trabalho. Quem sabe no fim de semana eu pego outro menu. rsrsss
Aline Branco

#66 Membro offline   William Bruno Ícone

  • Ícone
  • Grupo: Moderadores
  • Posts: 5690
  • Cadastrado: 08-janeiro 08
  • Sexo:Masculino
  • Localização:São Paulo - SP

Postou 01 outubro 2009 - 12:30

Bacana Aline!! Ficou muito bom ^_^

Legal que você não usou o comum: display: none|block, mas fez com a propriedade overflow :grin:


O que você achou ? Eu criei os desafios, em base de menus que já tive que fazer.
Por enqnto, acha q tá muito fácil ? médio ?

Assim, eu recalculo os níveis de efeitos que vou pedir para o próximo menu.

#67 Membro offline   Aline Branco Ícone

  • Nine
  • Ícone
  • Grupo: Membros
  • Posts: 46
  • Cadastrado: 09-novembro 06

Postou 01 outubro 2009 - 13:45

William Bruno,

Certamente, esse não é um menu nada fácil de se fazer. Diria que é difícil. Achei esse fácil, mas eu sou suspeita pra falar, pois html e css é minha praia. Eu gosto. rsrss Também, não sei javascript, então sou obrigada a usar só css mesmo. kkkkk
O chato só é o IE6. Ele, muitas vezes, impede q a gente use coisas mais modernas.
Eu não quis ver com calma o jeito que os outros fizeram antes de fazer o meu. Pra não me deixar influenciar. Depois q postei é q fui olhar. Acho que a galera está encarando bem o desafio, tá arrazando! Dá pra colocar um bem ultra mega dificílimo que a galera vai conseguir encarar sim. Vai tirar onda!!!! kkkkk
Mas também não vai colocar só difíceis, né?!!! Vai misturando.
Penso q fóruns são um excelente lugar pra se aprender. Já aprendi MUITO assim. Então é importante ter de uns fáceis tb. Para que todos possam participar.
Achei EXCELENTE esse desafio.
Vou falar a linguagem masculina: "Em time q tá ganhando, não se mexe!" kkkkkk Continua que tá ótimo. :joia:

Aline Branco

OBS: Tenho a tendência a evitar display none em menu por causa de acessibilidade (Leitores de tela para cegos). Nunca consegui testar isso direito. Quero aprender mais sobre isso. rsrsss

#68 Membro offline   Ehtnies Ícone

  • xhtml+css+wordpress
  • Ícone
  • Grupo: Membros
  • Posts: 187
  • Cadastrado: 01-fevereiro 08
  • Sexo:Masculino
  • Localização:Itajaí - SC - BR

Postou 17 novembro 2009 - 18:49

Só pra pega no teu pé Bruno

#ok {
position: relative;
top: 4px
}

cade o ponto e vírgula? :D ASHUHAUSSHUSHU 4px;

  • (2 Páginas)
  • +
  • 1
  • 2
  • Novo tópico
  • Responder

1 usuário(s) está(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)