Cómo crear: Barra de navegación superior responsive con menú desplegable

Aprende a crear una barra de navegación superior responsive con menú desplegable.

Barra de navegación superior responsive con menú desplegable

Prueba por ti mismo

Crear una barra de navegación superior responsive con menú desplegable

Paso 1 - Añadir 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 paso - Añadir CSS:

/* Agregar un fondo de color negro a la navegación superior */
.topnav {
  background-color: #333;
  overflow: hidden;
}
/* Establecer el estilo de los enlaces en la barra de navegación */
.topnav a {
  float: left;
  display: block;
  color: #f2f2f2;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
}
/* Agregar una clase de actividad para resaltar la página actual */
.active {
  background-color: #04AA6D;
  color: blanco;
}
/* Ocultar en pantallas pequeñas los enlaces para abrir y cerrar la barra de navegación superior */
.topnav .icon {
  display: none;
}
/* Contenedor del menú desplegable - utilizado para posicionar el contenido del menú desplegable */
.dropdown {
  float: left;
  overflow: hidden;
}
/* Establecer el estilo del botón del menú desplegable para que se ajuste a la barra de navegación superior */
.dropdown .dropbtn {
  font-size: 17px;
  border: none;
  outline: none;
  color: blanco;
  padding: 14px 16px;
  background-color: inherit;
  font-family: inherit;
  margin: 0;
}
/* Establecer el estilo del contenido del menú desplegable (por defecto oculto) */
.dropdown-content {
  display: none;
  position: absolute;
  background-color: #f9f9f9;
  min-width: 160px;
  box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
  z-index: 1;
}
/* Establecer el estilo de los enlaces dentro del menú desplegable */
.dropdown-content a {
  float: none;
  color: negro;
  padding: 12px 16px;
  text-decoration: none;
  display: block;
  text-align: left;
}
/* Al pasar el ratón, agregar un fondo oscuro a los enlaces de la barra de navegación superior y al botón del menú desplegable */
.topnav a:hover, .dropdown:hover .dropbtn {
  background-color: #555;
  color: blanco;
}
/* Al pasar el ratón, agregar un fondo gris a los enlaces del menú desplegable */
.dropdown-content a:hover {
  background-color: #ddd;
  color: negro;
}
/* Al pasar el ratón sobre el botón del menú desplegable, mostrar el menú desplegable */
.dropdown:hover .dropdown-content {
  display: block;
}
/* Al tener una anchura de pantalla menor de 600 píxeles, ocultar todos los enlaces excepto el primero ("Inicio") y mostrar el enlace para abrir y cerrar la barra de navegación superior (icono) */
@media screen and (max-width: 600px) {
  .topnav a:not(:first-child), .dropdown .dropbtn {
    display: none;
  }
  .topnav a.icon {
    float: right;
    display: block;
  }
}
/* Al hacer clic en el icono, JavaScript agregará la clase "responsive" a la barra de navegación superior. Esta clase hace que la barra de navegación superior se vea mejor en pantallas pequeñas (muestra enlaces verticales en lugar de horizontales) */
@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;
  }
}

Paso 3 - Añadir JavaScript:

/* Al hacer clic en el icono, alternar entre agregar y eliminar la clase "responsive" en la barra de navegación superior */
function myFunction() {
  var x = document.getElementById("myTopnav");
  if (x.className === "topnav") {
    x.className += " responsive";
  } else {
    x.className = "topnav";
  }
}

Prueba por ti mismo

Páginas relacionadas

Tutoriales:menú desplegable de CSS

Tutoriales:Cómo crear un menú desplegable clicable

Tutoriales:barra de navegación de CSS

Tutoriales:¿Cómo crear una barra de navegación lateral?