Teclado y foco visible sin trampas

Cómo asegurar recorridos completos por teclado con foco visible, orden lógico y retorno controlado.

Sin foco visible no hay navegación real por teclado; hay adivinación.

El orden de tabulación debe seguir la lógica visual y funcional de la interfaz.

Abrir y cerrar capas (modales, menús, popovers) exige gestionar foco de entrada y retorno.

Un flujo accesible por teclado también mejora eficiencia para personas expertas.

  • Bases para que cualquier flujo crítico sea navegable solo con teclado.
  • Cómo comprobar y corregir navegación por teclado en componentes vivos.
  • Recorre cada pantalla con Tab y Shift+Tab anotando puntos donde el foco desaparece o se salta controles.
  • En overlays, prueba apertura, interacción y cierre sin tocar el ratón.
  • Automatiza checks de foco visible, pero conserva validación manual en flujos complejos.

Claves teóricas

Bases para que cualquier flujo crítico sea navegable solo con teclado.

Aplicación en proyectos reales

Cómo comprobar y corregir navegación por teclado en componentes vivos.

Recorre cada pantalla con Tab y Shift+Tab anotando puntos donde el foco desaparece o se salta controles.

En overlays, prueba apertura, interacción y cierre sin tocar el ratón.

Automatiza checks de foco visible, pero conserva validación manual en flujos complejos.

  • Incluye test de teclado en Definition of Done de frontend.
  • Usa `:focus-visible` con estilo consistente en todo el sistema.
  • Revisa componentes terceros: suelen romper orden o retorno de foco.
  • Define guía de foco para diálogos, menús y navegación lateral.

Patrón de código

Ejemplo pequeño de foco visible y orden lógico de controles.

Accesibilidad Web
07

Teclado y foco visible sin trampas

Cómo asegurar recorridos completos por teclado con foco visible, orden lógico y retorno controlado.

Código del tema: keyboard focus

📘 Teoría

Claves teóricas

Bases para que cualquier flujo crítico sea navegable solo con teclado.

1

Foco siempre visible

No elimines outline sin una alternativa clara y con contraste suficiente.

2

Orden natural

Evita `tabindex` positivos: suelen romper secuencia y mantenimiento.

3

Entrada a contexto

Al abrir un modal, mueve foco al primer control útil del diálogo.

4

Salida segura

Al cerrar, devuelve foco al elemento que abrió el contexto.

5

Atajos coherentes

Respeta Enter y Espacio según tipo de control y evita comportamientos sorpresa.

6

Error típico

Foco atrapado o perdido tras render dinámico, especialmente en SPA.

Aplicación en proyectos reales

Cómo comprobar y corregir navegación por teclado en componentes vivos.

Recorre cada pantalla con Tab y Shift+Tab anotando puntos donde el foco desaparece o se salta controles.

En overlays, prueba apertura, interacción y cierre sin tocar el ratón.

Automatiza checks de foco visible, pero conserva validación manual en flujos complejos.

  • Incluye test de teclado en Definition of Done de frontend.
  • Usa `:focus-visible` con estilo consistente en todo el sistema.
  • Revisa componentes terceros: suelen romper orden o retorno de foco.
  • Define guía de foco para diálogos, menús y navegación lateral.

Patrón de código

Ejemplo pequeño de foco visible y orden lógico de controles.

Base de navegación por teclado
<button type="button">Abrir filtro</button>
<a href="#detalle">Ver detalle</a>
<input id="buscar" type="search" aria-label="Buscar por nombre" />

🧪 Aprende probando

Ejemplo Demo guiada Practica foco visible y retorno al cerrar un panel.

🏁 Retos

Reto Reto práctico Implementa retorno de foco al cerrar un bloque contextual.

🧰 Recursos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .