Acerca de esta regla de accesibilidad
Cuando asignas un role como link, button, o menuitem a un elemento, le estás diciendo al navegador y a las tecnologías asistivas que este elemento es un comando interactivo. Los lectores de pantalla dependen del nombre accesible de estos elementos para comunicar su propósito al usuario. Si no existe un nombre accesible, un lector de pantalla podría anunciar algo como “botón” o “enlace” sin contexto adicional — dejando al usuario sin manera de entender qué hace el control.
Este problema afecta principalmente a usuarios que son ciegos o tienen baja visión y dependen de lectores de pantalla, pero también impacta a usuarios con discapacidades motoras que pueden usar software de control por voz para activar elementos por nombre. Si no hay nombre, los usuarios de control por voz no pueden dirigirse al elemento con un comando hablado.
Criterios de éxito WCAG relacionados
Esta regla se mapea al Criterio de Éxito WCAG 4.1.2: Nombre, Función, Valor (Nivel A). Este criterio requiere que todos los componentes de interfaz de usuario tengan un nombre que pueda determinarse programáticamente. Se aplica a WCAG 2.0, 2.1, y 2.2, y también se referencia en EN 301 549 (9.4.1.2), las pautas Trusted Tester, y RGAA.
Las pautas Trusted Tester especifican además que el propósito de cada enlace o botón debe ser determinable a partir de alguna combinación de su texto, nombre accesible, descripción accesible, o contexto determinado programáticamente.
Cómo solucionarlo
Asegúrate de que cada elemento con role="link", role="button", o role="menuitem" tenga un nombre accesible a través de uno de estos métodos:
- Contenido de texto interno — Coloca texto legible dentro del elemento.
-
Atributo
aria-label— Añade unaria-labelno vacío con un nombre descriptivo. -
Atributo
aria-labelledby— Apunta alidde otro elemento que contenga texto visible y no vacío. -
Atributo
title— Usa un atributotitlecomo respaldo (aunque se prefierearia-labelo texto visible).
Cuando sea posible, prefiere usar elementos HTML nativos (<a>, <button>) sobre roles ARIA personalizados, ya que vienen con comportamientos de accesibilidad integrados. Si debes usar roles ARIA, siempre asegúrate de que el nombre accesible sea claro y describa la acción o destino.
Ejemplos
Incorrecto: Sin nombre accesible
Estos elementos serán marcados porque los lectores de pantalla no pueden determinar su propósito.
<!-- Elemento vacío sin texto o etiqueta -->
<div role="link"></div>
<!-- aria-label vacío no proporciona nombre -->
<div role="button" aria-label=""></div>
<!-- aria-labelledby apunta a un elemento inexistente -->
<div role="menuitem" aria-labelledby="nonexistent"></div>
<!-- aria-labelledby apunta a un elemento vacío -->
<div role="link" aria-labelledby="empty-label"></div>
<div id="empty-label"></div>
Correcto: Nombre accesible proporcionado
Cada uno de estos elementos tiene un nombre perceptible que los lectores de pantalla pueden anunciar.
<!-- Contenido de texto interno -->
<div role="link" tabindex="0">Visita nuestro centro de ayuda</div>
<!-- Atributo aria-label -->
<div role="button" tabindex="0" aria-label="Cerrar diálogo"></div>
<!-- aria-labelledby apuntando a texto visible -->
<div role="menuitem" tabindex="0" aria-labelledby="menu-label">
<span id="menu-label">Guardar documento</span>
</div>
<!-- Combinación de aria-label y texto interno -->
<div role="link" tabindex="0" aria-label="Aprende más sobre precios">
Aprende más
</div>
<!-- Atributo title como respaldo -->
<div role="button" tabindex="0" title="Enviar formulario"></div>
Preferido: Usa elementos HTML nativos
Los elementos nativos manejan el nombrado y el comportamiento del teclado automáticamente, reduciendo la posibilidad de problemas de accesibilidad.
<a href="/help">Visita nuestro centro de ayuda</a>
<button type="button">Cerrar diálogo</button>
Nota: Al probar con RGAA, los problemas reportados por esta regla pueden necesitar ser mapeados a una prueba RGAA diferente, como 6.2.1 para enlaces.
Learn more:
Ayúdanos a mejorar nuestras guías
Detecta problemas de accesibilidad automáticamente
Rocket Validator escanea miles de páginas con Axe Core y el W3C Validator, encontrando problemas de accesibilidad en todo tu sitio web.