Modelo mental

Fundamentos de ARIA

ARIA (aplicaciones de Internet enriquecidas accesibles) conecta interfaces web complejas con tecnologías de asistencia y hace que el contenido dinámico sea accesible para todos.

Descubre

Estás creando un menú desplegable dinámico que aparece cuando los usuarios hacen clic en un botón. ¿Cuál es el orden adecuado para hacerlo accesible a los lectores de pantalla?

¿Qué paso va PRIMERO?

Descubre por qué HTML nativo tiene prioridad sobre ARIA en la jerarquía de accesibilidad.

Comprende

Comprende

ARIA (aplicaciones de Internet enriquecidas accesibles) es un conjunto de atributos que ayuda a los navegadores web a explicar el contenido dinámico a tecnologías de asistencia, como los lectores de pantalla. Imagina que añades intérpretes invisibles de lengua de señas o etiquetas en braille a tu sitio web: cuando las funciones nativas de HTML no pueden expresar qué es algo o qué hace, ARIA cubre esa necesidad. Por ejemplo, un menú desplegable personalizado creado con elementos div se vuelve comprensible cuando añades roles ARIA que explican que es un menú, qué opción está seleccionada y si está expandido o contraído. HTML nativo ya incorpora funciones de accesibilidad, así que usa siempre elementos estándar antes de añadir atributos ARIA. Comprueba esto: revisa tu proyecto actual para identificar dónde ARIA complementa HTML en lugar de sustituirlo.

Explicación completa

Explicación completa

ARIA añade información a los elementos HTML mediante atributos especiales, principalmente roles, estados y propiedades. Los roles definen qué es un elemento, como un botón, un menú o un cuadro de diálogo. Los estados describen su condición actual, como expandido, marcado o deshabilitado. Las propiedades aportan información adicional, como una etiqueta o una descripción. Este sistema de tres partes permite que las tecnologías de asistencia comprendan y comuniquen interfaces complejas y dinámicas que HTML nativo no se diseñó para gestionar.

El principio central de ARIA es la primera regla de ARIA: si puedes usar un elemento HTML nativo con accesibilidad incorporada, úsalo en su lugar. Un elemento de botón ya comunica su función a los lectores de pantalla y gestiona automáticamente el foco del teclado, sin necesidad de ARIA. Recurre a ARIA solo cuando crees componentes personalizados o cuando HTML no pueda expresar el significado que necesitas, como en una interfaz con pestañas, una región de búsqueda que se actualiza en tiempo real o un acordeón con secciones que se pueden expandir y contraer.

Puedes encontrar aplicaciones prácticas de ARIA por todas partes: un sistema de validación de formularios usa aria-invalid y aria-describedby para anunciar errores; un cuadro de diálogo modal añade aria-modal y mantiene el foco del teclado dentro del cuadro; un marcador deportivo en directo usa aria-live para anunciar cambios en el resultado; un menú de navegación usa aria-expanded y aria-current para indicar la ubicación. Todos estos casos siguen el mismo patrón: ARIA describe lo que ocurre para que las tecnologías de asistencia puedan comunicarlo de forma eficaz.

Para implementar ARIA en la práctica, debes prestar atención al momento de las actualizaciones y a la gestión de los estados. Cuando una actualización de JavaScript cambia el contenido, debes actualizar al mismo tiempo los atributos ARIA correspondientes; de lo contrario, las tecnologías de asistencia anuncian información desactualizada. La navegación con teclado necesita indicadores de foco visibles y un orden lógico al recorrer los elementos con la tecla Tab. Los elementos interactivos necesitan etiquetas claras mediante aria-label o aria-labelledby, y debes comunicar los estados deshabilitados mediante aria-disabled cuando no puedas usar el atributo nativo disabled.

Investigación

Investigación

ARIA surgió de la Iniciativa de Accesibilidad Web (WAI) para resolver las carencias de accesibilidad de las aplicaciones de la Web 2.0, donde el contenido dinámico y las interfaces controladas por JavaScript rompían los modelos tradicionales de interacción con lectores de pantalla. La especificación define una clasificación de roles, estados y propiedades que vinculan los elementos de la interfaz con las API de accesibilidad que usan las tecnologías de asistencia. Así crea un puente entre el DOM y las capas de accesibilidad de la plataforma.

La investigación sobre la eficacia de ARIA revela dificultades importantes en su implementación. La Guía de prácticas de autoría de WAI-ARIA ofrece patrones basados en la evidencia para componentes habituales y destaca que ARIA funciona mediante la coordinación de los atributos de rol, propiedad y estado, en lugar de mediante añadidos aislados [2].

  • Iniciativa de Accesibilidad Web del W3C (sin fecha): la correspondencia que ARIA establece con el árbol de accesibilidad permite que los lectores de pantalla interpreten elementos de interfaz personalizados al traducir los atributos ARIA a las API de accesibilidad específicas de cada plataforma [1]

Glosario: Árbol de accesibilidad: estructura interna del navegador que establece una correspondencia entre el DOM y las API de accesibilidad, lo que permite que las tecnologías de asistencia comprendan el contenido web e interactúen con él.

Limitaciones

Limitaciones

ARIA tiene limitaciones y riesgos importantes cuando se usa mal. No puede hacer accesible un elemento inaccesible: añadir role="button" a un div no le da la funcionalidad de un botón ni compatibilidad con el teclado; solo hace que se anuncie como botón. La compatibilidad de los lectores de pantalla varía según el atributo ARIA, y algunos tienen poca compatibilidad incluso en navegadores modernos. ARIA tampoco aporta por sí sola beneficios de accesibilidad en dispositivos móviles; debes combinarla con HTML semántico adecuado y áreas táctiles. La especificación evoluciona continuamente, por lo que algunos atributos quedan obsoletos mientras aparecen otros nuevos, lo que exige un mantenimiento continuo. Quizá lo más importante sea que ARIA corrige síntomas, como anuncios poco claros, en lugar de las causas de fondo, como una elección inadecuada de elementos HTML. Esto genera una accesibilidad frágil que falla con pequeños cambios en la implementación.

Fuentes

Fuentes

Pruébalo

Comprueba lo que has entendido

Una persona que desarrolla una web quiere crear un elemento que active una acción al hacer clic. Considera dos opciones: (A) usar un elemento `<button>` o (B) usar un `<div>` con role="button" y tabindex="0". ¿Qué opción demuestra una mejor comprensión de los fundamentos de ARIA?

Ver la explicación de la guía

Respuesta: Usar el elemento nativo button

La primera regla de ARIA es: si un elemento HTML nativo sirve, úsalo en su lugar. Un `<button>` incorpora compatibilidad con el teclado, gestión del foco y anuncios para lectores de pantalla sin necesidad de ARIA. Añadir ARIA a un div duplica lo que el botón ya hace y conlleva el riesgo de una implementación incompleta. ARIA complementa HTML, no lo sustituye.

Estás creando un componente de acordeón personalizado en el que hacer clic en un encabezado muestra u oculta paneles de contenido. ¿Qué orden es más eficaz para implementar las funciones de accesibilidad?

Ver la explicación de la guía

Respuesta: Escribir primero HTML semántico, añadir ARIA después y probar al final

Este orden sigue la jerarquía de accesibilidad: HTML nativo proporciona la base, ARIA amplía lo que HTML no puede expresar y las pruebas validan el resultado. Empezar con ARIA suele dar lugar a atributos redundantes que duplican el significado que ya expresan los elementos nativos. Hacer pruebas sin una estructura HTML adecuada significa que estás probando sobre una base incorrecta. Crea primero HTML accesible, añade ARIA donde haga falta y después comprueba el resultado con usuarios reales y herramientas.

Un formulario de búsqueda actualiza los resultados de forma dinámica a medida que los usuarios escriben. ¿Qué combinación de enfoques comunica mejor estas actualizaciones a quienes usan lectores de pantalla?

Ver la explicación de la guía

Respuesta: Añadir aria-live='polite' al contenedor de resultados y generar HTML semántico

El atributo aria-live, especialmente con el valor 'polite' para actualizaciones no urgentes, indica a los lectores de pantalla que anuncien los cambios de contenido sin interrumpir al usuario. Combinado con una estructura HTML adecuada para cada resultado, permite anunciar automáticamente las actualizaciones. Usar role='alert' resulta demasiado intrusivo para resultados de búsqueda habituales; aria-busy solo indica el estado de carga sin anunciar los resultados; y aria-label en cada elemento es innecesario cuando su contenido ya se puede leer.

Sigue explorando

Encuentra otra idea para la decisión que tienes por delante.

Toda la biblioteca de Reframo es de lectura gratuita. Explora otra guía cuando quieras.