Quais São os Papéis dos Atributos aria-label e aria-labelledby?
É importante garantir que todos os usuários, incluindo aqueles que vivem com deficiências, possam acessar sites sem problemas.
Para pessoas que usam leitores de tela, os atributos
aria-label e aria-labelledby fornecem informações cruciais sobre elementos da página que podem estar pouco claros ou invisíveis.
Vamos ver o que são os atributos aria-label e aria-labelledby e os papéis que eles desempenham para tornar a web acessível para pessoas com deficiências visuais e relacionadas.
Você notará que tanto aria-label e aria-labelledby são prefixados com aria. Então o que isso significa? ARIA significa Aplicações Ricas de Internet Acessíveis. É um conjunto de atributos prefixados com aria-, que permite aos desenvolvedores comunicar a finalidade dos elementos para tecnologias assistivas. O atributo aria-label é um rótulo invisível para elementos interativos. Ele adiciona um rótulo de texto a um elemento que leitores de tela podem ler.
aria-label é especialmente útil para elementos que não possuem texto visível mas ainda precisam ser descritos por leitores de tela. Por exemplo, botões com apenas ícones frequentemente precisam de aria-label para transmitir sua finalidade.
Aqui está um exemplo:
<button aria-label="Search">
<i class="fa-solid fa-magnifying-glass"></i>
</button>
Neste caso, um leitor de tela pode anunciar este botão como Search, button, mesmo que o botão contenha apenas um ícone. O atributo aria-label informa aos leitores de tela qual texto usar no lugar do ícone.
Se o botão contivesse o texto "Search" em vez de um ícone, então não haveria necessidade do atributo aria-label pois o texto forneceria o rótulo para o botão.
Para elementos de entrada, o atributo aria-label fornece um rótulo diretamente se não houver um rótulo visível associado à entrada.
O atributo aria-labelledby faz exatamente a mesma coisa que o atributo aria-label, mas em vez de definir o texto diretamente no atributo, você usa uma referência para um texto que já existe na página. O texto existente deve ter um atributo id, que será usado como valor de referência no atributo aria-labelledby.
Aqui está um exemplo:
<input type="text" aria-labelledby="search-btn">
<button type="button" id="search-btn">Search</button>
Neste caso, o texto do botão está sendo usado como o rótulo para o input de busca. Leitores de tela anunciarão a entrada como algo como Search, edit. Se você decidir depois que quer mudar o texto do botão para Find, o rótulo do input será atualizado automaticamente para o novo texto já que ele está referenciando o texto do botão. Combinar múltiplos valores de id em um único valor do atributo aria-labelledby também é possível. Aqui está como isso funciona:
<div>
<span id="volume-label">Volume</span>
<span id="volume-details">Adjust the volume level</span>
<input
type="range"
min="0"
max="100"
value="30"
aria-labelledby="volume-label volume-details">
</div>
Para o slider, o leitor de tela irá procurar o conteúdo dos elementos volume-label e volume-details e anunciar Volume Adjust the volume level.
Você viu que os atributos aria-label e aria-labelledby ajudam leitores de tela a entender o que os elementos fazem. Então, qual você deve usar? Como ambos fornecem a mesma funcionalidade, qualquer um pode ser usado, mas pode haver algumas vantagens em usar aria-labelledby em vez de aria-label:
- Se alguém estiver usando um serviço de tradução para traduzir o conteúdo da sua página, o texto em um atributo
aria-labelpode não ser sempre traduzido. - Usar
aria-labelledbytambém pode ajudar a evitar uma incompatibilidade entre o texto do rótulo visível e o rótulo invisível para usuários de leitores de tela, já que atualizar o texto visível atualizará automaticamente o rótulo invisível. aria-labelledbypode tornar muito mais fácil criar programaticamente rótulos invisíveis complexos consistindo em múltiplas fontes de texto.
aria-label e aria-labelledby em um elemento ao mesmo tempo. Neste caso, o rótulo invisível para leitores de tela será sempre determinado por aria-labelledby e aria-label será completamente ignorado.Este módulo não possui perguntas. Marque como concluído.