Exemplos de aria-label: quando usar e 20 correções

Exemplos de ARIA label

Exemplos de aria-label: 20 correções de antes e depois | We.Inc

Quando usar aria-label, aria-labelledby, aria-describedby ou simplesmente texto visível, com 20 trechos de antes e depois, erros comuns e um verificador de nome acessível.

Use aria-label apenas quando um elemento não tem nenhum texto visível que o nomeie, como um botão só com ícone: <button aria-label="Close dialog">. Se um texto visível já o nomeia, confie nele ou aponte aria-labelledby para ele. aria-describedby acrescenta uma ajuda extra, lida depois do nome. Os rótulos nativos do HTML sempre vêm primeiro.

Qual recurso de nomeação usar

Todo botão, link, campo e landmark precisa de um nome acessível, a frase curta que a tecnologia assistiva fala quando o foco chega ali. Esta página mostra como esse nome é calculado, vinte padrões com problema ao lado das versões corrigidas e um verificador que lê um trecho colado e informa o nome que ele receberia.

Perguntas frequentes

Qual é a diferença entre aria-label e aria-labelledby?

aria-label guarda o nome como uma string dentro do atributo. aria-labelledby aponta para um ou mais ids de elementos e monta o nome a partir do texto deles, então o nome sempre corresponde ao que os usuários que enxergam veem. Quando os dois estão presentes, aria-labelledby vence.

aria-label substitui o texto visível de um botão?

Sim. Na maioria dos controles o valor de aria-label se sobrepõe ao conteúdo de texto, então um botão que mostra Comprar com aria-label="Add to basket" é anunciado como Add to basket. Essa diferença confunde quem usa controle por voz e quebra o critério WCAG 2.5.3 Label in Name.

Quando devo usar aria-describedby?

Use para informações de apoio que não são o nome: uma regra de senha, uma dica de formato ou uma mensagem de erro. Os leitores de tela geralmente leem a descrição depois do nome e do papel, muitas vezes após uma pequena pausa, e alguns usuários desativam as descrições.

Posso colocar aria-label em uma div?

Só se a div tiver um role que permita nomeação, como role="region" ou role="dialog". Em uma div ou span genérica, o ARIA proíbe a nomeação e a maioria dos leitores de tela ignora o atributo.

Imagens precisam de aria-label?

Não. As imagens recebem o nome do atributo alt. Use alt="" para imagens decorativas, assim elas são puladas. aria-label em um img funciona, mas não acrescenta nada que alt não faça.

A primeira regra do ARIA

Como os navegadores calculam o nome

Nomes, descrições e anúncios

aria-label, aria-labelledby, aria-describedby ou texto visível

Percorra esta lista de cima para baixo e pare na primeira opção que servir. O texto visível vem primeiro porque atende quem enxerga, quem usa leitor de tela e quem usa controle por voz com uma única string.

As quatro formas de dar um nome ou uma descrição a um elemento

20 trechos de antes e depois

Cada trecho mostra o padrão com problema, a correção e, aproximadamente, o que um leitor de tela fala depois da correção. Os anúncios variam conforme o produto e as configurações.

Botão de fechar só com ícone

Sem nome, o botão normalmente é anunciado apenas como botão. Oculte o desenho para que ele não seja lido como uma imagem sem rótulo. Depois da correção, normalmente é anunciado como: Fechar, botão.

Link de ícone para um perfil social

Um link vazio muitas vezes é lido como a sua URL, letra por letra em algumas configurações. Depois da correção, normalmente é anunciado como: Nossa loja no Instagram, link.

Ícone com texto oculto em vez de aria-label

Um texto real em um span visualmente oculto sobrevive às ferramentas de tradução, que tendem a pular valores de atributos. Depois da correção, normalmente é anunciado como: Carrinho, 3 itens, link.

Dois landmarks de navegação

Com dois elementos nav sem nome, a lista de landmarks mostra navegação duas vezes e ninguém consegue distingui-los. Depois da correção, normalmente é anunciado como: Principal, navegação.

Campo de busca só com placeholder

O texto do placeholder é um nome reserva fraco e some assim que a pessoa digita. Depois da correção, normalmente é anunciado como: Pesquisar produtos, campo de busca.

Campo de formulário com rótulo visível

Um elemento label de verdade também torna a legenda clicável, o que aumenta a área de toque. Depois da correção, normalmente é anunciado como: E-mail, campo de edição.

Dica e erro com aria-describedby

As descrições são unidas na ordem em que os ids são listados. Depois da correção, normalmente é anunciado como: Senha, campo de edição seguro, entrada inválida, Pelo menos 12 caracteres, Muito curta....

Grupo de botões de opção

O legend nomeia o grupo, então cada opção faz sentido sozinha. Depois da correção, normalmente é anunciado como: Velocidade de entrega, grupo, Padrão, botão de opção, 1 de 2.

Diálogo modal nomeado pelo seu título

Apontar para o título visível mantém o título falado e o exibido idênticos. Abra com showModal() para ter um modal de verdade. Depois da correção, normalmente é anunciado como: Excluir projeto?, diálogo, Isso remove todas as 14 páginas..

Botão de alternância com aria-pressed

Mantenha o nome fixo e deixe o estado mudar. Não troque também o rótulo para Desfazer negrito. Depois da correção, normalmente é anunciado como: Negrito, botão de alternância, pressionado.

Alternância com ícone: silenciar

Mudar o rótulo e um estado pressionado ao mesmo tempo soa como uma dupla negação. Depois da correção, normalmente é anunciado como: Silenciar, botão de alternância, não pressionado.

Botão de menu com aria-expanded

O script precisa alternar aria-expanded e o atributo hidden juntos. Depois da correção, normalmente é anunciado como: Produtos, botão, recolhido.

Botão de menu hambúrguer

Uma div clicável não recebe foco nem é anunciada como controle. Depois da correção, normalmente é anunciado como: Menu, botão, recolhido.

Imagens informativas e decorativas

Escreva o que a imagem conta ao leitor. Um alt vazio marca a decoração para que ela seja pulada. Depois da correção, normalmente é anunciado como: As vendas subiram de 40 para 65 pedidos por semana em maio, imagem.

SVG informativo isolado

role=img transforma o SVG em um único objeto em vez de uma árvore de formas. Depois da correção, normalmente é anunciado como: Northgate Bakery, imagem.

Tabela de dados com legenda

Uma legenda visível nomeia a tabela para todos. Use aria-labelledby só quando o título fica fora dela. Depois da correção, normalmente é anunciado como: Horário de funcionamento, tabela, 2 colunas, 8 linhas.

Mensagem de status em uma live region

A região precisa existir antes de o texto mudar, senão muitos leitores perdem a atualização. Depois da correção, normalmente é anunciado como: Salvo (falado sem mover o foco).

Região nomeada para um carrossel

aria-roledescription muda o papel falado. Use com moderação e nunca em elementos genéricos. Depois da correção, normalmente é anunciado como: Fotos de clientes, carrossel.

Links Leia mais repetidos

Um texto de link único ajuda todos que percorrem uma lista de links. Começar com as palavras visíveis mantém o Label in Name intacto. Depois da correção, normalmente é anunciado como: Leia mais sobre o horário de inverno, link.

Rótulo que não corresponde ao texto visível

Quem diz clicar em Enviar no controle por voz precisa acertar este botão, então a palavra visível precisa estar no nome. Depois da correção, normalmente é anunciado como: Enviar, botão.

Erros comuns

Erros encontrados em auditorias e suas correções

Lista de testes

Confira os nomes antes de publicar

Verificador de nome acessível (simplificado)

Cole um trecho. O verificador analisa o código no seu navegador sem executar nenhum script, encontra o primeiro elemento interativo ou nomeado e calcula um nome usando uma versão reduzida da ordem oficial. Ele pula várias etapas da especificação, então trate o resultado como uma dica rápida e confirme nas ferramentas de desenvolvedor ou em um leitor de tela.

Botão de ícone

Botão de ícone corrigido

Campo com rótulo

Rótulo divergente

Diálogo com labelledby

Trecho HTML

Nenhum botão, link, campo, landmark, imagem ou tabela encontrado no trecho.

Elemento

Nome calculado

(vazio)

Origem do nome

Avisos

Nenhum encontrado por esta verificação simplificada.

elemento label

conteúdo de texto

title do svg

title (reserva fraca)

placeholder (reserva fraca)

aria-labelledby aponta para o id inexistente "{id}".

aria-label em uma div ou span sem role é ignorado pela maioria dos leitores de tela.

A imagem não tem atributo alt.

O placeholder é o único nome. Adicione um rótulo.

Nenhum nome acessível encontrado.

O texto visível "{visible}" não está no início do nome (WCAG 2.5.3 Label in Name).

O nome termina com uma palavra de papel, então o papel será falado duas vezes.

O próprio elemento está com aria-hidden.

Comece grátis · Sem cartão de crédito

Relacionados: Guias

Produto

Para quem é

Recursos

Recursos

Empresa

Mapa do site