Todo mundo sabe que o JS revolucionou muito a forma de interagir com o site mas pouco gente saber que o CSS evoluiu muito também e sem ele não conseguiríamos ter os visual que a web tem hoje.
Um desafio legal para testar as suas capacidades é sempre sair da zona de conforto e enfrentar situações diferente para resolver diversos problemas. O meu ultimo desafio foi criar um menu simples e responsivo mas sem o fazer uso de nenhum JS.
Na verdade foi uma tarefa até que simples. Vou mostrar o resultar e explicar como eu cheguei nele.
Para visualizar o resultado é só clicar aqui
Como vocês podem ver não tem nenhuma magica no código. A parte mais importante está no checkbox que controla o estado do menu (aberto ou fechado). Além disso é importante prestar atenção na hierarquia do HTML. O checkbox e o container do menu precisam está no mesmo nível.
<menu> <label for="menu-toggle"> <div></div> <div></div> <div></div> </label> <input type="checkbox" name="action-menu" id="menu-toggle" /> <nav> <ul> <li><a href="/home">Home</a></li> <li><a href="/home">Contato</a></li> <li><a href="/home">Fale Conosco</a></li> <li><a href="/home">Nossas Lojas</a></li> <li><a href="/home">Sobre a empresa</a></li> </ul> </nav> </menu>
No HTML eu encapsulei tudo em uma tag “menu” e dentro dela está uma label ligada ao input, ou seja, quando clicar na label o checkbox ativa. No mesmo nível está uma tag nav que encapsula uma lista de links. A tag nav está com position absolute e left -100%. Quando o check box se ativa ela vai para left 0.
É importante que nav fique no mesmo nível que o input para que seja possível fazer uma ligação de irmandade no css.
Usando o acento til ” ~ ” nos podemos meio que fazer um IF no css. O código basicamente diz o seguinte “menu-toggle ativo ache o irmão nav e aplique left 0 “. Assim é possível selecionar um elemento HTML que esteja no mesmo nível que o input.
/* Active state */ #menu-toggle:checked ~ nav { left: 0; } /* Initial state */ nav { position: absolute; max-width: 300px; height: 100%; border-top: 1px solid #000; border-right: 1px solid #000; top: 50px; left: -100%; transition: 0.3s all linear; }
No código você consegue ver o estado inicial de nav e o estado ativo.
Espero que você tenha gostado, em breve farei mais variações desse menu. Até lá !