WAI-ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) es una especificación técnica del W3C diseñada para hacer que el contenido web y las aplicaciones web, especialmente aquellas con interfaces de usuario complejas o componentes personalizados construidos con JavaScript, sean más accesibles para personas con diversidad funcional.
Funciona proporcionando un conjunto de atributos HTML (principalmente el atributo role y diversos atributos aria-*) que puedes añadir a tus elementos para darles un significado semántico adicional que las tecnologías de asistencia (AT), como los lectores de pantalla, puedan entender e interpretar. ARIA no cambia la apariencia ni el comportamiento de los elementos para los usuarios que no usan AT, solo afecta al «árbol de accesibilidad» que usan estas tecnologías.
La regla de oro es la primera regla de ARIA: «No uses ARIA si puedes usar HTML nativo». Esto significa:
<button>, <nav>, <input type="checkbox">, <details>, etc.) o un atributo HTML (como required, hidden, checked) que ya proporciona la semántica y el comportamiento que necesitas, ¡úsalo! El HTML nativo es inherentemente más accesible y robusto.<button>Un botón</button> que <div role="button" tabindex="0">Un botón</div>.Debes usar atributos ARIA principalmente en las siguientes situaciones, cuando el HTML nativo no es suficiente:
role para definir qué es el componente (ej. role="tablist", role="dialog") y atributos aria-* para sus estados y propiedades (ej. aria-selected="true" para una pestaña, aria-expanded="false" para un menú contraído, aria-hidden="true" para un diálogo oculto).<div role="tablist"> <div role="tab" aria-selected="true" aria-controls="panel1" tabindex="0">Pestaña 1</div> <div role="tab" aria-selected="false" aria-controls="panel2" tabindex="-1">Pestaña 2</div> </div> <div id="panel1" role="tabpanel">Contenido de la Pestaña 1...</div> <div id="panel2" role="tabpanel" hidden>Contenido de la Pestaña 2...</div><button aria-expanded="false" aria-controls="menu-contenido"> Menú </button><div id="menu-contenido" hidden> </div>Importante:
role="button", eres responsable de añadir la interactividad de teclado (Enter, Espacio) y la lógica con JavaScript. ARIA solo comunica la semántica.En resumen, WAI-ARIA es un complemento poderoso al HTML semántico, diseñado para cubrir los vacíos de accesibilidad en aplicaciones web ricas e interactivas, pero siempre debe usarse con conocimiento y priorizando las soluciones nativas de HTML.