Motivação
Com o número cada vez maior de usuários que utilizam dispositivos móveis para navegar na internet, o recurso de responsividade é fundamental para garantir a boa experiência do usuário, que deve ser capaz de acessar adequadamente o conteúdo da página, independentemente das dimensões do seu dispositivo.
O framework Materialize, semelhante ao Bootstrap, traz diversos recursos para otimizar essa característica nas páginas. Nesse artigo, vamos nos concentrar em como criar um menu responsivo utilizando o componente navbar, por meio do qual poderemos exibir para o usuário um menu lateral quando a página for acessada em telas pequenas.
Estrutura básica da página
O primeiro passo para que possamos utilizar o Materialize é importar os arquivos de CSS e JavaScript necessários, adicionando-os na página HTML. Na Listagem 1, temos um exemplo de como deve ser a estrutura inicial de uma página para suportar os recursos do Materialize.
01 <!DOCTYPE html>
02 <html>
03 <head>
04 <link href="http://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
05 <link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/css/materialize.min.css"/>
06 <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
07 </head>
08 <body>
09 <script src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
10 <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.98.0/js/materialize.min.js"></script>
11 </body>
12 </html>
Linha 4: Importamos o arquivo de fontes “Material Icons” do Google, que contém os ícones do Materialize. O ícone do menu responsivo, por exemplo, só será exibido se esse arquivo for importado;
Linha 5: Importamos o arquivo CSS do Materialize que contém as classes para estilizar a página;
Linha 6: Com a tag meta viewport, indicamos ao browser que essa página deve ser otimizada para visualização em dispositivos móveis. Com ela, definimos que a largura da viewport deve ser igual à largura do device, e que a página deve ser escalonada para ocupar toda a tela;
Linha 9: Importamos a biblioteca jQuery, que é uma dependência dos recursos JavaScript do Materialize. Portanto, é fundamental que essa linha apareça antes da importação do arquivo .js do framework (linha 10);
Linha 10: Importamos o arquivo JavaScript do Materialize, importante para garantir o funcionamento de alguns recursos, como o menu responsivo que veremos mais adiante.
Navbar básico
O navbar é um componente de menu que fica localizado no topo da página e normalmente contém alguns links, além de um logotipo. Para usar esse componente no Materialize, basta construir a estrutura de elementos apresentada na Listagem 2.
01 <nav>
02 <div class="nav-wrapper">
03 <a href="#" class="brand-logo">Logo</a>
04 <ul class="right hide-on-med-and-down">
05 <li><a href="#">Angular</a></li>
06 <li><a href="#">Ionic</a></li>
07 <li><a href="#">TypeScript</a></li>
08 <li><a href="#">Cordova</a></li>
09 </ul>
10 </div>
11 </nav>
Listagem 2. Estrutura do navbar básico
Linhas 1 e 11: Usamos a tag nav da HTML5 para delimitar o menu e indicar para o browser que o navbar representa um elemento de navegação para o usuário;
Linhas 2 e 10: A div com classe nav-wrapper é a responsável por conter os elementos internos da navbar. Nela estão definidas as dimensões e cor do plano de fundo da navbar;
Linha 3: Link que funcionará como “logo” no navbar, apresentado no canto esquerdo;
Linhas 4 a 9: Lista de links que serão posicionados no lado direito (classe right) da navbar. A classe hide-on-med-and-down fará com que esses links sejam ocultados em tablets e dispositivos menores.
Inserindo o conteúdo dessa listagem no documento, dentro da tag body e antes da importação dos scripts (após a linha 8 da Listagem 1), podemos salvar o código com extensão .html e abrir no browser, no qual devemos obter um resultado semelhante ao da Figura 1.
Figura 1. Navbar básico em tela grande
Ao redimensionar o browser, reduzindo sua largura, veremos que os links do lado direito do navbar serão ocultados, e que por isso ficarão inacessíveis, pois, por padrão, não é exibido nenhum botão para que o usuário consiga visualizar os links ocultos. Para que esse menu fique acessível em diferentes resoluções, precisamos adaptar o navbar de acordo com as orientações do framework, como veremos a seguir.
Navbar responsivo
Para que o navbar exiba os links mesmo em telas de dimensões reduzidas, é necessário modificar um pouco sua estrutura, como mostra a Listagem 3, adicionando mais alguns elementos.
01 <nav>
02 <div class="nav-wrapper">
03 <a href="#" class="brand-logo">Logo</a>
04 <a href="#" data-activates="menu-mobile" class="button-collapse">
05 <i class="material-icons">menu</i>
06 </a>
07 <ul class="right hide-on-med-and-down">
08 <li><a href="#">Angular</a></li>
09 <li><a href="#">Ionic</a></li>
10 <li><a href="#">TypeScript</a></li>
11 <li><a href="#">Cordova</a></li>
12 </ul>
13 <ul class="side-nav" id="menu-mobile">
14 <li><a href="#">Angular</a></li>
15 <li><a href="#">Ionic</a></li>
16 <li><a href="#">TypeScript</a></li>
17 <li><a href="#">Cordova</a></li>
18 </ul>
19 </div>
20 </nav>
Linhas 4 a 6: Esse link, que contém um ícone de menu hambúrguer, será exibido quando a página for visualizada em uma tela pequena. O atributo data-activates aponta para o id da tag ul definida logo abaixo e que representa o menu lateral;
Linhas 13 a 18: Adicionamos novamente a lista de links, mas agora com a classe side-nav, que representa o menu lateral a ser exibido no modo mobile.
Para finalizar, basta ativar o botão hambúrguer que declaramos na navbar. Para isso, precisamos adicionar o script apresentado na Listagem 4 após a importação do script do Materialize.
01 <script>
02 $(function(){
03 $(".button-collapse").sideNav();
04 });
05 </script>
Listagem 4. Código JavaScript para ativar o menu lateral responsivo
Linha 3: A função sideNav() fará com que o botão com a classe button-collapse atue de forma a expandir o menu lateral.
Feito isso, podemos visualizar o documento no browser novamente e redimensionar a janela. Dessa vez, devemos ter como resultado a aparência que vemos na Figura 2.
Figura 2. Navbar responsivo em telas pequenas
Ao clicar no botão hambúrguer, o menu lateral será revelado, como apresenta a Figura 3, e para ocultá-lo, basta clicar fora da sua área, em qualquer outro ponto da página.
Figura 3. Menu lateral responsivo do navbar
O framework Materialize dispõe, ainda, de outras funcionalidades para garantir a responsividade de outros elementos da página, como o sistema de grid que, assim como no Bootstrap, divide o layout em linhas e colunas adaptáveis às dimensões da tela.
Confira outros conteúdos:
CSS Border
HTML Icons: utilizando ícones em...
HTML hr: como utilizar a tag hr para...
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.