Fork me on GitHub

Artigos

Criando um menu off canvas

Escrito em September 5, 2016

Hoje é um dia especial, pois este é o primeiro de muitos exemplos "shows" que faremos utilizando apenas CSS3.

Criando um menu off canvas
Exemplo

Este é o nosso primeiro post técnico do CSS Brasil, e para começar, nada melhor que compartilhar a técnica utilizada para criar um menu off-canvas, utilizando apenas CSS <3

Funcionamento

O funcionamento do menu é bem simples e consiste apenas em 3 camadas (apesar de ter utilizado apenas 2 no exemplo a cima :p)


  • wrapper
  • navigation
  • canvas


O wrapper será nossa view, que terá a largura do tamanho da nossa tela, a navegação será o nosso menu que fica escondido no eixo X da tela e o canvas será o conteúdo da nossa página.


Iremos controlar o estado de aberto e fechado do nosso menu pelo css, utilizando o seletor :checked e selecionando o irmão por meio do seletor de herança ~ (til), logo depois colocaremos um input type="checkbox" id="menu" no html para fazer toda mágica acontecer :)


Agora a brincadeira vai começar a ficar boa, chega de teoria e mãos a obra que é hora de códificar.

Menu Off Canvas com CSS

Estrutura

A estrutura é muiito simples, seguindo os conceitos explicados a cima, temos o seguinte código HTML:

Note que temos dois label for="" no nosso trecho HTML. Eles servem para marcar ou desmarcar o checkbox que controla o estado de aberto / fechado do menu off canvas.

Esconderemos o checkbox colocando um display: none em seguida adicionamos a propriedade transform: translate3d(-100%,0,0), no menu para ele fique escondido no canto esquerdo da tela, ex:

Agora precisamos verificar o estado de :checked do menu, pois se ele estiver checado deslocaremos o nosso wrapper 300px para a direita, fazendo com que o menu off-canvas apareça:

Colocaremos todos os links com um opacity: 0 e transform: translate3d(0, 40px, 0) para que eles apareçam de baixo para cima.

Como o número de links que temos não são dinâmicos, colocaremos um transition-delay em cada um deles para que apareçam de um por um, deixando nossa animação mais sexy ;)

Para finalizar capturamos o estado de :checked do menu e mostramos nossos links setando a propriedade opacity: 1 e zeramos seu translate3d para que os links apareçam já se movimentando.

Caso você use algum pré-processador, aconselho usar for para interagir com os indices dos links do menu.

Dica: Sempre que você precise criar uma grande animação com css, deixe para aplicar as transições e animações no final do desenvolvimento, pois facilita bastante no controle dos elementos da tela.

E assim chegamos a conclusão do nosso menu off-canvas e do nosso primeiro post técnico do CSS Brasil, até a próxima :D \o/

{ Comentários }