Menús interactivos con pseudoclases CSS hover y focus-within

Clase 24 de 34Curso de CSS Avanzado y Responsive Design

Resumen

¿Sabías que puedes hacer tu página web interactiva sin necesidad de usar Javascript? Con las pseudoclases CSS Hover y Focus Within, es posible crear efectos dinámicos en menús desplegables utilizando únicamente estilos CSS, agilizando así la interacción en tu sitio.

¿Qué son las pseudoclases hover y focus within?

Las pseudoclases son selectores en CSS que permiten reaccionar a acciones del usuario directamente desde el estilo visual, sin recurrir a programación adicional. En nuestro ejemplo trabajamos con dos específicas:

  • Hover: Utilizado cuando el usuario pasa el cursor sobre un elemento.
  • Focus Within: Activado cuando cualquier elemento hijo recibe enfoque mediante clic o navegación con teclado.

¿Cómo crear un menú desplegable interactivo con CSS?

Para exponer el potencial de estas pseudoclases preparamos un menú desplegable que inicialmente permanece oculto y luego se muestra al interactuar. La estructura básica incluye:

  • Elemento principal .menu:
  • Position Relative.
  • Display Inline Block.
  • Botón .menu botón:
  • Color de fondo azul.
  • Letras blancas.
  • Padding y cursor pointer.
  • Sin borde.
  • Lista oculta .menu list:
  • Inicialmente transparente (opacidad 0).
  • Comprimida verticalmente (scale 0).
  • Position Absolute, separada del botón por 40px.
  • Fondo blanco, padding y borde configurado.

¿Cómo se aplica la interactividad mediante pseudoclases?

Utilizamos un selector en CSS que modifica el elemento .menu list en respuesta a las siguientes acciones:

.menu:hover .menu-list,
.menu:focus-within .menu-list {
    opacity: 1;
    transform: scaleY(1);
    transition: opacity 300ms, transform 300ms;
}

Al colocar el cursor (hover) o al hacer clic (focus within) sobre .menu, automáticamente se aplica:

  • Opacidad al 100% (visible).
  • Escala completa (sin reducción).
  • Una transición suave de 300 milisegundos para mejorar la experiencia visual.

¿Cuál es la ventaja de combinar hover y focus within?

Al incluir ambas pseudoclases mejoras significativamente la accesibilidad y comodidad del usuario final:

  • Solo hover: Muestra el menú únicamente mientras el cursor esté encima.
  • Solo focus within: Se requiere un clic inicial para activar y se mantiene visible hasta hacer clic fuera.
  • Ambas combinadas: Ofrece al usuario una interacción fluida usando indistintamente mouse o teclado.

Al aplicar ambas pseudoclases en conjunto, evitas que el menú se oculte involuntariamente al mover ligeramente el cursor, brindando mayor control al usuario sobre la visualización del contenido desplegable.

¿Cuándo aplicar estas técnicas CSS sin Javascript?

Este método es especialmente útil cuando:

  • Necesitas interacción básica, rápida y efectiva.
  • Deseas reducir tiempos de carga evitando scripts adicionales.
  • La experiencia de usuario demanda accesibilidad con teclado.

¿Has probado ya implementar menús interactivos usando solo CSS? ¡Cuéntanos cómo te ha ido o qué inquietud tienes!