aria-hidden
Elimina un elemento y todos sus descendientes del árbol de accesibilidad. Los usuarios videntes siguen viendo el elemento; la tecnología de asistencia nunca accede a él. Resérvelo para contenido decorativo; no lo aplique nunca a un control enfocable.
Cuándo utilizarlo
En contenido decorativo que no aporta nada a los usuarios de lectores de pantalla: iconos que ya están junto a una etiqueta de texto, separadores, gráficos de fondo o texto duplicado que existe únicamente con fines de maquetación. Marcar esos elementos con aria-hidden="true" mantiene el árbol de accesibilidad centrado en el contenido significativo.
En comparación con mecanismos similares:
aria-hidden="true"— visible para los usuarios videntes, invisible para la tecnología de asistencia. El elemento continúa ocupando espacio en la maquetación.- CSS
display: noney el atributo HTMLhidden— invisible para todos (usuarios videntes y tecnología de asistencia). El elemento no se renderiza en absoluto. - CSS
visibility: hidden— invisible para todos, pero el elemento sigue ocupando espacio en la maquetación. - El atributo
inert— el elemento y sus descendientes no pueden recibir foco, los eventos de clic se suprimen, pero permanecen en el árbol de accesibilidad (a diferencia dearia-hidden). Es la herramienta adecuada para fondos de modales y pantallas que han sido enrutadas fuera.
De forma crítica, nunca aplique aria-hidden="true" a un elemento que sea —o contenga— un control enfocable. Los usuarios de teclado pueden seguir desplazándose hasta él con el tabulador, pero su lector de pantalla no lo anunciará. Llegan a un control que para ellos es invisible. Este es uno de los fallos más frecuentes detectados por axe-core.
Cómo mantenerlo sincronizado
Los valores válidos son "true", "false" y "undefined". El útil es "true"; "false" existe para anular un aria-hidden de un ancestro, algo que en la práctica casi nunca es necesario.
El estado puede ser estático (un icono que siempre es decorativo) o dinámico. Si alterna aria-hidden en una región —por ejemplo, ocultando la aplicación principal mientras hay un modal abierto—, sincronícelo con el estado visual real y combínelo con inert para que la región tampoco pueda recibir foco.
Errores frecuentes
aria-hidden="true"en un elemento enfocable: el problema más frecuentemente reportado por axe-core.- Usar
aria-hiddenpara ocultar texto visible que no se desea que lean los lectores de pantalla. Elimine el texto o muévalo fuera del DOM. - Olvidar
aria-hidden="true"en un icono puramente decorativo junto a un botón con etiqueta: el lector de pantalla anuncia el nombre accesible del icono además de la etiqueta del botón. - Establecer
aria-hidden="true"en el elemento<body>o<main>para bloquear el contenido de fondo detrás de un modal sin usar tambiéninert: el foco de teclado puede escapar igualmente. - Usar
aria-hidden="false"para «mostrar» algo que el CSS oculta. El CSS lo sigue ocultando.
Ejemplo
<button type="button">
<svg aria-hidden="true" focusable="false" width="16" height="16">…</svg>
Guardar
</button>