Categoría · Menús de Navegación Nivel de Dificultad · Intermedio Publicado el · 17 de enero de 2024

Menú Desplegable Multinivel

Un sofisticado menú desplegable multinivel con animaciones suaves, navegación por teclado y diseño responsivo para estructuras de navegación complejas.

#dropdown #multi-level #navigation #submenu #responsive

Diseño Responsivo

Soporte para Modo Oscuro

No

líneas

703

Compatibilidad del Navegador

No

Vista Previa en Vivo

Interactúa con el componente sin salir de la página.

400px

Menú Desplegable Multinivel

Un sistema de menú desplegable sofisticado y rico en características que soporta múltiples niveles de navegación con animaciones suaves, modos de interacción flexibles y características completas de accesibilidad.

Características

  • Múltiples Modos de Interacción: Patrones de interacción hover, clic y mixto
  • Soporte Multinivel: Niveles de anidación ilimitados para estructuras de navegación complejas
  • Animaciones Suaves: Transiciones fluidas y efectos hover
  • Diseño Responsivo: Se adapta a dispositivos móviles con diseño de acordeón colapsable
  • Navegación por Teclado: Soporte completo de teclado con teclas de flecha y funcionalidad escape
  • Accesibilidad: Etiquetas ARIA, gestión de foco y soporte para lectores de pantalla
  • Retroalimentación Visual: Información en tiempo real sobre el estado del menú y elementos activos

Componentes Clave

  • Barra de menú horizontal con elementos de navegación primarios
  • Indicadores desplegables con flechas animadas
  • Estados hover y focus con transiciones suaves
  • Soporte para elementos de menú desplegables y regulares

Sistema de Submenús

  • Paneles desplegables multinivel con animaciones de revelación suaves
  • Posicionamiento inteligente para prevenir desbordamiento del viewport
  • Soporte de menús anidados con jerarquía visual
  • Funcionalidad de cierre automático para mejor UX

Modos de Interacción

  • Modo Hover: Comportamiento tradicional de abrir al pasar el mouse
  • Modo Clic: Clic para alternar para dispositivos táctiles
  • Modo Mixto: Clic para primer nivel, hover para niveles subsecuentes

Opciones de Personalización

  • Colores: Modificar colores de fondo, texto y acento
  • Animaciones: Ajustar velocidades de transición y funciones de suavizado
  • Espaciado: Personalizar padding, márgenes y dimensiones del menú
  • Tipografía: Cambiar fuentes, tamaños y pesos
  • Iconos: Reemplazar flechas con iconos personalizados o eliminar completamente
  • Puntos de Ruptura: Ajustar activadores de comportamiento responsivo

Detalles de Animación

Transiciones de Menú

  1. Los submenús se deslizan hacia abajo con efecto fade-in
  2. Los menús de segundo nivel se deslizan desde la izquierda con transición de opacidad
  3. Los iconos de flecha rotan para indicar estado abierto/cerrado
  4. Los efectos hover incluyen elevación sutil y cambios de color

Comportamiento Móvil

  • Se transforma a diseño estilo acordeón en pantallas pequeñas
  • Transiciones suaves de altura para secciones que se expanden/colapsan
  • Objetivos táctiles amigables y espaciado
  • Mantiene jerarquía visual con indentación

Características de Accesibilidad

  • Soporte ARIA: Atributos apropiados aria-haspopup, aria-expanded y role
  • Navegación por Teclado: Soporte de teclas Tab, Enter, Escape y flechas
  • Gestión de Foco: Indicadores de foco visibles y orden lógico de tabulación
  • Lector de Pantalla: Etiquetas descriptivas y puntos de referencia de navegación
  • Alto Contraste: Ratios de contraste de color suficientes

Consejos de Uso

  1. Mantener la profundidad del menú razonable (máx 3-4 niveles) para usabilidad
  2. Usar etiquetas descriptivas que indiquen claramente el contenido
  3. Probar en varios dispositivos y tamaños de pantalla
  4. Asegurar que los objetivos táctiles sean de al menos 44px para móvil
  5. Considerar estados de carga para contenido de menú dinámico
  6. Implementar manejo adecuado de errores para enlaces rotos

Compatibilidad del Navegador

Funciona en todos los navegadores modernos con degradación elegante para versiones más antiguas. Usa transformaciones CSS, transiciones y características modernas de JavaScript con respaldos apropiados.

Consideraciones de Rendimiento

  • Delegación eficiente de eventos para menús grandes
  • Transformaciones CSS para animaciones suaves
  • Manipulación mínima del DOM durante interacciones
  • Optimizado tanto para rendimiento de escritorio como móvil

HTML

144

líneas

CSS

340

líneas

JavaScript

219

líneas


                <div class="dropdown-demo">
  <div class="demo-content">
    <h2>Demo de Menú Desplegable Multinivel</h2>
    <p>Un sistema completo de menú desplegable con múltiples niveles, interacciones hover y clic, y animaciones suaves. Perfecto para estructuras de navegación complejas.</p>
    
    <div class="demo-controls">
      <h3>Modo de Interacción:</h3>
      <div class="control-buttons">
        <button class="control-btn active" data-mode="hover">Modo Hover</button>
        <button class="control-btn" data-mode="click">Modo Clic</button>
        <button class="control-btn" data-mode="mixed">Modo Mixto</button>
      </div>
    </div>
  </div>
  
  <div class="dropdown-container">
    <nav class="dropdown-nav" role="navigation" aria-label="Navegación principal">
      <ul class="dropdown-menu" id="mainMenu">
        <li class="dropdown-item">
          <a href="#" class="dropdown-link">Inicio</a>
        </li>
        
        <li class="dropdown-item has-dropdown">
          <a href="#" class="dropdown-link" aria-haspopup="true" aria-expanded="false">
            Productos
            <span class="dropdown-arrow">▼</span>
          </a>
          <ul class="dropdown-submenu" aria-label="Submenú de productos">
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Todos los Productos</a>
            </li>
            <li class="dropdown-subitem has-dropdown">
              <a href="#" class="dropdown-sublink" aria-haspopup="true" aria-expanded="false">
                Electrónicos
                <span class="dropdown-arrow">▶</span>
              </a>
              <ul class="dropdown-submenu level-2">
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Smartphones</a>
                </li>
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Portátiles</a>
                </li>
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Tablets</a>
                </li>
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Accesorios</a>
                </li>
              </ul>
            </li>
            <li class="dropdown-subitem has-dropdown">
              <a href="#" class="dropdown-sublink" aria-haspopup="true" aria-expanded="false">
                Ropa
                <span class="dropdown-arrow">▶</span>
              </a>
              <ul class="dropdown-submenu level-2">
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Ropa de Hombre</a>
                </li>
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Ropa de Mujer</a>
                </li>
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Ropa Infantil</a>
                </li>
                <li class="dropdown-subitem">
                  <a href="#" class="dropdown-sublink">Zapatos</a>
                </li>
              </ul>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Hogar y Jardín</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Deportes y Aire Libre</a>
            </li>
          </ul>
        </li>
        
        <li class="dropdown-item has-dropdown">
          <a href="#" class="dropdown-link" aria-haspopup="true" aria-expanded="false">
            Servicios
            <span class="dropdown-arrow">▼</span>
          </a>
          <ul class="dropdown-submenu">
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Diseño Web</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Desarrollo</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Servicios SEO</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Consultoría</a>
            </li>
          </ul>
        </li>
        
        <li class="dropdown-item has-dropdown">
          <a href="#" class="dropdown-link" aria-haspopup="true" aria-expanded="false">
            Acerca de
            <span class="dropdown-arrow">▼</span>
          </a>
          <ul class="dropdown-submenu">
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Nuestra Historia</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Equipo</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Carreras</a>
            </li>
            <li class="dropdown-subitem">
              <a href="#" class="dropdown-sublink">Prensa</a>
            </li>
          </ul>
        </li>
        
        <li class="dropdown-item">
          <a href="#" class="dropdown-link">Contacto</a>
        </li>
      </ul>
    </nav>
    
    <div class="dropdown-info">
      <div class="info-item">
        <span class="info-label">Modo Actual:</span>
        <span class="info-value" id="currentMode">Modo Hover</span>
      </div>
      <div class="info-item">
        <span class="info-label">Elemento Activo:</span>
        <span class="info-value" id="activeItem">Ninguno</span>
      </div>
      <div class="info-item">
        <span class="info-label">Nivel de Menú:</span>
        <span class="info-value" id="menuLevel">0</span>
      </div>
    </div>
  </div>
</div>

              
144líneas
5743caracteres
HTMLIdioma

Fragmentos de Código Relacionados

Explora packs de plantillas

¿Necesitas bloques más grandes? Descubre landings y colecciones de componentes.

Abrir la biblioteca de plantillas →