Sobre este problema HTML
Um elemento span tem um role ARIA implícito de generic, e o atributo aria-label não é permitido em elementos com esse role.
O elemento span é um contentor inline genérico sem significado semântico. O seu role ARIA padrão é generic, que é um dos vários roles que proíbem a nomeação via aria-label ou aria-labelledby. Esta restrição existe porque não se espera que os leitores de ecrã anunciem nomes para contentores genéricos — adicionar aria-label a estes cria uma experiência inconsistente e confusa para utilizadores de tecnologia assistiva.
Para corrigir isto, você tem duas opções principais:
-
Atribuir um role explícito ao
spanque suporte nomeação, comorole="img",role="group",role="status", ou qualquer outro role que permitaaria-label. -
Usar um elemento diferente que já tenha um role semântico que suporte
aria-label, como umbutton,a,section, ounav.
Se o span é puramente decorativo ou usado para estilo, considere usar aria-hidden="true" em vez disso e colocar texto acessível noutro local.
Exemplos HTML
❌ Inválido: aria-label num span simples
<span aria-label="Close">✕</span>
✅ Corrigido: atribuir um role apropriado
<span role="img" aria-label="Close">✕</span>
✅ Corrigido: usar um elemento semântico em vez disso
<button aria-label="Close">✕</button>
✅ Corrigido: ocultar o span decorativo e fornecer texto de outra forma
<button>
<span aria-hidden="true">✕</span>
<span class="visually-hidden">Close</span>
</button>
Encontre problemas como este automaticamente
O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.