E ai pessoal, hoje quero falar sobre como criar menu e submenu com CSS3 isso é muito útil e simples para o desenvolvedor e não precisa mais usar o Jquery para ter um efeito de FadeIn e FadeOut por exemplo.

Vamos começar a criar um Menu junto com um Submenu bem básico com UL e LI:

[sourcecode language=”xhtml”]
<ul>
<li><a href="#" title="Home">Home</a></li>
<li><a href="#" title="Empresa">Empresa</a></li>
<li>
<a href="#" title="Produtos">Produtos</a>
<ul>
<li><a href="#" title="Sub Produto 1">Sub Produto 1</a></li>
<li><a href="#" title="Sub Produto 2">Sub Produto 2</a></li>
<li><a href="#" title="Sub Produto 3">Sub Produto 3</a></li>
</ul>
</li>
<li><a href="#" title="Contato">Contato</a></li>
</ul>
[/sourcecode]

Veja como ficou essa primeira parte.

Agora vamos adicionar o estilo no HTML, para fazer isso eu vou fazer via,

[sourcecode language=”css”]
<style type="text/css"></style>
[/sourcecode]

para que fique mais simples para visualizar, mas vocês podem e devem colocar esse style dentro do seu arquivo de CSS, mas antes de iniciar o Style eu  vou dar um CSS Reset e usar uma fonte do Google Fonts para que fique mais apresentável.

Para adiciocar o CSS Reset é preciso colocar esse código dentro do seu <head> “eu gosto de usar a API do Yahoo mas se vocês preferirem por fazer manualmente”:

[sourcecode language=”css”]
<link rel="stylesheet" type="text/css" href="http://yui.yahooapis.com/2.9.0/build/reset-fonts-grids/reset-fonts-grids.css">
[/sourcecode]

E por fim vou colocar uma font do Google Fonts, eu escolhi a font “Dosis”, mas existe varias que vocês podem usar ou se preferirem pode ser uma fonte personalizada se desejar.

[sourcecode language=”css”]
<link href=’http://fonts.googleapis.com/css?family=Dosis’ rel=’stylesheet’ type=’text/css’>
[/sourcecode]

Vou começar a colocar o css, para que o nosso menu tenha já alguma aparência mais agradável:

[sourcecode language=”css” highlight=”30″]
<style type="text/css">
a{
text-decoration: none;
}
body > ul{
font-family: ‘Dosis’, sans-serif;
font-size: 18px;
}

body > ul > li{
float: left;
position: relative;
margin-left: 5px;
}

body > ul > li:first-child{
margin-left: 0;
}

body > ul > li > a{
color: #ffffff;
padding: 5px 10px;
background: #999999;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}

body > ul > li > ul{
visibility: hidden;
position: absolute;
left: 0;
top: 23px;
padding: 4px 7px;
}

body > ul > li:hover > ul{
visibility: visible;
text-align: left;
}

body > ul > li > ul > li{
display: block;
font-size: 12px;
margin-bottom: 5px;
}
</style>
[/sourcecode]

Se vocês repararem na linha 30 eu coloquei a propriedade visibility: hidden; sem ela não irá funcionar o efeito de Fade que nós queremos adicionar em nosso submenu. Porque se vocês colocarem o display: none; irá funcionar mas no final não irá ficar com o efeito esperado.

Veja como esta ficando o nosso menu com o css, segunda etapa.

Nessa penultima etapa eu vou colocar o estilo no submenu, eu preferi separar as explicações do css do menu e do submenu , para que fique mais simples de entender como funciona.

[sourcecode language=”css” highlight=”8,9,10,11″]
body > ul > li > ul{
padding: 4px 7px;
}

body > ul > li:hover > ul{
visibility: visible;
text-align: left;
background: #999999;
-webkit-border-radius: 0 0 5px 5px;
-moz-border-radius: 0 0 5px 5px;
border-radius: 0 0 5px 5px;
}

body > ul > li > ul > li > a{
color: #fff;
}
[/sourcecode]

Veja que eu adicionei padding no estilo na UL, porque se adicionar dentro do li:hover na hora da “animação” haverá um pequeno erro de apresentação,  nas linhas 8,9,10 e 11 eu adicionei um background com a mesma cor do menubordas arredondadas na parte inferior do submenu para que fiquei com um aspequito de continuidade e por fim adicionei a cor branca na tag <a>.

Veja como ficou o nosso submeu terceira etapa.

Agora começa a brincadeira, vamos trabalhar com “transition e opacity” só tem uma restrição o transition não funciona corretamente com o Internet Explore, mas o opacity funciona normalmente, veja abaixo como que eu fiz essa parte final do nosso Menu e Submenu com CSS3.

[sourcecode language=”css”]
body > ul > li > ul{
-webkit-transition: all 0.7s ease;
-moz-transition: all 0.7s ease;
-o-transition: all 0.7s ease;
-moz-opacity: 0.00;
opacity: 0.00;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha"(Opacity=0);
}

body > ul > li:hover > ul{
-moz-opacity: 1;
opacity: 1;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=100);
}
[/sourcecode]

Primeiro eu adicionei os atributos na UL do submenu como o transition “para conhecer mais sobre os atributos dele acesse esse link.”  e falei para ele iniciar com o opacity em 0%.

E para finalizar dentro do li:hover eu coloque o opacity em 100% assim quando :HOVER ele criará o efeito de FadeIn e quando deselecionar ele aplicará o FadeOut.

Veja como ele ficou com esse processo final.

Bom é isso por enquanto, até mais breve e por favor se gostou compartilha o post e se tiver dúvida ou sugestão, por favor deixe um comentário. Até Mais…

Link para o download do menu completo.

César Ribeiro
Written by

Hi, my name’s Cesar H. Ribeiro, I’m Brazilian and I live in São Paulo country town. I’ve been working with Web Development since 2006, I’m Web Developer Freelancer, my main specialty is deploying custom Web Sites using the WordPress platform with base, transforming PSD/Layouts for Custom Themes. In feel years with Developer Freelancer, I worked with many agencies around the world like: Brazil, Australia, USA, Germany and Austria.

Related Posts