¿Qué estás buscando?

Toca fuera o pulsa Esc para cerrar

Controla el foco al abrir y cerrar un diálogo modal

Un modal accesible mueve el foco dentro, lo mantiene entre sus controles y lo devuelve al botón que lo abrió. Ese recorrido evita que el teclado acabe bajo la capa.

Tres estados de interfaz muestran el foco antes, dentro y después de un diálogo modal
Recorrido de foco en un diálogo modal: entra desde el botón, queda dentro de la ventana y regresa al cerrar. · Crédito: Imagen generada con IA para Kaosconcept

Abres una ventana de confirmación con el teclado. El fondo se oscurece, pero el foco sigue pasando por los enlaces de la página. Al cerrar, la siguiente pulsación de Tab salta a un lugar inesperado. Es un fallo pequeño hasta que intentas completar la tarea sin ratón.

Un diálogo modal necesita una caja superpuesta y un recorrido de foco. Conviene decidir ambos antes de ajustar sombras, transiciones o el color de la capa.

Dibuja el recorrido antes de programar

El flujo básico tiene tres momentos: el foco parte del botón que abre el diálogo, entra en un elemento de la ventana y vuelve al punto de partida al cerrar. Mientras el modal está abierto, Tab y Mayús + Tab recorren únicamente sus controles. La guía de patrones de WAI-ARIA describe esa secuencia y también espera que Escape cierre la ventana.

Llévalo al wireframe con tres estados y una flecha de vuelta. Si el recorrido no se entiende en ese dibujo, falta decidir qué control recibe el foco en cada paso.

Elige el primer foco según la tarea

Mandar siempre el foco al aspa de cierre es cómodo, pero puede saltarse lo importante. En una confirmación breve suele tener sentido enfocar la acción segura o más probable. Si el contenido es largo, el W3C aconseja enfocar un título o un párrafo inicial con tabindex="-1", para que la lectura empiece arriba.

El estándar HTML permite señalar la elección con autofocus. Un campo editable puede ser el comienzo lógico. En una confirmación destructiva, enfoca la opción menos peligrosa.

Mantén la página fuera del tabulador

Al abrir un <dialog> con showModal(), el navegador coloca la ventana en la capa superior y deja inerte el resto de la página. También aporta el cierre con Escape y buena parte del comportamiento de foco, según la referencia de MDN. Es un punto de partida bastante más sólido que levantar un modal con un div y varios parches.

Aun así, incluye un botón visible para cerrar, un nombre accesible y un orden de controles comprensible. Poner aria-modal="true" sin bloquear el fondo puede ocultar el resto de la interfaz a tecnologías de asistencia mientras el ratón aún permite usarla.

Comprueba también el regreso

Cierra con el botón, con Escape y después de completar la acción. El foco debería volver al elemento que abrió el diálogo. El estándar guarda ese elemento para restaurarlo; si ya no existe, elige otro punto que continúe la tarea, como la fila recién creada.

La prueba cabe en un minuto: abre, pulsa Tab hasta completar una vuelta, cierra y vuelve a pulsar Tab. Si el siguiente foco continúa donde estabas, anota la prueba como superada. Si salta al inicio de la página, todavía falta decidir la devolución.

0 comentarios

Todavía no hay comentarios.

Deja un comentario

Información básica de protección de datos. Responsable: Miguel Ángel Ruiz Carmona (Websmultimedia). Trataremos el nombre y el comentario para gestionar y publicar tu aportación a petición tuya, y para moderarla y prevenir abusos por interés legítimo. El email es opcional, nunca se publica y se elimina 90 días después de moderar. El alojamiento se presta en la UE y no cedemos estos datos salvo obligación legal. Puedes ejercer tus derechos en miguel@websmultimedia.com. Consulta la información de privacidad y las normas de participación.