Como criar: Barra de navegação responsiva com menu suspenso

Aprenda a criar uma barra de navegação responsiva com menu suspenso.

Barra de navegação superior responsiva com menu suspenso

Experimente você mesmo

Crie uma navegação superior responsiva com menu suspenso

Primeiro passo - Adicionar HTML:

<div class="topnav" id="myTopnav">
  <a href="#home" class="active">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
  <div class="dropdown">
    <button class="dropbtn">Dropdown
      <i class="fa fa-caret-down"></i>
    </button>
    <div class="dropdown-content">
      <a href="#">Link 1</a>
      <a href="#">Link 2</a>
      <a href="#">Link 3</a>
    </div>
  </div>
  <a href="#about">About</a>
  <a href="javascript:void(0);" class="icon" onclick="myFunction()">☰</a>
</div>

Segundo passo - Adicionar CSS:

/* Adicionar cor de fundo preta para a navegação superior */
.topnav {
  cor-de-fundo: #333;
  sobra: none;
}
/* Definir o estilo dos links na barra de navegação */
.topnav a {
  flutuar: esquerda;
  display: block;
  cor: #f2f2f2;
  alinhamento-texto: centro;
  preenchimento: 14px 16px;
  decoraçao-texto: none;
  tamanho-fonte: 17px;
}
/* Adicionar uma classe ativa para destacar a página atual */
.active {
  cor-de-fundo: #04AA6D;
  cor: branco;
}
/* Ocultar, em telas pequenas, os links para abrir e fechar a barra de navegação superior */
.topnav .icon {
  display: none;
}
/* Container do menu suspenso - usado para posicionar o conteúdo do menu suspenso */
.dropdown {
  flutuar: esquerda;
  sobra: none;
}
/* Definir o estilo do botão do menu suspenso para que ele se ajuste à barra de navegação superior */
.dropdown .dropbtn {
  tamanho-fonte: 17px;
  borda: none;
  contorno: none;
  cor: branco;
  preenchimento: 14px 16px;
  cor-de-fundo: herdar;
  família-fonte: herdar;
  margem: 0;
}
/* Definir o estilo do conteúdo do menu suspenso (por padrão, oculto) */
.dropdown-content {
  display: none;
  position: absolute;
  cor-de-fundo: #f9f9f9;
  largura-minima: 160px;
  sombra: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}
/* Definir o estilo dos links dentro do menu suspenso */
.dropdown-content a {
  float: none;
  cor: preto;
  preenchimento: 12px 16px;
  decoraçao-texto: none;
  display: block;
  text-align: left;
}
/* Ao passar o mouse, adicionar fundo escuro aos links da barra de navegação superior e aos botões do menu suspenso */
.topnav a:hover, .dropdown:hover .dropbtn {
  cor-de-fundo: #555;
  cor: branco;
}
/* Ao passar o mouse, adicionar fundo cinza aos links do menu suspenso */
.dropdown-content a:hover {
  cor-de-fundo: #ddd;
  cor: preto;
}
/* Quando o usuário passar o mouse sobre o botão do menu suspenso, mostrar o menu suspenso */
.dropdown:hover .dropdown-content {
  display: block;
}
/* Quando a largura da tela for menor que 600 pixels, ocultar todos os links exceto o primeiro ("Home") e mostrar o link para abrir e fechar a barra de navegação superior (.icon) */
@media screen and (max-width: 600px) {
  .topnav a:not(:first-child), .dropdown .dropbtn {
    display: none;
  }
  .topnav a.icon {
    float: right;
    display: block;
  }
}
/* Quando o usuário clicar no ícone, o JavaScript adicionará a classe "responsive" à barra de navegação superior. Esta classe faz com que a barra de navegação superior fique melhor no pequeno painel de exibição (exibe links verticalmente em vez de horizontalmente) */
@media screen and (max-width: 600px) {
  .topnav.responsive {position: relative;}
  .topnav.responsive a.icon {
    position: absolute;
    right: 0;
    top: 0;
  }
  .topnav.responsive a {
    float: none;
    display: block;
    text-align: left;
  }
  .topnav.responsive .dropdown {float: none;}
  .topnav.responsive .dropdown-content {position: relative;}
  .topnav.responsive .dropdown .dropbtn {
    display: block;
    width: 100%;
    text-align: left;
  }
}

Terceiro passo - Adicionar JavaScript:

/* Alterne entre adicionar e remover a classe "responsive" na barra de navegação superior ao clicar no ícone */
function myFunction() {
  var x = document.getElementById("myTopnav");
  if (x.className === "topnav") {
    x.className += " responsive";
  } else {
    x.className = "topnav";
  }
}

Experimente você mesmo

Páginas relacionadas

Tutorial:Menu suspenso CSS

Tutorial:Como criar um menu suspenso clicável

Tutorial:Barra de navegação CSS

Tutorial:Como criar uma barra de navegação lateral