sexta-feira, 9 de abril de 2010

Menu Drop Down - CSS

Estava sentindo falta de postar aqui, rsrsrs.

Resolvi fazer um post sobre CSS que está em falha nesse blog

Qualquer um que tenha projetado um menu drop-down estará familiarizado com a grande quantidade de scripts necessários para fazer funcionar estes tipos de menus. Mas, usando-se uma marcação HTML estruturada e regras CSS simples é possível criar menus drop-down de raro apelo visual, fáceis de editar e atualizar e que funcionem perfeitamente em váriados tipos de browsers, inclusive no Internet Explorer. Melhor ainda, para designers zelosos de seus códigos, nenhum JavaScript é necessário! (Na verdade, um 'pouquinho' de JavaScript é necessário, mas nada tão complicado, como você deve estar imaginando.)

Confiram ele funcionando aqui

Criaremos aqui uma lista ordenada em HTML, vocês vão entender o porque, nós temos listas ordenadas dentro de listas ordenadas na estrutura de um marcador, isso facilita o processo inclusive da adição de links até mesmo via uma linguagem dinamica como PHP por exemplo.

<ul> 
    <li><a href="#">Home</a></li> 
    <li><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><a href="#">Services</a> 
      <ul> 
        <li><a href="#">Web Design</a></li> 
        <li><a href="#">Internet 
            Marketing</a></li> 
        <li><a href="#">Hosting</a></li> 
        <li><a href="#">Domain Names</a></li> 
        <li><a href="#">Broadband</a></li> 
      </ul> 
    </li>

    <li><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>


Ok galera ai esta nosso menu, porém se você abrir esse HTML criado verá apenas uma lista de marcadores como num índice, mas para transforma-lo e dar uma carinha melhor iremos agora para o CSS


ul {
 margin: 0;
 padding: 0;
 list-style: none;
 width: 150px;
 }
 
Como iremos posicionar submenus em absoluto ao menu principal, teremos que defini-lo como relativo
 
ul li {
 position: relative;
 } 

Definimos o posicionamento dos submenus

li ul {
 position: absolute;
 left: 149px;
 top: 0;
 display: none;
 }
 

Agora começa a estrutura visual, colocarei num passo só, qualquer dúvida comentem que eu respondo

ul li a {
 display: block;
 text-decoration: none;
 color: #777;
 background: #fff;
 padding: 5px;
 border: 1px solid #ccc;
 border-bottom: 0;
 }
 
/* Fix IE. Hide from IE Mac \*/
* html ul li { float: left; }
* html ul li a { height: 1%; }
/* End */ 

ul {
 margin: 0;
 padding: 0;
 list-style: none;
 width: 150px;
 border-bottom: 1px solid #ccc;
 }

Aquela parte um pouco complicada trata-se de um hack para compatibilidade total com o Internet Explorer, infelizmente nós Web Designers sempre acabamos batendo em algum problema nele.

Agora o Pulo, onde irão aparecer os submenus
li:hover ul { display: block; }
 
Vejam aqui funcionando 

UAU galera funciona mesmo hein. rsrs

Funcionaria se o maldito internet explorer não resolve-se atrapalhar.
 
Beleza, teremos que colocar um pouco de JavaScript para resolver o problema
  
startList = function() {
if (document.all&&document.getElementById) {
navRoot = document.getElementById("nav");
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
node.onmouseover=function() {
this.className+=" over";
  }
  node.onmouseout=function() {
  this.className=this.className.replace
 (" over", "");
   }
   }
  }
 }
}
window.onload=startList; 

A regra para o Over agora é
 
li:hover ul, li.over ul { 
 display: block; }

e referenciamos o JavaScript no UL da seguinte forma
 
<ul id="nav">  
 
Lindo, Lindo e Lindo.
 
RSRSRS
 
Pronto, agradeço a atenção de todos e amanhã tem mais.
 
 

Nenhum comentário: