Neste tutorial veremos como criar aquele botão que quando clicado expande todo o menu, vi este recurso e fiquei impressionado com o poder do css3. Veja abaixo como ficará o efeito
Para este tutorial de menu precisaremos apenas de usar as animações do css3 e nada mais, sem JavaScript, sem imagens, tudo com objetos HTML e css, veja como é simples
Primeiro vamos criar nosso HTML básico para inclusão do menu:
<input type="checkbox" id="navicon">
<div class="nav-toggle">
<label for="navicon" class="hamburger">
<span></span>
<span></span>
<span></span>
</label>
</div>
<nav class="sidebar" role="complementary"></nav>
Agora este é o css
/* para padronizar todos os navegadores */
*{
margin:0;
padding: 0;
box-sizing: border-box;
list-style-position: inside;
}
.nav-toggle {
display: block;
padding: 10px 10px 15px 10px;
background: #fff;
position: fixed;
top: 0px;
left: 0px;
z-index: 50;
}
.hamburger {
width: 1.08em;
position: relative;
display: inline-block;
height: 0.6em;
font-size: 1.2em;
background: #fff;
}
.hamburger span {
width: 100%;
background: #000;
display: block;
position: absolute;
left: 0px;
height: 0.185em;
border-radius: 1.2px;
transition: 0.5s all;
-webkit-transition: 0.5s all;
-ms-transition: 0.5s all;
-moz-transition: 0.5s all;
-o-transition: 0.5s all;
}
.hamburger span:nth-child(1) {
top: 0px;
}
.hamburger span:nth-child(2) {
top: 0.36em;
}
.hamburger span:nth-child(3) {
top: 0.73em;
}
.sidebar {
width: 20%;
height: 100%;
position: fixed;
background: #000;
top: 0px;
left: 0px;
z-index: 5;
visibility: hidden;
opacity: 0;
transition: 0.2s all;
-webkit-transition: 0.2s all;
-ms-transition: 0.2s all;
-moz-transition: 0.2s all;
-o-transition: 0.2s all;
}
#navicon {
display: none;
}
#navicon:checked ~ .sidebar {
visibility: visible;
opacity: 1;
}
#navicon:checked ~ .nav-toggle > .hamburger span {
top: 0.36em;
}
#navicon:checked ~ .nav-toggle > .hamburger span:nth-child(1) {
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
#navicon:checked ~ .nav-toggle > .hamburger span:nth-child(2) {
transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
}
#navicon:checked ~ .nav-toggle > .hamburger span:nth-child(3) {
transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
}
O que fazemos aqui é um truque com um checkbox e tratamos ele de forma que fique invisível, no lugar dele sobrepomos um objeto div com 3 spans dentro que tratamos com css para que vire o botão do nosso menu
Depois disso apenas aproveitando a propriedade checked do checkbox fazemos toda a mágica acontecer utilizando de CSS
Este tutorial é bem simples, a complicação é entender as animações do css3, mas achei a dica muito interessante.
Respostas de 7
E Onde vai os links?
como assim? o menu vai se renderizar sem ter que mexer nisso
Pois é colega, onde vai os links?
dentro da tag
Excelente estou querendo otimizar meus projetos futuros e algo que eu acho muito importante é que a primeira impressão é a que fica Above the fold time, com isso eu quero otimizar a entrada do usuário no meu site sem carregamento de javascripts para renderizar a página e esse menu com css é ideal, ótimo artigo bem fácil o entendimento.
Abraços.
Qual tag que eu coloco os links pra quando abrir o menu, pra ficar nessa parte preta quando clica?
nav, ex.: