Sobre esta regra de acessibilidade
O role meter no ARIA representa uma medição escalar dentro de um intervalo conhecido — pense num medidor que mostra um valor como temperatura do CPU, força da palavra-passe ou capacidade de armazenamento. Quando um leitor de ecrã encontra um elemento com role="meter", anuncia o elemento como um medidor, mas sem um nome acessível, não pode transmitir o que está a ser medido. O utilizador ouve algo como “medidor” sem contexto, que é efetivamente sem significado.
Este problema afeta principalmente utilizadores que são cegos ou têm baixa visão e dependem de leitores de ecrã, bem como utilizadores com deficiências motoras que podem navegar através de tecnologias assistivas. Relaciona-se com o Critério de Sucesso 1.1.1 das WCAG 2.0/2.1/2.2: Conteúdo Não Textual (Nível A), que exige que todo o conteúdo não textual tenha uma alternativa textual que sirva um propósito equivalente. Um medidor sem nome falha em fornecer esta alternativa textual.
Como corrigir
Garanta que cada elemento com role="meter" tem um nome acessível claro e descritivo usando um destes métodos:
-
aria-label— Adicione texto descritivo diretamente ao elemento. -
aria-labelledby— Referencie outro elemento visível que contenha o texto da etiqueta. O elemento referenciado deve existir e conter texto não vazio. -
title— Use o atributotitlecomo método de nomeação de recurso (emboraaria-labelouaria-labelledbysejam geralmente preferidos).
O nome deve descrever claramente o que o medidor está a medir para que os utilizadores compreendam o seu propósito no contexto.
Exemplos
Incorreto: Medidor sem nome acessível
O seguinte medidor não tem qualquer nome. Um leitor de ecrã anunciará como um medidor mas não pode dizer ao utilizador o que mede.
<div role="meter" aria-valuemin="0" aria-valuemax="100" aria-valuenow="75"></div>
Incorreto: aria-label vazio
Um aria-label vazio é equivalente a não ter nome.
<div role="meter" aria-label="" aria-valuemin="0" aria-valuemax="100" aria-valuenow="75"></div>
Incorreto: aria-labelledby a referenciar um elemento inexistente ou vazio
Se o elemento referenciado não existir ou não tiver conteúdo textual, o medidor ainda carece de um nome acessível.
<div role="meter" aria-labelledby="nonexistent" aria-valuemin="0" aria-valuemax="100" aria-valuenow="75"></div>
<div role="meter" aria-labelledby="empty-label" aria-valuemin="0" aria-valuemax="100" aria-valuenow="75"></div>
<div id="empty-label"></div>
Correto: Usando aria-label
<div role="meter" aria-label="Utilização do disco" aria-valuemin="0" aria-valuemax="100" aria-valuenow="75"></div>
Correto: Usando aria-labelledby
<span id="meter-label">Nível da bateria</span>
<div role="meter" aria-labelledby="meter-label" aria-valuemin="0" aria-valuemax="100" aria-valuenow="42"></div>
Correto: Usando o atributo title
<div role="meter" title="Intensidade do sinal" aria-valuemin="0" aria-valuemax="5" aria-valuenow="3"></div>
Correto: Usando o elemento nativo <meter> com um <label>
Quando possível, prefira o elemento HTML nativo <meter>, que tem semântica integrada e pode ser associado a um <label>.
<label for="fuel">Nível de combustível</label>
<meter id="fuel" min="0" max="100" value="68">68%</meter>
Learn more:
Ajude-nos a melhorar os nossos guias
Detecte problemas de acessibilidade automaticamente
O Rocket Validator examina milhares de páginas com Axe Core e o W3C Validator, encontrando problemas de acessibilidade em todo o seu site.