Acerca de este problema HTML
Un elemento span tiene un role ARIA implícito de generic, y el atributo aria-label no está permitido en elementos con ese role.
El elemento span es un contenedor genérico en línea sin significado semántico. Su role ARIA por defecto es generic, que es uno de varios roles que prohíben el nombrado mediante aria-label o aria-labelledby. Esta restricción existe porque no se espera que los lectores de pantalla anuncien nombres para contenedores genéricos — agregar aria-label a estos crea una experiencia inconsistente y confusa para los usuarios de tecnología asistiva.
Para solucionar esto, tienes dos opciones principales:
-
Asignar un role explícito al
spanque soporte el nombrado, comorole="img",role="group",role="status", o cualquier otro role que permitaaria-label. -
Usar un elemento diferente que ya tenga un role semántico que soporte
aria-label, comobutton,a,sectiononav.
Si el span es puramente decorativo o se usa para estilo, considera usar aria-hidden="true" en su lugar y colocar el texto accesible en otro lugar.
Ejemplos HTML
❌ Inválido: aria-label en un span simple
<span aria-label="Close">✕</span>
✅ Corregido: asignar un role apropiado
<span role="img" aria-label="Close">✕</span>
✅ Corregido: usar un elemento semántico en su lugar
<button aria-label="Close">✕</button>
✅ Corregido: ocultar el span decorativo y proporcionar texto de otra manera
<button>
<span aria-hidden="true">✕</span>
<span class="visually-hidden">Close</span>
</button>
Encuentra problemas como este automáticamente
Rocket Validator escanea miles de páginas en segundos, detectando problemas de HTML en todo tu sitio web.