La Etiqueta NAV

Define una sección de enlaces de navegación en un documento HTML.

La etiqueta <nav> (abreviatura de navigation) define una sección de enlaces de navegación en un documento HTML. Es un elemento semántico que ayuda a los motores de búsqueda, lectores de pantalla y desarrolladores a identificar los bloques principales de navegación de un sitio web.

Casos comunes de uso:

  • Menús principales (header).

  • Menús laterales (sidebar).

  • Tablas de contenido.

  • Enlaces de paginación.

  • Breadcrumbs (migas de pan).

Sintaxis básica

<nav>
  <!-- Lista de enlaces -->
</nav>

Ejemplos prácticos

Menú principal horizontal

El uso más típico: un menú en el encabezado de la página.

<header>
  <nav>
    <ul>
      <li><a href="#inicio">Inicio</a></li>
      <li><a href="#servicios">Servicios</a></li>
      <li><a href="#contacto">Contacto</a></li>
    </ul>
  </nav>
</header>

Menú lateral (sidebar)

Para navegación secundaria:

<header>
  <nav>
    <ul>
      <li><a href="#inicio">Inicio</a></li>
      <li><a href="#servicios">Servicios</a></li>
      <li><a href="#contacto">Contacto</a></li>
    </ul>
  </nav>
</header>

Paginación

En blogs o listas de productos:

<nav class="paginacion">
  <a href="#">« Anterior</a>
  <a href="#">1</a>
  <a href="#">2</a>
  <a href="#">Siguiente »</a>
</nav>

Breadcrumbs (migas de pan)

Muestra la ubicación del usuario en el sitio:

<nav aria-label="Breadcrumb">
  <ol>
    <li><a href="#inicio">Inicio</a></li>
    <li><a href="#blog">Blog</a></li>
    <li>Título del artículo</li>
  </ol>
</nav>

Estilización con CSS

Personaliza el menú con CSS para que sea visualmente atractivo y responsivo:

Ejemplo: Menú horizontal con flexbox

nav {
  background: #333;
  padding: 1rem;
}

nav ul {
  list-style: none;
  display: flex;
  gap: 20px;
  margin: 0;
  padding: 0;
}

nav a {
  color: white;
  text-decoration: none;
  padding: 8px 12px;
  border-radius: 4px;
}

nav a:hover {
  background: #555;
}

/* Estilo para móviles */
@media (max-width: 768px) {
  nav ul {
    flex-direction: column;
  }
}

Accesibilidad y buenas prácticas

Usa listas (<ul>/<li>) para estructurar los enlaces, ya que los lectores de pantalla las interpretan mejor.

Agrega aria-label si hay múltiples menús en la página:

<nav aria-label="Menú principal">
  <!-- Enlaces -->
</nav>

Evita anidar <nav> dentro de <nav>:
Cada bloque de navegación debe tener su propia etiqueta.

No uses <nav> para grupos pequeños de enlaces (ej: footer con enlaces legales). Para esos casos, usa <footer> sin <nav>.

Errores comunes

Usar <nav> para cualquier grupo de enlaces:

<!-- Incorrecto -->
<nav>
  <a href="#legal">Aviso legal</a>
  <a href="#privacidad">Privacidad</a>
</nav>

<!-- Correcto (si no es navegación principal) -->
<footer>
  <a href="#legal">Aviso legal</a>
</footer>

Ignorar la jerarquía semántica:
No coloques contenido no relacionado dentro de <nav>:

<!-- Incorrecto -->
<nav>
  <h1>Título de la página</h1>
  <ul>...</ul>
</nav>

Ejemplo avanzado: Menú responsivo con hamburguesa

Combina <nav> con CSS y JavaScript para móviles:

<nav class="menu-movil">
  <button id="boton-menu">☰</button>
  <ul id="lista-menu" class="oculto">
    <li><a href="#inicio">Inicio</a></li>
    <li><a href="#servicios">Servicios</a></li>
  </ul>
</nav>

<script>
  document.getElementById('boton-menu').addEventListener('click', () => {
    document.getElementById('lista-menu').classList.toggle('oculto');
  });
</script>

<style>
  .oculto {
    display: none;
  }
  @media (min-width: 769px) {
    #boton-menu {
      display: none;
    }
    #lista-menu.oculto {
      display: flex;
    }
  }
</style>

Casos de uso reales

  • E-commerce: Menú de categorías.

  • Blogs: Navegación entre entradas.

  • Portafolios: Acceso a secciones como "Proyectos" o "Sobre mí".

Conclusión

La etiqueta <nav> es esencial para estructurar la navegación de tu sitio web de manera semántica y accesible. Al usarla correctamente:

  • Mejoras el SEO.
  • Facilitas la experiencia de usuarios con discapacidades.
  • Organizas tu código para un mantenimiento más sencillo.

¡Inclúyela siempre que necesites agrupar enlaces de navegación principales!