1.1.1 Conteúdo não textual
Toda imagem, ícone ou outro elemento não textual deve incluir uma descrição em texto que transmita a mesma informação ou função.
Resolvendo funções de apresentação e estados ocultos em conteúdo decorativo
Gráficos decorativos e conteúdo não textual que não transmitem informações relevantes devem ser ocultados das tecnologias assistivas, como leitores de tela. Isso permite que os usuários de tecnologias assistivas se concentrem no conteúdo relevante.
No código HTML, identifique o conteúdo decorativo que não fornece informações ou funcionalidades relevantes.
Para elementos
<svg>decorativos, adicione o atributoaria-hidden="true"ao elemento<svg>.Para outros conteúdos decorativos não textuais, como um
<img>usado apenas como borda, um<object>usado apenas para estilização ou um<area>usado para efeitos visuais, adicione o atributorole="presentation".Se o elemento decorativo não textual já tiver um atributo
role, substitua-o porrole="presentation".
Exemplo
!-- Incorrect -->
<svg width="100" height="100">
<circle
cx="50"
cy="50"
r="40"
stroke="black"
stroke-width="3"
fill="red"
/>
</svg>
<!-- Correct -->
<svg width="100" height="100" aria-hidden="true">
<circle
cx="50"
cy="50"
r="40"
stroke="black"
stroke-width="3"
fill="red"
/>
</svg>
Resolvendo atributos alt ausentes em conteúdo não textual
Todo conteúdo não textual, como imagens, vídeos e botões, deve incluir texto alternativo que forneça uma identificação descritiva do conteúdo.
No seu código HTML, localize os elementos de conteúdo não textual (por exemplo,
<img>,<object>,<area>) que não têm o atributoalt.Adicione um atributo
altao elemento.Insira um texto alternativo descritivo no atributo
altque transmita seu significado.
Observação: Para imagens decorativas, usealt=""(texto alternativo vazio) para indicar que a imagem não transmite conteúdo relevante.
Exemplo
<!-- Incorrect -->
<img src="logo.png">
<!-- Correct -->
<img src="logo.png" alt="Logo of Company A with a stylized tree design">Resolvendo texto alternativo ausente em botões de imagem
Botões de imagem precisam de texto alternativo descritivo para garantir que usuários com deficiência visual entendam a finalidade do botão ao navegar pela página.
No seu código HTML, localize o elemento
<img>dentro de um elemento<button>ou<input>.Dentro do elemento
<img>, localize o atributoalt.Adicione uma descrição clara e concisa da função do botão no atributo
alt.
Exemplo
<-- Incorrect -->
<button><img src="submit-button.png" alt=""></button>
<-- Correct -->
<button><img src="submit-button.png" alt="Submit form"></button>Resolvendo problemas de atributo aria-labelledby ausente
O uso do atributo aria-labelledby garante que tecnologias assistivas, como leitores de tela, possam ler corretamente os rótulos do conteúdo, ajudando os usuários a entender melhor o contexto do elemento.
No seu código HTML, localize o elemento que precisa de rótulo (por exemplo,
<img>,<object>,<area>).Dentro do elemento, adicione o atributo
aria-labelledby.No atributo
aria-labelledby, insira um nome de rótulo que forneça uma descrição para o elemento.
Observação: O nome do rótulo deve transmitir o mesmo significado que o rótulo do elemento correspondente que descreve o conteúdo da imagem.
Exemplo
<!-- Incorrect -->
<img src="chart.png" aria-labelledby="nonexistentLabel">
<!-- Correct -->
<img src="chart.png" aria-labelledby="chartTitle">
<h2 id="chartTitle">Sales Data Chart</h2>Resolvendo problemas de título ausente
O uso do atributo title garante que tecnologias assistivas, como leitores de tela, possam ler o conteúdo com um título adequado.
No seu código HTML, localize o elemento que precisa de rótulo (por exemplo,
<img>,<object>).Dentro do elemento, adicione o atributo
title.No atributo
title, insira um título descritivo para o seu elemento.
Exemplo
<!-- Incorrect -->
<object data="document.pdf" type="application/pdf"></object>
<!-- Correct -->
<object data="document.pdf" type="application/pdf" title="Annual Financial Report 2023"></object>Resolvendo nomes acessíveis ausentes em gráficos relevantes
Adicione nomes acessíveis a elementos SVG para fornecer alternativas em texto, de modo que usuários que dependem de leitores de tela ou tecnologias assistivas possam entender os gráficos.
No HTML, localize o elemento
<svg>comrole="img".
Certifique-se de que os elementos <svg> relevantes incluam uma função ARIA (por exemplo, role="img") antes de adicionar o atributo aria-label.
Dentro desse elemento
<svg>, adicione um atributoaria-label.Defina
aria-labelcomo um rótulo conciso e descritivo para o gráfico.
Exemplo
<!-- Incorrect -->
<svg role="img" width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
<!-- Correct -->
<svg role="img" width="100" height="100" aria-label="Red circle representing a stop sign">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>Resolvendo nomes acessíveis ausentes em gráficos decorativos
Adicionar a função de apresentação aos seus gráficos decorativos garante que tecnologias assistivas, como leitores de tela, possam ignorar conteúdo desnecessário e se concentrar na leitura do que é relevante.
No código HTML, localize o elemento
<svg>.Dentro do elemento
<svg>, adicione o atributorole="presentation".
Exemplo
<!-- Incorrect -->
<svg width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>
<!-- Correct -->
<svg width="100" height="100" role="presentation">
<circle cx="50" cy="50" r="40" stroke="black" stroke-width="3" fill="red" />
</svg>Resolvendo texto alternativo ausente em elementos com a função img
O texto alternativo em elementos com a função img permite que os leitores de tela descrevam a imagem, ajudando os usuários a entender sua finalidade e seu conteúdo. Adicionar um atributo aria-label ou aria-labelledby fornece aos usuários as informações para entender a finalidade ou o conteúdo da imagem.
- No seu código HTML, localize o elemento HTML com
role="img".
Dentro do elemento, adicione um atributoaria-labelouaria-labelledby. No atributo, insira uma descrição para a imagem.
Exemplo
<!-- Incorrect -->
<svg role="img">
<!-- SVG content -->
</svg>
<!-- Correct -->
<svg role="img" aria-label="Company logo">
<!-- SVG content -->
</svg>Resolvendo títulos redundantes em imagens com texto alternativo vazio
Quando uma imagem é marcada com texto alternativo vazio (alt=""), a intenção é que ela seja ignorada pelas tecnologias assistivas. Adicionar um atributo title nesse caso cria informações conflitantes, pois os leitores de tela ainda podem anunciar o título, anulando o propósito de marcar a imagem como decorativa.
No código HTML, localize o elemento
<img>.Se a imagem for puramente decorativa, verifique se ela inclui um
altvazio e remova qualquer atributotitle.
Exemplo
<!-- Incorrect -->
<img src="decorative-divider.png" alt="" title="Section divider">
<!-- Correct -->
<img src="decorative-divider.png" alt="">Resolvendo texto alternativo não descritivo em imagens
Todo conteúdo não textual, como imagens, vídeos e botões, deve incluir texto alternativo que forneça uma identificação descritiva do conteúdo.
No código HTML, localize o elemento
<img>.Dentro do elemento
<img>, localize o atributoalt.Substitua a descrição existente por uma frase mais descritiva que transmita a finalidade ou o conteúdo da imagem.
Observação: Se a imagem for decorativa e não transmitir informações relevantes, substitua a descrição atual do atributo poralt=""ourole="presentation"para ocultá-la dos leitores de tela.
Exemplo
<!-- Incorrect -->
<img src="company-logo.png" alt="Logo">
<!-- Correct -->
<img src="company-logo.png" alt="White House logo, representing the official symbol">
1.2.1 Apenas áudio e apenas vídeo (pré-gravado)
Qualquer áudio ou vídeo pré-gravado sem elementos visuais ou sem som deve incluir uma transcrição em texto que forneça as mesmas informações.
Resolvendo problemas de transcrição de áudio ausente
Fornecer uma transcrição em texto do conteúdo de áudio garante que todos os usuários, inclusive os surdos ou com deficiência auditiva, possam acessar as mesmas informações.
No código HTML, localize o elemento
<audio>.Após o elemento
<audio>, adicione um elemento<p>.Dentro do elemento
<p>, insira a transcrição completa do conteúdo de áudio em forma de texto.
Exemplo
<!-- Incorrect -->
<audio controls><source src="interview.mp3" type="audio/mpeg">Your browser does not support the audio element.</audio>
<!-- Correct -->
<audio src="interview.mp3" type="audio/mpeg" your="Your" browser="browser" does="does" not="not" support="support" the="the" audio="audio">
<p>Transcript: In this interview, Dr. Smith explains the importance of regular exercise. She discusses how physical activity can improve both mental and physical health, reduce the risk of chronic diseases, and enhance overall quality of life. She also shares tips for staying motivated and setting realistic fitness goals.</p>1.2.2 Legendas (pré-gravado)
Todos os vídeos pré-gravados com som devem incluir legendas que exibam na tela as palavras faladas e os sons importantes.
Resolvendo legendas ausentes em conteúdo de vídeo
Fornecer legendas para vídeos pré-gravados garante que usuários surdos ou com deficiência auditiva ainda possam entender o conteúdo.
No código HTML, localize o elemento
<video>.Dentro do elemento
<video>, adicione um elemento<track>.-
No elemento
<track>, adicione os seguintes atributos:Defina o atributo
kindcomo"captions"(por exemplo,kind="captions").Defina o atributo
srccomo o caminho do arquivo de legendas (por exemplo,captions.vtt).Defina o atributo
srclangcomo o código de idioma apropriado (por exemplo,en).Defina o atributo
labelpara descrever o idioma do conteúdo do vídeo (por exemplo,"English").
Exemplo
<!-- Incorrect -->
<video src="training-overview.mp4" controls>
</video>
<!-- Correct -->
<video src="training-overview.mp4" controls>
<track src="training-overview-en.vtt" kind="captions" srclang="en" label="English">
</video>
Resolvendo legendas ausentes em vídeos incorporados do Vimeo
As legendas devem estar disponíveis nos vídeos do Vimeo para garantir a acessibilidade a usuários surdos ou com deficiência auditiva. O Vimeo permite adicionar legendas pelas configurações do vídeo.
Abra o vídeo em vimeo.com.
Faça login com a conta proprietária do vídeo.
Acesse Configurações.
Selecione a guia Distribuição, depois abra Legendas (ou Avançado > Legendas em layouts mais antigos).
Encontre a seção Legendas/CC.
Faça upload de um arquivo de legendas .vtt ou .srt.
Salve suas alterações e confirme se as legendas estão ativadas visualizando o vídeo.
Observação: As legendas serão exibidas automaticamente no <iframe> incorporado se estiverem ativadas no Vimeo.
Resolvendo legendas ausentes em vídeos incorporados do YouTube
Os vídeos do YouTube devem incluir legendas para que usuários surdos ou com deficiência auditiva possam acessar o conteúdo falado. O YouTube oferece opções para envio manual de legendas ou legendagem automática.
Abra o vídeo em youtube.com com a conta proprietária do vídeo.
Acesse o YouTube Studio e selecione o vídeo que deseja editar.
Clique em Legendas no menu à esquerda.
Escolha o idioma das suas legendas.
-
Clique em Adicionar e selecione uma das seguintes opções:
Fazer upload de arquivo (para arquivos .vtt ou .srt)
Sincronização automática (cole a transcrição completa e deixe o YouTube definir a sincronização)
Digitar manualmente
Revise e publique suas legendas.
1.3.1 Informações e relações
Qualquer informação mostrada por meio de layout, formatação ou estrutura visual também deve estar disponível em texto ou codificada, para que as tecnologias assistivas possam compreendê-la.
Resolvendo funções de marco ARIA ausentes na estrutura da página
As funções de marco ajudam os usuários de leitores de tela a entender o layout da página e a navegar rapidamente até as seções principais.
No seu código HTML, localize elementos estruturais (por exemplo,
<div>,<section>,<form>).Adicione a função de marco ARIA apropriada usando o atributo
role(por exemplo,role="main",role="navigation",role="form"). Saiba mais sobre a função de marco apropriada.
Observação: Adicione funções ARIA somente se o elemento ainda não tiver uma função de marco incorporada (por exemplo,<nav>já atua comonavigation).
Exemplo
<!-- Incorrect -->
<div id="main-content">
<p>Welcome to our website.</p>
</div>
<!-- Correct -->
<div id="main-content" role="main">
<p>Welcome to our website.</p>
</div>
Resolvendo fieldset ou grupo ausente em campos com o mesmo nome
Botões de opção ou caixas de seleção que compartilham o mesmo nome devem ser agrupados para que a relação entre eles fique clara. Isso ajuda usuários de leitores de tela a entender que os campos pertencem ao mesmo conjunto.
No código HTML, localize os campos de botão de opção ou caixa de seleção que compartilham o mesmo atributo
name.Envolva os campos relacionados em um elemento
<fieldset>.Adicione um
<legend>como primeiro elemento dentro do<fieldset>para descrever o grupo.
Como alternativa, envolva os campos em um contêiner com role="group" ou role="radiogroup" e forneça um rótulo usando aria-labelledby ou aria-label.
Exemplo
<!-- Incorrect -->
<label>
<input type="checkbox" name="city"> Toronto
</label>
<label>
<input type="checkbox" name="city"> London
</label>
<!-- Correct -->
<fieldset>
<legend>Select your location</legend>
<label>
<input type="checkbox" name="city"> Toronto
</label>
<label>
<input type="checkbox" name="city"> London
</label>
</fieldset>
<!-- Correct -->
<div role="group" aria-label="Select your location">
<label>
<input type="checkbox" name="city"> Toronto
</label>
<label>
<input type="checkbox" name="city"> London
</label>
</div>
Resolvendo <li> sem elemento pai
Garantir que os itens de lista sejam colocados dentro de um elemento de lista ajuda os leitores de tela a identificar corretamente o conteúdo agrupado.
No código HTML, localize os elementos
<li>que não estão dentro de um<ul>ou<ol>.Envolva os elementos
<li>em um<ul>(para marcadores) ou<ol>(para lista numerada).
Exemplo
<!-- Incorrect --> <li>First item</li> <li>Second item</li> <!-- Correct --> <ul> <li>First item</li> <li>Second item</li> </ul>
Resolvendo problemas de estrutura em listas de descrição (DL)
As listas de descrição são usadas para mostrar pares de informações relacionadas, como um termo e sua explicação. Quando a lista não está estruturada corretamente, os leitores de tela podem ler o conteúdo fora de ordem ou confundir os usuários.
No seu código HTML, localize os elementos
<dl>sinalizados.Dentro do
<dl>, coloque o termo dentro de um elemento<dt>.Dentro de um elemento
<dt>, coloque a descrição dentro de um elemento<dd>.
Observação: Um <dt> deve conter pelo menos um <dd>.
Remova quaisquer outros elementos colocados diretamente dentro do
<dl>, a menos que estejam dentro de um<dt>ou<dd>.
Exemplo
<!-- Incorrect --> <dl> <p>HTML</p> <p>A markup language for web pages.</p> </dl> <!-- Correct --> <dl> <dt>HTML</dt> <dd>A markup language for web pages.</dd> </dl>
Resolvendo termos de definição (DT) e descrições de definição (DD) não contidos em uma lista de descrição (DL)
Os termos de definição (<dt>) e as descrições de definição (<dd>) devem estar sempre contidos em uma lista de descrição (<dl>). Quando elementos <dt> ou <dd> são usados fora de um <dl>, os leitores de tela podem ler o conteúdo fora de ordem ou confundir os usuários.
No seu código HTML, localize os elementos
<dt>ou<dd>sinalizados.Verifique se cada
<dt>e<dd>está dentro de um elemento<dl>. Se o conteúdo não fizer parte de uma lista de descrição, substitua<dt>e<dd>por um elemento apropriado (por exemplo,<h2>,<h3>,<p>).
Exemplo
<!-- Incorrect --> <dt>CSS</dt> <dd>A language used to style web pages.</dd> <!-- Correct --> <dl> <dt>CSS</dt> <dd>A language used to style web pages.</dd> </dl>
Resolvendo o uso incorreto do atributo scope em tabelas
Quando uma tabela usa o atributo scope, ele deve ser aplicado somente às células de cabeçalho (<th>) para definir com clareza a quais células de dados elas se relacionam. Valores de scope incorretos ou ausentes podem impedir que as tecnologias assistivas associem corretamente os cabeçalhos aos dados da tabela.
-
No seu código HTML, localize o atributo
scopeou os elementos de tabela sinalizados. -
Atualize o atributo
scopepara garantir que:- O atributo
scopeseja aplicado somente a elementos<th>. - Cada
<th>tenha um valor de scope apropriado, comocol,row,colgroupourowgroup. -
O valor no seu atributo
scopereflita com precisão a estrutura e as relações da tabela.
- O atributo
Exemplo
<!-- Incorrect -->
<table>
<tr>
<th>Name</th>
<th>Score</th>
</tr>
<tr>
<th>Alice</th>
<td>95</td>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Score</th>
</tr>
<tr>
<th scope="row">Alice</th>
<td>95</td>
</tr>
</table>
<!-- Incorrect -->
<table>
<tr>
<th scope="column1">Name</th>
<th scope="column2">Score</th>
</tr>
<tr>
<th scope="row1">Alice</th>
<td>95</td>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Score</th>
</tr>
<tr>
<th scope="row">Alice</th>
<td>95</td>
</tr>
</table>
Resolvendo o uso incorreto do atributo headers em vez de scope em tabelas
As tabelas devem conter células de dados de tabela (<td>) descritas por cabeçalhos de tabela (<th>). Tabelas que incluem cabeçalhos, mas não células de dados, não oferecem relações significativas para as tecnologias assistivas e podem causar confusão para os usuários de leitores de tela.
No seu código HTML, localize os elementos de tabela sinalizados que contêm elementos <th>, mas nenhum elemento <td> correspondente.
Atualize a estrutura da tabela para garantir que:
Cada tabela inclua um ou mais elementos
<td>contendo dados.Os elementos
<th>sejam usados somente quando descreverem dados reais da tabela.Tabelas usadas apenas para layout ou apresentação não incluam elementos
<th>.Se a tabela não contiver dados, remova-a ou substitua-a por uma marcação que não seja de tabela.
Exemplo
<!-- Incorrect -->
<table>
<tr>
<th scope="col">Name</th>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
</tr>
<tr>
<td>John</td>
</tr>
</table>
Resolvendo o agrupamento ARIA incorreto para a função “group”
O uso adequado das funções ARIA ajuda os leitores de tela a entender a estrutura da página, facilitando a navegação e a interação de usuários com deficiência com o conteúdo.
No código HTML, localize o elemento com
role="group".Dentro do elemento, inclua pelo menos um elemento de controle interativo (por exemplo,
<input>,<textarea>ou<select>).
Observação: Saiba mais sobre qual controle interativo você deve incluir. Se não houver controles interativos adequados, considere substituirrole="group"por uma função ARIA ou uma estrutura mais apropriada.
Exemplo
<!-- Incorrect -->
<div role="group">
<p>This is a group with no interactive elements.</p>
</div>
<!-- Correct -->
<div role="group">
<label for="username">Username:</label>
<input id="username" type="text">
</div>
Resolvendo o agrupamento ARIA incorreto para a função “radiogroup”
O uso adequado das funções ARIA ajuda os leitores de tela a entender a estrutura da página, facilitando a navegação e a interação de usuários com deficiência com o conteúdo.
No código HTML, localize o elemento com
role="radiogroup".Dentro do elemento, inclua pelo menos um elemento de botão de opção (por exemplo,
<input type="radio">ourole="radio").
Exemplo
<!-- Incorrect -->
<div role="radiogroup">
<p>Select a delivery method:</p>
</div>
<!-- Correct -->
<div role="radiogroup" aria-label="Select a delivery method">
<label><input type="radio" name="delivery" value="standard"> Standard </label><br>
<label><input type="radio" name="delivery" value="express"> Express </label><br>
<label><input type="radio" name="delivery" value="overnight"> Overnight</label>
</div>
Resolvendo o agrupamento ARIA incorreto para a função “checkbox”
O uso adequado das funções ARIA ajuda os leitores de tela a entender a estrutura da página, facilitando a navegação e a interação de usuários com deficiência com o conteúdo.
No código HTML, localize
<input type="checkbox">ou um elemento comrole="checkbox".Envolva as caixas de seleção em um contêiner e atribua a ele o
role="group".Adicione um atributo
aria-labelledbyouaria-labelao elemento comrole="checkbox"para descrever a finalidade do grupo de caixas de seleção.
Exemplo
<!-- Incorrect -->
<div><label><input type="checkbox" id="news"> Newsletter</label><br>
<label><input type="checkbox" id="updates"> Product Updates</label><br>
<label><input type="checkbox" id="offers"> Special Offers</label>
</div>
<!-- Correct -->
<div role="group" aria-labelledby="emailPref">
<p id="emailPrefsLabel">Which types of emails would you like to receive?</p>
<label><input type="checkbox" id="news"> Newsletter</label><br>
<label><input type="checkbox" id="updates"> Product Updates</label><br>
<label><input type="checkbox" id="offers"> Special Offers</label>
</div>
Resolvendo o agrupamento ARIA incorreto para a função “radio”
O uso adequado das funções ARIA ajuda os leitores de tela a entender a estrutura da página, facilitando a navegação e a interação de usuários com deficiência com o conteúdo.
No código HTML, localize
<input type="radio">ou um elemento comrole="radio".Agrupe os botões de opção dentro do elemento com
role="radiogroup".Adicione um atributo
aria-labelledbyouaria-labelao elemento para descrever a finalidade do grupo de botões de opção.
Exemplo
<!-- Incorrect -->
<label><input type="radio" name="contact"> Email</label><br>
<label><input type="radio" name="contact"> Phone</label><br>
<label><input type="radio" name="contact"> Text Message</label>
</div>
<!-- Correct -->
<div role="radiogroup" aria-labelledby="contactMethod">
<p id="contactMethodLabel">How would you like us to contact you?</p>
<label><input type="radio" name="contact"> Email</label><br>
<label><input type="radio" name="contact"> Phone</label><br>
<label><input type="radio" name="contact"> Text Message</label>
</div>
Resolvendo a ausência de aria-level em funções de título
As funções ARIA de título devem incluir um nível de título definido para maior clareza.
No código HTML, localize o elemento com o atributo
role="heading".Depois do atributo
role, adicione o atributoaria-levelcom um valor de 1 a 6 (por exemplo,aria-level="2").
Exemplo
<!-- Incorrect -->
<div role="heading">Subsection Title</div>
<!-- Correct -->
<div role="heading" aria-level="2">Subsection Title</div>
Resolvendo a ausência de cabeçalhos de tabela
Os cabeçalhos de tabela ajudam os leitores de tela a entender o que cada coluna ou linha significa. Se uma tabela não tiver cabeçalhos, as tecnologias assistivas não conseguem fornecer aos usuários o contexto correto.
No seu código HTML, localize o elemento
<table>e identifique a primeira linha. Essa linha deve definir os títulos da tabela (por exemplo, “Nome”, “Idade” etc.).Se a primeira linha usar elementos
<td>(dados de tabela), altere cada<td>para um<th>(cabeçalho de tabela) para indicar que essas células são cabeçalhos.Adicione
scope="col"a cada elemento<th>se for um cabeçalho de coluna, ouscope="row"se for um cabeçalho de linha.
Exemplo
<!-- Incorrect -->
<table>
<tr>
<td>Name</td>
<td>Age</td>
</tr>
<tr>
<td>Ava</td>
<td>25</td>
</tr>
</table>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
</tr>
<tr>
<td>Ava</td>
<td>25</td>
</tr>
</table>
Resolvendo a ausência de associações de células de dados em listas
As listas usadas para apresentar dados estruturados devem, em vez disso, usar uma tabela para que os leitores de tela possam associar claramente os dados aos títulos.
No código HTML, localize os elementos
<ul>e<ol>que apresentam dados com rótulos e valores.Substitua a estrutura
<ul>ou<ol>pelo elemento<table>.Adicione os elementos
<th>para os cabeçalhos e<td>para os valores.Dentro de
<th>, adicione o atributoscope="col"para indicar cabeçalhos de coluna.
Exemplo
<!-- Incorrect -->
<ul>
<li><strong>Name:</strong> Ava</li>
<li><strong>Age:</strong> 25</li>
</ul>
<!-- Correct -->
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
</tr>
<tr>
<td>Ava</td>
<td>25</td>
</tr>
</table>
Resolvendo a estrutura de lista incorreta
Garantir que os itens de lista estejam dentro de um elemento de lista ajuda os leitores de tela a identificar corretamente o conteúdo agrupado.
No código HTML, localize os elementos
<li>que não estão envolvidos por um<ul>ou<ol>.Envolva os elementos
<li>em um<ul>(para marcadores) ou em um<ol>(para lista numerada).
Exemplo
<!-- Incorrect -->
<li>First item</li>
<li>Second item</li>
<!-- Correct -->
<ul>
<li>First item</li>
<li>Second item</li>
</ul>Resolvendo atributos scope inválidos em cabeçalhos de tabela
O atributo scope conecta os cabeçalhos de tabela às células de dados. Usar valores incorretos ou omiti-los pode dificultar a interpretação das tabelas por usuários de leitores de tela.
No seu código HTML, localize o elemento
<th>com um valor de atributoscopeinválido ou ausente.-
Substitua ou adicione o valor de
scopede acordo com o tipo de cabeçalho:Use
scope="col"para cabeçalhos de coluna.Use
scope="row"para cabeçalhos de linha.
Observação: Para cabeçalhos de vários níveis, use rowgroup ou colgroup se o agrupamento se aplicar.
Exemplo
<!-- Incorrect -->
<th scope="column">Course</th>
<!-- Correct -->
<th scope="col">Course</th>Resolvendo a ausência de elemento pai para elementos de definição
Os termos de definição e suas descrições devem ser colocados dentro de uma lista de definição para que os leitores de tela identifiquem corretamente o conteúdo de definição.
No código HTML, localize o elemento
<dt>ou<dd>.Envolva o elemento
<dt>ou<dd>em um contêiner<dl>.
Exemplo
<!-- Incorrect -->
<dt>HTML</dt>
<dd>A markup language</dd>
<!-- Correct -->
<dl>
<dt>HTML</dt>
<dd>A markup language</dd>
</dl>Resolvendo a ausência de legend em fieldset
Todo <fieldset> deve começar com um <legend> que descreva a finalidade dos campos de formulário agrupados. Isso ajuda os usuários de leitores de tela a entender o propósito do grupo.
No código HTML, localize o elemento
<fieldset>no seu formulário.Adicione um
<legend>como o primeiro elemento dentro do elemento<fieldset>.Escreva um rótulo breve e descritivo dentro do
<legend>para descrever a finalidade do grupo de campos de formulário.
Exemplo
<!-- Incorrect --> <fieldset><label for="name">Name:</label><input id="name" type="text"></fieldset>
<!-- Correct --> <fieldset><legend>Personal Information</legend><label for="name">Name:</label><input id="name" type="text"></fieldset>
1.3.4 Orientação
Resolvendo problemas de orientação em aplicativos web da Apple para dispositivos móveis
Bloquear um aplicativo web na orientação retrato ou paisagem pode dificultar o acesso ao conteúdo para alguns usuários, especialmente aqueles que dependem de uma orientação específica do dispositivo. A meta tag apple-mobile-web-app-orientation deve ser definida de forma a permitir qualquer orientação.
- No seu código HTML, localize a tag
<meta>com o atributoname="apple-mobile-web-app-orientation". - Substitua o valor do atributo
content=”portrait”oucontent=”landscape”porcontent=”any”. - Salve suas alterações e recarregue a página.
Exemplo
<meta name="apple-mobile-web-app-orientation" content="any">
Resolvendo problemas de orientação na meta viewport
Configurações de viewport que bloqueiam a orientação da tela ou desativam o zoom podem dificultar a leitura e a interação dos usuários com o conteúdo. Permitir as orientações retrato e paisagem, bem como o zoom, dá flexibilidade aos usuários de acordo com seu dispositivo e suas necessidades pessoais.
- No seu código HTML, localize a tag
meta name="viewport". - Remova quaisquer atributos relacionados a restrições de orientação, como
orientation=portraitouorientation=landscape. - Remova quaisquer atributos que impeçam o zoom, como
maximum-scale=1ouuser-scalable=no. - Salve suas alterações e recarregue a página.
Exemplo
<!-- Incorrect -->
<meta name="viewport" content="width=device-width, maximum-scale=1, orientation=portrait">
<!-- Correct-->
<meta name="viewport" content="width=device-width">
Resolvendo problemas de orientação em CSS
As media queries de CSS que bloqueiam o conteúdo em retrato ou paisagem podem limitar a forma como os usuários interagem com uma página. Remover essas restrições permite que o conteúdo se adapte a ambas as orientações.
- No seu código CSS, localize as media queries que restringem a orientação, como:
@media screen and (orientation: portrait){ … }@media screen and (orientation: landscape) { … }
- Remova essas media queries específicas de orientação para permitir que o conteúdo se adapte livremente a ambas as orientações.
- Salve suas alterações e recarregue a página.
Exemplo:
<!-- Incorrect -->
@media screen and (orientation: portrait) {
.container {
width: 400px;
}
}
<!-- Correct-->
.container {
width: 400px;
1.3.5 Identificar a finalidade da entrada
Resolvendo valores de autocomplete inválidos em campos de formulário
Os campos de formulário precisam identificar com clareza o tipo de informação esperada. Isso ajuda os navegadores a preencher dados automaticamente e dá suporte a usuários com deficiências cognitivas ou motoras.
No seu código HTML, localize cada campo de formulário (por exemplo,
<input>,<textarea>ou<select>) com um valorautocompleteinválido.Atualize o atributo
autocompletecom o valor correto que corresponda aos dados esperados (por exemplo,"email","name","postal-code").
Observação: Saiba mais sobre uma lista de valores de autocomplete corretos.
Exemplo
<!-- Incorrect -->
<input type="text" name="full_name" autocomplete="fullname">
<!-- Correct-->
<input type="text" name="full_name" autocomplete="name">Resolvendo a ausência do atributo autocomplete em campos de formulário
Os campos de formulário devem incluir um atributo autocomplete para ajudar os navegadores a preencher dados automaticamente e melhorar a acessibilidade para usuários com deficiências cognitivas ou motoras.
No seu código HTML, localize cada campo de formulário (por exemplo,
<input>,<textarea>ou<select>) que coleta os dados do usuário.Dentro de cada elemento, adicione o atributo
autocompletecom o valor correto que corresponda aos dados esperados (por exemplo,"email","name","postal-code").
<!-- Incorrect --> <input type="text" name="full_name"> <!-- Correct--> <input type="text" name="full_name" autocomplete="name">
1.4.1 Uso de cor
Resolvendo a ausência de estilo em links
Quando a cor é a única forma de estilizar um link, alguns usuários, como os que têm daltonismo, podem não conseguir distingui-lo como link. Adicionar estilos extras, como sublinhado ou negrito, ajuda a destacar claramente os links.
No seu código HTML, localize o elemento
<a>.-
Adicione atributos ao elemento
<a>para incluir indicações visuais além da cor, como:text-decoration: underlinefont-weight: bold
border-bottom
Observação: Você pode usar classes CSS ou folhas de estilo externas para aplicar um estilo consistente a todos os links do seu site.
Exemplo
<!-- Incorrect -->
<a href="features.html" style="color: blue;">View Features</a>
<!-- Correct -->
<a href="features.html" style="color: blue; text-decoration: underline;">View Features</a>1.4.2 Controle de áudio
Resolvendo a ausência de controles de áudio em players de áudio
Quando o áudio é reproduzido automaticamente, os usuários precisam de uma forma de controlar a reprodução. Adicionar controles de áudio permite que os usuários pausem, parem ou ajustem o volume, o que é importante para a acessibilidade e para a experiência do usuário.
No código HTML, localize o elemento
<audio>.Adicione o atributo
controlsdiretamente ao elemento<audio>para ativar os controles integrados do navegador.
Observação: Verifique se o atributo não está vazio e não tem um valor.
Exemplo
<!-- Incorrect -->
<audio src="welcome-message.mp3" autoplay></audio>
<!-- Correct -->
<audio src="welcome-message.mp3" autoplay controls></audio>
1.4.3 Contraste (mínimo)
Resolvendo problemas de baixo contraste em textos
O baixo contraste de cores entre o texto e o plano de fundo pode dificultar a leitura do conteúdo, especialmente para usuários com deficiência visual. Melhorar o contraste ajuda todos a acessar o conteúdo com mais facilidade.
No código HTML, localize o elemento que contém texto (por exemplo,
p,h1,span,button).Verifique a cor atual do texto e a cor do plano de fundo usando uma ferramenta de contraste de cores, como o WebAIM Contrast Checker.
-
Verifique se a taxa de contraste atende ao seguinte:
No mínimo 4.5:1 para texto normal.
No mínimo 3.0:1 para texto de grande escala (18pt ou 14pt em negrito).
Se a taxa de contraste estiver muito baixa, ajuste a cor do texto ou a cor do plano de fundo até atingir a taxa de contraste mínima.
Exemplo
<!-- Incorrect -->
<p style="color: #888; background-color: #fff;">Schedule a demo</p>
<!-- Correct -->
<p style="color: #000; background-color: #fff;">Schedule a demo</p>1.4.6 Contraste (melhorado)
O texto deve ter um contraste mais alto em relação ao plano de fundo para facilitar a leitura por pessoas com baixa visão.
Resolvendo problemas de contraste melhorado em textos
Alguns usuários precisam de um contraste mais forte para ler o texto com conforto. O contraste melhorado garante que o texto continue legível mesmo em condições visuais difíceis.
No código HTML, localize o elemento que contém texto (por exemplo,
h2,div,label,input, etc.).Verifique a taxa de contraste entre a cor do texto e o plano de fundo usando uma ferramenta de verificação de contraste, como o WebAIM Contrast Checker.
-
Confirme se a taxa atende aos padrões melhorados:
No mínimo 7:1 para texto normal
No mínimo 4.5:1 para texto de grande escala (18pt ou 14pt em negrito)
Ajuste as cores conforme necessário para atender a esses níveis de contraste melhorado.
Exemplo
<!-- Incorrect -->
<h2 style="color: #aaa; background-color: #fff;">Explore Our Features</h2>
<!-- Correct -->
<h2 style="color: #000; background-color: #fff;">Explore Our Features</h2> demo</p>1.4.8 Apresentação visual
Resolvendo o espaçamento entre linhas insuficiente em parágrafos
Um bom espaçamento entre linhas e parágrafos melhora a legibilidade, especialmente para usuários com dislexia ou baixa visão.
Localize o elemento
<p>no código HTML.No CSS do elemento
<p>, localize a propriedade CSSline-heighte defina-a como pelo menos 1,5 vez o tamanho da fonte.
Observação: Você pode fazer isso usando estilos inline ou uma classe CSS.No CSS do elemento
<p>, localize a propriedade CSSmargin-bottome defina-a como pelo menos 1,5 vez a altura da linha (por exemplo,1.5em).
Exemplo
<!-- Incorrect -->
<p style="line-height: 1.2; margin-bottom: 0.8em;">This is a sample paragraph.</p>
<!-- Correct -->
<p style="line-height: 1.5; margin-bottom: 1.5em;">This is a sample paragraph.</p>
Resolvendo o alinhamento justificado do texto em parágrafos
O texto totalmente justificado pode criar espaçamento irregular entre as palavras, o que dificulta a leitura para alguns usuários, especialmente aqueles com deficiência cognitiva ou visual.
No código HTML, localize o elemento
<p>.No CSS do elemento
<p>, verifique setext-align: justify;está aplicado.Remova o valor
justifye defina o alinhamento comoleft.
Observação: Você também pode fazer isso usando estilos inline ou uma classe CSS.
Exemplo
<!-- Incorrect -->
<p style="text-align: justify;">This is a sample paragraph.</p>
<!-- Correct -->
<p style="text-align: left;">This is a sample paragraph.</p>Resolvendo tamanhos de fonte absolutos em parágrafos
O uso de unidades absolutas (por exemplo, px, pt ou cm) para os tamanhos de fonte pode dificultar o redimensionamento do texto e causar problemas para usuários com baixa visão ou que usam ampliadores de tela para ler. Para garantir melhor acessibilidade em diferentes dispositivos e tamanhos de tela, os tamanhos de fonte devem ser definidos em unidades relativas (por exemplo, em, rem, % ou vw).
No código HTML, localize o elemento
<p>.Na estilização CSS do elemento
<p>, localize o atributofont sizeque está usando unidades absolutas (por exemplo,px,pt,cm).Substitua as unidades absolutas por unidades relativas (por exemplo,
em,rem,%) atualizando os estilos inline ou a classe CSS correspondente.
Exemplo
<!-- Incorrect --> <p style="font-size: 16px;">Welcome to our website! Enjoy exploring our features.</p> <!-- Correct --> <p style="font-size: 1rem;">Welcome to our website! Enjoy exploring our features.</p>
Resolvendo alturas de linha absolutas em parágrafos
Definir alturas de linha com unidades absolutas (como px, pt ou cm) pode causar problemas quando os usuários tentam ajustar o texto para melhorar a legibilidade, principalmente aqueles com deficiência visual. Para garantir melhor acessibilidade a diferentes usuários, as alturas de linha devem ser definidas usando unidades relativas (como em, rem ou %).
No código HTML, localize o elemento
<p>.No CSS do elemento
<p>, localize a altura de linha que usa unidades absolutas (por exemplo,px,pt,cm).Substitua os valores de unidades absolutas por unidades relativas (por exemplo,
em,remou%) atualizando os estilos inline ou a classe CSS correspondente.
Exemplo
<!-- Incorrect --> <p style="line-height: 24px;">The counseling center offers free sessions for all students.</p> <!-- Correct --> <p style="line-height: 1.5em;">The counseling center offers free sessions for all students.</p>
1.4.10 Reflow
O conteúdo deve se ajustar e se reorganizar automaticamente para continuar totalmente utilizável e legível em telas estreitas, com apenas 320 pixels de largura.
Resolvendo problemas de restrição da viewport
Definir as propriedades corretas da viewport ajuda o conteúdo a ser exibido corretamente em todos os tamanhos de tela, sem exigir que os usuários rolem horizontalmente.
No HTML, vá até a seção
<head>da página.Dentro da seção
<head>, adicione a tag<meta name="viewport">.Se uma tag
<meta name="viewport">já estiver presente, mas contiver configurações restritivas, atualize o atributocontentdela paracontent="width=device-width, initial-scale=1".
Exemplo
<!-- Incorrect -->
<meta name="viewport" content="width=500">
<!-- Correct -->
<meta name="viewport" content="width=device-width, initial-scale=1">1.4.11 Contraste não textual
Resolvendo controles com problemas de baixo contraste
O baixo contraste em componentes da interface do usuário e em elementos gráficos pode dificultar a identificação e a interação para usuários com baixa visão. Componentes como botões, campos de entrada e menus de seleção devem ter uma taxa de contraste de pelo menos 3:1 em relação às cores adjacentes.
- No código HTML, localize o componente da interface do usuário sinalizado, como um
select,textareaouinput. - Atualize os estilos CSS do componente para garantir que as cores da borda, do plano de fundo e do texto tenham uma taxa de contraste de pelo menos 3:1 com as cores adjacentes.
Exemplo:
<input type="text" style="border: 1px solid #333;">
1.4.12 Espaçamento de texto
O conteúdo deve continuar fácil de ler e funcionar corretamente quando os usuários aumentam o espaçamento entre letras, palavras e linhas para os tamanhos mínimos padrão.
Resolvendo o espaçamento entre letras inacessível
Um espaçamento entre letras acessível ajuda usuários com deficiência visual ou cognitiva a ler o texto com mais conforto.
No código HTML, encontre o elemento com CSS que controla o espaçamento entre letras (por exemplo,
<span style="letter-spacing: 0.08em !important;">).Remova
!importantdo valor deletter-spacing, se ele for usado.Defina o valor de
letter-spacingcomo pelo menos0.12em.
Exemplo:
<!-- Incorrect -->
<span style="letter-spacing: 0.08em !important;">Inaccessible letter spacing example.</span>
<!-- Correct -->
<span style="letter-spacing: 0.12em;">Accessible letter spacing example.</span>Resolvendo o espaçamento entre palavras inacessível
Um espaçamento adequado entre palavras melhora a legibilidade para usuários que dependem de um espaçamento ajustado para ter clareza.
No HTML, encontre o elemento com CSS que controla o espaçamento entre palavras (por exemplo,
<p style="word-spacing: 0.1em !important;">).Remova
!importantdo valor deword-spacing, se ele for usado.Defina o valor de
word-spacingcomo pelo menos0.16em.
Exemplo
<!-- Incorrect -->
<p style="word-spacing: 0.1em !important;">Inaccessible word spacing example.</p>
<!-- Correct -->
<p style="word-spacing: 0.16em;">This is an example paragraph with accessible word spacing.</p>Resolvendo a altura de linha inacessível
Uma altura de linha acessível melhora a legibilidade e ajuda os usuários a navegar pelos blocos de texto com mais facilidade.
No código HTML, encontre o elemento com CSS que controla a altura da linha (por exemplo,
<div style="line-height: 1.2 !important;">).Remova
!importantdo valor deline-height, se ele for usado.Defina o valor de
line-heightcomo pelo menos1.5.
Exemplo
<!-- Incorrect -->
<div style="line-height: 1.2 !important;">Inaccessible line height example.</div>
<!-- Correct -->
<div style="line-height: 1.5;">This block of text has accessible line height.</div>2.1.1 Teclado
Todos os recursos e controles devem poder ser usados apenas com o teclado, sem exigir que as teclas sejam pressionadas rapidamente ou em um intervalo de tempo específico.
Resolvendo regiões roláveis inacessíveis
Todas as partes de uma página rolável devem ser operáveis com o teclado. Isso permite que usuários que dependem da navegação por teclado rolem a página e acessem o conteúdo.
No código HTML, localize o contêiner rolável (por exemplo,
<div>ou<section>comoverflow: autoouoverflow: scrollno CSS).No elemento rolável, localize ou adicione o atributo
tabindex.Defina
tabindex="0"para tornar a região rolável focalizável com o teclado.
Exemplo
<!-- Incorrect -->
<div style="overflow: auto; height: 200px;">
<p>This content cannot be scrolled using the keyboard.</p>
</div>
<!-- Correct -->
<div style="overflow: auto; height: 200px;" tabindex="0">
<p>This content can now be scrolled using the keyboard.</p>
</div>Resolvendo quadros embutidos inacessíveis
Os quadros embutidos não devem usar valores negativos de tabindex, pois isso impede que usuários de teclado acessem esses quadros.
No código HTML, localize o elemento de quadro embutido (
<iframe>).No elemento
<iframe>, localize o atributotabindex.Remova qualquer valor negativo de tabindex (por exemplo,
tabindex="-1") e substitua-o portabindex="0"para torná-lo acessível pelo teclado.
Exemplo
<!-- Incorrect -->
<iframe src="video.html" tabindex="-1"></iframe>
<!-- Correct -->
<iframe src="video.html" tabindex="0"></iframe>2.2.1 Tempo ajustável
Resolvendo alterações de conteúdo temporizado controladas pelo usuário
Para garantir a acessibilidade aos usuários, o conteúdo que é atualizado automaticamente deve poder ser controlado pelo usuário ou ser sinalizado de forma adequada, permitindo que ele ajuste a taxa de atualização.
No código HTML, localize o elemento
<meta>dentro do elemento<body>.
Observação: Se o elemento<meta>não existir, adicione uma nova tag<meta>.Adicione um atributo
http-equiv="refresh"ao elemento<meta>.Se o elemento
<meta>existir, mas o tempo de atualização for muito curto, ajuste o atributocontentpara definir um intervalo de atualização mais longo (por exemplo,content="72000").
Exemplo
<!-- Incorrect -->
<meta http-equiv="refresh" content="5">
<!-- Correct -->
<meta http-equiv="refresh" content="72000">2.2.2 Pausar, parar, ocultar
Resolvendo tags obsoletas no conteúdo
Para promover práticas modernas e acessíveis na web, evite usar elementos HTML obsoletos, como <blink> e <marquee>, pois eles não são compatíveis com muitas tecnologias assistivas e podem causar problemas de acessibilidade.
No código HTML, localize quaisquer tags obsoletas, como
<blink>ou<marquee>.Substitua a tag
<blink>ou<marquee>por uma alternativa mais acessível, como uma tag<span>, e aplique o CSS apropriado para animação ou estilização.
Exemplo
<!-- Incorrect -->
<blink>Registration ends soon!</blink>
<marquee>Scrolling announcement</marquee>
<!-- Correct -->
<span style="animation: blink-animation 1s infinite;">Registration ends soon!</span>
<div style="animation: scroll-left 10s linear infinite;">Scrolling announcement</div>2.4.1 Ignorar blocos
Resolvendo a ausência de um mecanismo de desvio
Um link “Pular para o conteúdo principal” ajuda os usuários a ignorar elementos de navegação repetitivos e ir diretamente para o conteúdo principal da página.
No código HTML, localize o elemento
<body>.Logo após a tag de abertura
<body>, adicione uma tag<a>e use o atributohrefpara apontar para a seção de conteúdo principal (o elemento<main>). Esse link permite que os usuários pulem a navegação e vão direto para o conteúdo principal.
Observação: Você pode usar uma referência de ID para a seção de conteúdo principal (por exemplo, id="main-content") para facilitar a navegação.
Exemplo
<!-- Incorrect -->
<body>
<nav>...</nav>
<main id="main-content">...</main>
</body>
<!-- Correct -->
<body>
<a href="#main-content">Skip to main content</a>
<nav>...</nav>
<main id="main-content">...</main>
</body>2.4.2 Página com título
Resolvendo a ausência de títulos de página
Um título descritivo ajuda os usuários a entender a finalidade da página e auxilia na navegação, especialmente para usuários de leitores de tela.
No código HTML, localize a seção
<head>da página.Adicione um elemento
<title>dentro do elemento<head>.Insira um título claro e descritivo para a página dentro da tag
<title>.
Exemplo
<!-- Incorrect -->
<head>
</head>
<!-- Correct -->
<head>
<title>Contact Us - YuJa Inc.</title>
</head>2.4.3 Ordem do foco
Os usuários de teclado devem poder percorrer o conteúdo em uma ordem clara e lógica, que faça sentido.
Resolvendo ordem de foco incorreta
A ordem de foco garante que os elementos interativos possam ser navegados em uma sequência lógica e intuitiva por usuários de teclado.
No seu código HTML, localize o elemento interativo sinalizado (por exemplo,
<a>,<button>,<input>, etc.).Verifique a ordem dele no código HTML e certifique-se de que siga uma sequência lógica, do topo da página ou da seção até o final, sem pular nenhum elemento importante. Saiba mais sobre a ordem de foco.
Observação:
Se algum elemento não estiver na ordem de foco desejada, altere os valores de
tabindexdele para garantir uma sequência de foco correta.Se você estiver tornando um elemento personalizado focalizável (como um
<div>ou<span>), usetabindex="0"para incluí-lo na ordem natural de tabulação.
Exemplo
<!-- Incorrect-->
<button>Start</button>
<input type="text" placeholder="First Name" tabindex="3">
<input type="text" placeholder="Last Name" tabindex="1">
<button>Submit</button>
<!-- Correct-->
<button>Start</button>
<input type="text" placeholder="First Name" tabindex="1">
<input type="text" placeholder="Last Name" tabindex="2">
<button>Submit</button>2.4.4 Finalidade do link (em contexto)
A finalidade de cada link deve ser óbvia a partir do próprio texto do link ou das informações ao redor dele.
Resolvendo descrições de link ausentes
Todo link deve descrever claramente a sua finalidade para ajudar os usuários a entender o que acontecerá quando o ativarem.
No seu código HTML, localize o elemento usado como link (por exemplo,
<a>,<input>ou<button>com uma ação de link).Substitua o texto vago do link (por exemplo, “Clique aqui” ou “Mais”) por um texto curto e descritivo que explique o destino ou a ação.
Observação: se o link usar ícones ou imagens, adicione um nome acessível usando o atributoaria-labeloutitle.
Exemplo
<!-- Incorrect -->
<a href="/reports">Report</a>
<!-- Correct -->
<a href="/reports">View quarterly reports</a>
2.4.5 Várias formas
Resolvendo a ausência de vários métodos de navegação
As páginas devem oferecer mais de uma forma para os usuários localizarem o conteúdo. As opções comuns incluem marcos de navegação, uma função de pesquisa ou um link de “pular navegação”. Adicionar pelo menos dois métodos ajuda usuários com necessidades diferentes a navegar pela página com mais facilidade.
- No seu código HTML, adicione uma forma diferente de os usuários localizarem o conteúdo, por meio de uma das opções a seguir:
-
-
Adicionar um marco de navegação para identificar a região de navegação principal.
<nav> <ul> <li><a href="/home">Home</a></li> <li><a href="/courses">Courses</a></li> <li><a href="/contact">Contact</a></li> </ul> </nav> -
Adicionar um marco de pesquisa a um recurso de pesquisa, se houver um.
<form role="search"> <label for="search">Search</label> <input id="search" type="text" name="q"> <button type="submit">Go</button> </form> -
Adicionar um link de “pular navegação” no topo da página para que os usuários possam ignorar o conteúdo repetido.
<a href="#maincontent" class="skip-link">Skip to main content</a>
-
-
- Salve as alterações e recarregue a página.
2.4.6 Títulos e rótulos
Resolvendo a ausência de rótulos em campos de formulário
Os campos de formulário precisam de rótulos descritivos para que os usuários entendam quais informações devem inserir.
No seu código HTML, localize o elemento
<form>e seus campos (por exemplo,<input>,<textarea>).Para cada campo, adicione um elemento
<label>antes dele.Dentro do elemento
<label>, inclua um atributofor=""com um valor que corresponda aoiddo campo de formulário correspondente.
Exemplo
<!-- Incorrect -->
<input type="email" id="email" name="email" />
<!-- Correct -->
<label for="email">Email address</label> <input type="email" id="email" name="email" />rly reports</a>Resolvendo botões sem rótulo
Os botões devem ter rótulos claros para indicar a ação que executam. Rótulos acessíveis garantem que usuários de leitores de tela entendam a finalidade do botão.
No seu código HTML, localize o elemento
<button>.Dentro do elemento
<button>, adicione um atributoaria-label.Dentro do atributo
aria-label, insira uma breve descrição que comunique a finalidade do botão.
Exemplo
<!-- Incorrect -->
<button>Close</button>
<!-- Correct -->
<button aria-label="Close window">Close</button>2.4.8 Localização
Resolvendo a ausência de indicadores de localização da página
As páginas devem oferecer aos usuários uma forma de entender onde estão dentro do site ou aplicativo. Isso pode ser feito adicionando trilhas de navegação (breadcrumbs), links de mapa do site, indicadores de página atual ou links relacionais.
- No seu código HTML, localize a seção em que os elementos de navegação estão ou em que a estrutura da página é identificada (por exemplo, elementos dentro de
nav,headerou perto do topo dobodyda página). - Adicione um indicador de localização da página aos seus elementos de navegação, por meio de uma das opções a seguir:
-
Adicionar uma trilha de navegação: insira um elemento
navcom uma lista ordenada mostrando o caminho até a página atual. É um recurso de navegação que mostra aos usuários o caminho que percorreram para chegar ao local atual.<nav aria-label="Breadcrumb"> <ol> <li><a href="/home">Home</a></li> <li><a href="/courses">Courses</a></li> <li aria-current="page">Course Details</li> </ol> </nav> -
Adicionar um link de mapa do site: coloque o link do mapa do site dentro do
footerdo seu código HTML.<footer> <a href="/sitemap">Sitemap</a> </footer> -
Adicionar um indicador de página atual: localize a tag
ada página ativa e inclua o atributoaria-current="page".<nav> <ul> <li><a href="/home">Home</a></li> <li><a href="/about" aria-current="page">About</a></li> </ul> -
Adicionar links relacionais: localize a seção
headdo seu código HTML e insira elementoslinkpara as páginas anterior, seguinte ou superior (pai).<link rel="prev" href="/chapter-1"> <link rel="next" href="/chapter-3"> <link rel="up" href="/table-of-contents">
-
- Confirme que pelo menos um indicador de localização está presente.
- Salve as alterações e recarregue a página.
2.4.9 Finalidade do link (somente o link)
Resolvendo problemas de finalidade do link
Links que têm o mesmo nome acessível (o texto do link ou o rótulo dele, aria-label) devem levar ao mesmo destino. Se dois links têm a mesma aparência, mas levam a lugares diferentes, os usuários podem ficar confusos.
- No seu código HTML, localize os links que foram sinalizados por terem o mesmo texto de link ou aria-label.
- Resolva o problema seguindo uma das opções abaixo:
-
Se os links devem apontar para o mesmo destino, localize a tag
ados links e atualize os valores dehrefneles para que sejam iguais.<a href="/about">Read more</a> <a href="/about">Read more</a> -
Se os links devem apontar para destinos diferentes, altere o texto do link ou o
aria-labelpara descrever claramente cada finalidade.<a href="/about">Read more about us</a> <a href="/contact">Read more about contacting us</a>
-
- Salve as alterações e recarregue a página.
2.4.10 Títulos de seção
Resolvendo a ausência de títulos de página
Os títulos ajudam os usuários a entender a estrutura de uma página. Sem títulos com estrutura adequada, pode ser difícil para pessoas que usam tecnologias assistivas navegar e entender o conteúdo.
- No seu código HTML, localize a área de conteúdo principal da página (por exemplo, o
body). -
Adicione elementos de título que descrevam o assunto principal da página.
Observação: cada página deve começar com pelo menos um elementoh1. Se a página tiver várias seções, adicione subtítulos (por exemplo,h2,h3,h4)<h1>Course Overview</h1> <h2>Course Objectives</h2> <h2>Course Materials</h2> <h3>Required Readings</h3> <h3>Optional Resources</h3> - Verifique se há pelo menos um título e se os títulos criam uma estrutura clara do conteúdo da página.
- Salve as alterações e recarregue a página.
Resolvendo a ausência de títulos de seção
Cada elemento section deve incluir um título que descreva sua finalidade. Sem um título, os usuários podem não entender o conteúdo ou a função dessa seção.
- No seu código HTML, localize o elemento
sectionque foi sinalizado. - Adicione um elemento
h2como primeiro elemento filho dentro desection.
Observação: o nível do título pode depender da estrutura de títulos da sua página. -
Dentro do elemento
h2, inclua um título para a sua seção.<section> <h2>Advanced Accessibility</h2> <p>This course covers advanced topics in accessibility.</p> </section> - Salve as alterações e recarregue a página.
2.5.3 Rótulo no nome
Resolvendo a incompatibilidade entre o nome acessível e o rótulo visível
Garanta que o nome acessível dos elementos interativos corresponda ao rótulo visível deles, evitando confusão e garantindo clareza para usuários que dependem de tecnologias assistivas.
No seu código HTML, localize o elemento interativo (por exemplo,
button,div) que tem um atributoaria-label.Substitua o conteúdo do elemento pelo mesmo texto usado no atributo
aria-label.
Exemplo
<!-- Incorrect -->
<button aria-label="Submit Form">Send</button>
<!-- Correct -->
<button aria-label="Submit Form">Submit Form</button>2.5.5 Tamanho do alvo
Resolvendo o tamanho insuficiente de elementos interativos
Elementos interativos, como botões, links e controles de formulário, devem ser grandes o suficiente para que os usuários interajam com eles com facilidade usando mouse ou teclado.
No seu código HTML, localize o elemento interativo (por exemplo,
button,input,textarea).Localize os atributos
widtheheightno seu elemento.Ajuste os atributos
widtheheightpara garantir que o tamanho do elemento seja de no mínimo 44px por 44px (por exemplo,width: 44px; height: 44px).
Exemplo
<!-- Incorrect -->
<button style="width: 16px; height: 16px;">More Infomation</button>
<!-- Correct -->
<button style="width: 44px; height: 44px;">More Information</button>2.5.8 Tamanho do alvo (mínimo)
Resolvendo o tamanho pequeno de alvos de toque
Alvos de toque, como botões, links ou outros elementos interativos, devem ser grandes o suficiente para garantir que os usuários de dispositivos com tela sensível ao toque possam tocá-los com facilidade.
No seu código HTML, localize o elemento interativo (por exemplo,
button,input,textarea).Localize os atributos
widtheheightno seu elemento.Ajuste os atributos
widtheheightpara garantir que o tamanho do elemento seja de no mínimo 24px por 24px (por exemplo,width: 24px; height: 24px).
Exemplo
<!-- Incorrect -->
<button style="width: 16px; height: 16px;">Infomation</button>
<!-- Correct -->
<button style="width: 24px; height: 24px;">Infomation</button>3.1.1 Idioma da página
Resolvendo a ausência de declaração de idioma
Toda página da web precisa especificar o idioma em que está escrita, para que as tecnologias assistivas, como leitores de tela, possam ler o conteúdo corretamente.
No seu código HTML, localize o elemento
<html>.Dentro do elemento
<html>, adicione um atributolange insira um valor que reflita o idioma correto da página (por exemplo,lang="en"para inglês,lang="es"para espanhol).
Exemplo
<!-- Incorrect --> <html> <!-- Correct --> <html lang="en">
Resolvendo a incompatibilidade no idioma declarado
O idioma declarado da página deve corresponder ao idioma realmente usado no conteúdo, permitindo que as tecnologias assistivas interpretem e apresentem o conteúdo corretamente.
No seu código HTML, localize o elemento
<html>.Dentro do elemento
<html>, localize os atributoslangexml:lang.Defina o valor dos atributos
langexml:langcomo o mesmo código de idioma válido, que corresponda ao idioma usado no seu conteúdo.
Exemplo
<!-- Incorrect --> <html lang="fr" xml:lang="en"> <!-- Correct --> <html lang="en" xml:lang="en">
3.1.2 Idioma de partes
Resolvendo valor inválido para o atributo lang
Se partes da sua página da web estiverem em outro idioma, você precisa informar essa mudança às tecnologias assistivas, como leitores de tela. Isso ajuda os usuários que dependem dessas ferramentas a entender o conteúdo no idioma correto.
No seu código HTML, localize o elemento de conteúdo (por exemplo,
<p>,<span>,<div>) em que o atributolanginválido foi sinalizado.Atualize o atributo
langcom um valor válido que reflita o idioma correto (por exemplo,lang="en"para inglês,lang="es"para espanhol).
Exemplo
<!-- Incorrect -->
<p lang="espanol-spain">Este es un párrafo en español.</p> <!-- Correct --> <p lang="es">Este es un párrafo en español.</p>
3.2.2 Na entrada
Resolvendo a ausência de botões de envio
Os formulários devem ter um acionador explícito para garantir que os usuários, especialmente os que usam teclados ou leitores de tela, consigam enviar os dados com sucesso. As ações só devem ocorrer quando o usuário ativa intencionalmente um elemento de envio.
Localize o elemento
<form>no seu HTML.Dentro do elemento
form, adicione um<button type="submit">ou<input type="submit">antes da tag de fechamento</form>, caso esteja ausente.Use um botão de envio claramente rotulado, que envie o formulário somente quando for clicado ou quando a tecla Enter for pressionada (por exemplo,
<button type="submit">Submit</button>).
Exemplo
<!-- Incorrect --> <form action="/submit" method="post">
<input type="text" name="name" required>
</form> <!-- Correct -->
<form action="/submit" method="post">
<input type="text" name="name" required>
<button type="submit">Submit</button>
</form>
3.2.4 Identificação consistente
Resolvendo texto de link não descritivo
Os links devem ter um texto que descreva claramente a finalidade ou o destino deles.
No seu HTML, localize o elemento
<a>com texto vago ou genérico, como “clique aqui”.Substitua o texto entre as tags
<a>por um texto de link descritivo que explique o destino ou a finalidade.
Exemplo
<!-- Incorrect --> <a href="/report">Click here</a> <!-- Correct --> <a href="/report">View Annual Report</a>
3.2.5 Alteração sob solicitação
Informando os usuários sobre novas guias
Se um link abre em uma nova guia ou janela, os usuários devem ser claramente informados. Isso ajuda a evitar confusão, especialmente para pessoas que usam leitores de tela ou navegação por teclado, ao definir a expectativa correta.
No seu código HTML, localize o elemento
<a>com o atributotarget="_blank".Adicione um
aria-labelou atualize o texto visível para incluir “(abre em uma nova guia)”.
Exemplo
<!-- Incorrect --> <a href="https://example.com" target="_blank">Visit Example</a> <!-- Correct --> <a href="https://example.com" target="_blank" aria-label="Visit Example (opens in a new tab)">Visit Example</a>
3.3.1 Identificação de erro
Marcando como atômicas as descrições de erro de campos de entrada
Quando os erros de formulário são anunciados usando uma região dinâmica com aria-live="assertive", ela também deve incluir aria-atomic="true". Isso garante que toda a mensagem de erro seja lida para usuários de leitores de tela.
No seu código HTML, localize o elemento com
aria-live="assertive"usado para anunciar mensagens de erro.Adicione o atributo
aria-atomic="true"ao mesmo elemento.
Exemplo
<!-- Incorrect --> <label for="email">Email</label> <input type="email" id="email" name="email" required> <div id="email-error" aria-live="assertive"> Please enter a valid email address. </div> <!-- Correct --> <label for="email">Email</label> <input type="email" id="email" name="email" required> <div id="email-error" aria-live="assertive" aria-atomic="true"> Please enter a valid email address. </div>
3.3.2 Rótulo de entrada
Resolvendo rótulo de entrada pouco claro
Os campos de formulário devem ter nomes acessíveis para que os usuários, inclusive os que usam leitores de tela, saibam qual informação está sendo solicitada. Sem um rótulo ou aria-label, a finalidade do campo fica pouco clara.
- No seu código HTML, localize o elemento
inputque foi sinalizado. -
Dentro do elemento, adicione um atributo
aria-labelpara fornecer um nome acessível ao campo.<input type="text" aria-label="First Name"> - Salve suas alterações e recarregue a página.
4.1.2 Nome, função, valor
Os elementos da interface do usuário devem fornecer seu nome, finalidade e valor atual para que as tecnologias assistivas possam entendê-los e interagir com eles.
Resolvendo nomes acessíveis ausentes em elementos da interface do usuário
Todos os botões, campos de entrada e outros elementos interativos devem ter nomes acessíveis para que os leitores de tela possam anunciar o que cada item faz.
No seu código HTML, localize os componentes da interface do usuário, como
<input>,<button>,<select>ou outros elementos clicáveis.Dentro do componente, adicione um nome acessível usando um dos seguintes métodos:
Adicione um elemento
<label>com um atributoforvinculado aoiddo elemento (p. ex.,<label for="username">Username</label>).Use o atributo
aria-labelpara descrever o elemento diretamente (p. ex.,aria-label="Search this site").Use o atributo
aria-labelledbypara referenciar outro elemento que contenha o nome (p. ex.,aria-labelledby="search-label").
Exemplo
<!-- Incorrect --> <input type="text" id="username" name="username"> <!-- Correct --> <input type="text" id="username" name="username" aria-label="Username">
Resolvendo nomes acessíveis ausentes em links
Os links devem ter nomes acessíveis que descrevam seu destino ou sua função.
No seu código HTML, localize o elemento
<a>.Dentro do elemento
<a>, adicione um atributotitleouaria-labelque descreva claramente para onde o link leva ou o que ele faz.
Exemplo
<!-- Incorrect --> <a href="/downloads/report.pdf">Download Report</a> <!-- Correct --> <a href="/downloads/report.pdf" title="Download the 2024 Annual Report">Download Report</a>
Resolvendo nomes acessíveis ausentes em botões
Os botões devem ter rótulos claros que indiquem a ação que executam. Rótulos acessíveis garantem que os usuários de leitores de tela entendam a finalidade do botão.
-
No seu código HTML, localize o elemento
<button>. - Dentro do elemento
<button>, adicione um atributoaria-label. - Dentro do atributo
aria-label, insira uma descrição curta que deixe clara a finalidade do botão.
Exemplo
<!-- Incorrect --> <button>×</button> <!-- Correct --> <button aria-label="Close window">×</button>
Resolvendo controles interativos aninhados
Os controles interativos não devem ser aninhados dentro de outros elementos interativos. Aninhar controles (p. ex., um <button> dentro de um link, um <a> dentro de um <button>) pode confundir os usuários de tecnologias assistivas e causar um comportamento inesperado ou quebrado do teclado e dos leitores de tela.
- No seu código HTML, localize o controle interativo que está dentro de outro controle interativo (p. ex.,
<button>,<a>,<input>). - Atualize o código HTML para que cada elemento interativo seja separado e execute apenas uma ação.
Exemplo
<!-- Incorrect --> <a href="/profile"> <button>View Profile</button> </a> <!-- Correct --> <a href="/profile">View Profile</a>
Resolvendo nomes acessíveis ausentes em <iframe>
Os elementos <iframe> devem ter um nome acessível claro e descritivo para que os usuários de leitores de tela entendam qual conteúdo o frame incorporado contém. Sem um rótulo, as tecnologias assistivas podem anunciar apenas “frame” ou “iframe”, o que não fornece nenhum contexto útil.
- No seu código HTML, localize o elemento
<iframe>. -
Adicione um nome acessível usando um dos seguintes métodos:
- Um atributo
title(o mais comum e recomendado). - Um atributo
aria-labelouaria-labelledbyque faça referência a um texto visível na página.
- Um atributo
- Certifique-se de que o rótulo descreva claramente a finalidade ou o conteúdo do frame incorporado.
- Mantenha a descrição curta, mas significativa, para que os usuários saibam o que esperar.
Exemplo
<!-- Incorrect --> <iframe src="https://yuja.com/map"></iframe> <!-- Correct --> <iframe src="https://yuja.com/map" title="Map showing our office location"></iframe>
Problemas de acessibilidade ARIA
Resolvendo nomes acessíveis ausentes em links
Os links devem ter nomes acessíveis que descrevam seu destino ou sua função.
No seu código HTML, localize o elemento
<a>.Dentro do elemento
<a>, adicione um atributotitleouaria-labelque descreva claramente para onde o link leva ou o que ele faz.
Exemplo
<!-- Incorrect --> <a href="/downloads/report.pdf">Download Report</a> <!-- Correct --> <a href="/downloads/report.pdf" title="Download the 2024 Annual Report">Download Report</a>
Removendo atributos ARIA inválidos
Os atributos ARIA devem ser usados somente em funções ou elementos HTML específicos. Se um atributo ARIA for usado onde não é permitido, ele não funcionará corretamente e poderá confundir os usuários.
No seu código HTML, localize o elemento com atributos ARIA inválidos (p. ex.,
aria-liveem<button>,aria-expandedem<div>).Remova os atributos ARIA inválidos ou adicione o atributo role correto que corresponda ao atributo ARIA.
Exemplo
<!-- Incorrect --> <div aria-checked="true">Option 1</div> <!-- Correct --> <div role="checkbox" aria-checked="true">Option 1</div>
Resolvendo funções ARIA inválidas
Somente funções ARIA válidas devem ser usadas para definir a função dos elementos.
No seu código HTML, localize o atributo
roleem qualquer elemento.Substitua qualquer valor inválido de role por uma função ARIA válida definida na especificação ARIA.
Exemplo
<!-- Incorrect --> <div role="navigationbar">Main Menu</div> <!-- Correct --> <div role="navigation">Main Menu</div>
Resolvendo nome acessível ausente em propriedades braille
Quando propriedades braille são usadas, elas devem ter um nome acessível correspondente que as tecnologias assistivas consigam entender.
No seu código HTML, localize qualquer elemento com o atributo
aria-braillelabelouaria-brailleroledescription.Dentro do elemento, adicione um
aria-labelque corresponda ao significado do rótulo braille.
Exemplo
<!-- Incorrect --> <div aria-braillelabel="Submit Button"></div> <!-- Correct --> <div aria-braillelabel="Submit Button" aria-label="Submit"></div>
Resolvendo atributos ARIA condicionalmente incorretos
Os atributos ARIA devem ser usados somente quando exigidos pelo contexto da função do elemento. Quando um atributo é necessário, ele deve ser usado de forma adequada para garantir uma acessibilidade precisa.
No seu código HTML, localize o elemento com o atributo ARIA sinalizado (p. ex.,
aria-expanded,aria-checked).Localize o
roledentro do elemento (p. ex.,role="button",role="checkbox").Consulte a especificação de funções ARIA para verificar se o atributo é obrigatório para essa função.
Remova o atributo inválido para a função do elemento.
Observação: se o atributo for obrigatório, verifique se o valor do atributo está correto.
Exemplo
<!-- Incorrect --> <p aria-expanded="true">Click here for more details on the product.</p> <!-- Correct --> <p>Click here for more details on the product.</p>
Resolvendo o uso de funções ARIA obsoletas
As funções ARIA desatualizadas devem ser substituídas pelas funções atualizadas para manter os padrões de acessibilidade.
No seu código HTML, localize o elemento com a função ARIA obsoleta (p. ex.,
role="presentation",role="toolbar").Substitua a função obsoleta por uma função ARIA válida que se adapte melhor à finalidade do elemento (p. ex.,
role="none",role="navigation").
Exemplo
<!-- Incorrect --> <div role="toolbar"> <button>Save</button> <button>Cancel</button> </div> <!-- Correct --> <div role="navigation"> <button>Save</button> <button>Cancel</button> </div>
Resolvendo diálogos ARIA inválidos
Os elementos de diálogo devem ter um nome acessível válido para garantir que sejam descritos corretamente para as tecnologias assistivas.
No seu código HTML, localize o elemento com
role="dialog"ourole="alertdialog"(p. ex.,<div role="dialog">).Dentro do elemento, adicione um atributo
aria-labelouaria-labelledbye inclua um nome acessível para o diálogo.
Exemplo
<!-- Incorrect --> <div role="dialog"> <h2>Unsaved Changes</h2> <p>You have unsaved changes. Are you sure you want to leave?</p> </div> <!-- Correct --> <div role="dialog" aria-label="Unsaved Changes"> <h2>Unsaved Chages</h2> <p>You have unsaved changes. Are you sure you want to leave?</p> </div>
Resolvendo elemento body oculto
Certifique-se de que o elemento body não esteja oculto indevidamente das tecnologias assistivas.
No seu código HTML, localize o elemento
<body>.Remova qualquer atributo
aria-hidden="true"do elemento<body>para garantir que o conteúdo continue acessível.
Exemplo
<!-- Incorrect --> <body aria-hidden="true"> <h1>Welcome to Our Website</h1> <p>Explore our features and services.</p> </body> <!-- Correct --> <body> <h1>Welcome to Our Website</h1> <p>Explore our features and services.</p> </body>
Resolvendo nomes acessíveis ausentes em campos de entrada
Os campos de entrada devem ter um nome acessível para descrever sua finalidade aos usuários.
No seu código HTML, localize o elemento do campo de entrada (p. ex.,
<input>,<select>,<textarea>).Dentro do elemento, adicione um atributo
aria-labelouaria-labelledbypara incluir um nome acessível para o campo de entrada.
Exemplo
<!-- Incorrect --> <input type="text" name="email"> <!-- Correct --> <input type="text" name="email" aria-label="Email address">
Resolvendo o uso de atributos ARIA proibidos
Alguns atributos ARIA não são permitidos em determinados elementos porque podem confundir os leitores de tela ou criar problemas de acessibilidade.
No seu código HTML, localize o elemento com um atributo ARIA proibido (p. ex.,
aria-pressedem um elemento não interativo).Remova o atributo ARIA proibido do elemento.
Exemplo
<!-- Incorrect --> <div aria-pressed="true"> <span>Save changes</span> </div> <!-- Correct --> <div> <span>Save changes</span> </div>
Resolvendo atributos ARIA obrigatórios ausentes
Algumas funções ARIA precisam de atributos específicos para comunicar sua finalidade às tecnologias assistivas. Se esses atributos estiverem ausentes, os usuários que dependem de leitores de tela podem não entender como o elemento se comporta. Saiba mais sobre quais atributos ARIA são obrigatórios para cada função.
No seu código HTML, localize o elemento com a função ARIA sinalizada (p. ex.,
role="checkbox",role="slider",role="progressbar").Identifique o atributo ARIA obrigatório ausente para essa função (p. ex.,
aria-checked,aria-valuenow,aria-valuemin).Adicione o atributo ARIA ausente com um valor apropriado que reflita o estado ou o comportamento do elemento.
Exemplo
<!-- Incorrect --> <div role="slider" tabindex="0"></div> <!-- Correct --> <div role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="50" tabindex="0"></div>
Resolvendo elementos filhos ARIA obrigatórios ausentes
Algumas funções-pai exigem funções-filho específicas para uma acessibilidade adequada. Se elas estiverem ausentes, os leitores de tela podem não conseguir interpretar a estrutura corretamente. Saiba mais sobre a lista de funções ARIA.
No seu código HTML, localize o elemento pai com uma função que exija elementos filhos específicos (p. ex.,
role="list"deve conter elementos filhos comrole="listitem").Adicione o elemento filho obrigatório com os atributos
roleapropriados.
Exemplo
<!-- Incorrect --> <div role="list"> <div>First Name</div> <div>Last Name</div> </div> <!-- Correct --> <div role="list"> <div role="listitem">First Name</div> <div role="listitem">Last Name</div> </div>
Resolvendo elemento pai ARIA obrigatório ausente
Algumas funções ARIA devem estar dentro de uma função-pai específica para manter o significado semântico. Sem o pai correto, as tecnologias assistivas podem não interpretar o elemento corretamente. Saiba mais sobre a lista de funções ARIA.
No seu código HTML, localize o elemento com uma função que exija um pai específico (p. ex.,
role="row"deve estar dentro derole="table"ourole="rowgroup").Adicione o elemento pai obrigatório com os atributos
roleapropriados.
Exemplo
<!-- Incorrect --> <div role="row"> <div role="cell">User Name</div> </div> <!-- Correct --> <div role="table"> <div role="row"> <div role="cell">User Name</div> </div> </div>
Resolvendo o uso inválido de funções ARIA
As funções ARIA inválidas não existem na especificação ARIA e são ignoradas pelas tecnologias assistivas, o que pode tornar seu conteúdo mais difícil de entender ou navegar. Saiba mais sobre a lista de funções ARIA.
No seu código HTML, localize o elemento com um valor de função inválido (p. ex.,
role="unsupportedrole",role="presentation").Substitua o atributo
rolepor uma função válida com base na função do elemento.
Exemplo
<!-- Incorrect --> <div role="structure"> Content about accessibility. </div> <!-- Correct --> <div role="region" aria-label="Accessibility Info"> Content about accessibility. </div>
Resolvendo o uso de funções ARIA abstratas
As funções ARIA abstratas não se destinam a ser usadas diretamente no código. Elas existem apenas para definir características compartilhadas de outras funções, e usá-las não afeta a tecnologia assistiva. Saiba mais sobre a lista de funções ARIA.
No seu código HTML, localize o elemento que usa uma função ARIA abstrata (p. ex.,
role="input",role="command",role="widget").Substitua o atributo
rolepor uma função concreta que reflita a finalidade real do elemento.
Exemplo
<!-- Incorrect --> <div role="command">Run</div> <!-- Correct --> <div role="button">Run</div>
Resolvendo o uso de funções ARIA sem suporte
A especificação ARIA não reconhece funções ARIA sem suporte, que podem não funcionar corretamente em diferentes navegadores ou leitores de tela. Isso pode causar confusão ou fazer com que o conteúdo seja ignorado. Saiba mais sobre a lista de funções ARIA.
No seu código HTML, localize o elemento com uma função ARIA sem suporte (p. ex.,
role="footnote",role="banneritem",role="error").Substitua o atributo
rolepor uma função ARIA com suporte que reflita a finalidade do elemento.
Exemplo
<!-- Incorrect -->
<span role="error">Invalid input</span>
<!-- Correct -->
<span role="alert">Invalid input</span>
Resolvendo o uso de descrição de função ARIA inválida
Uma descrição de função personalizada incorreta pode confundir as tecnologias assistivas e os usuários. Ela só deve ser usada quando você precisar substituir a descrição de função padrão por algo mais significativo.
No seu código HTML, localize o elemento com um
aria-roledescriptioninválido.Remova o
aria-roledescriptionou substitua-o por umaria-labelpreciso.
Exemplo:
<!-- Incorrect -->
<div role="button" aria-roledescription="Clicky thing">Submit</div>
<!-- Correct -->
<div role="button" aria-label="Submit Form">Submit</div>
Resolvendo nome acessível ausente em elementos de alternância
Os elementos de alternância, como caixas de seleção, botões de opção e interruptores, precisam de nomes claros para que os leitores de tela possam descrever seu estado e sua função.
No seu código HTML, localize o elemento de alternância sem nome acessível (p. ex.,
role="checkbox",role="radio",role="switch").Adicione um nome acessível usando o atributo
aria-labelouaria-labelledby.
Exemplo
<!-- Incorrect -->
<div role="switch"></div>
<!-- Correct -->
<div role="switch" aria-label="Dark mode toggle"></div>Resolvendo valores de atributos ARIA inválidos
Os atributos ARIA devem usar valores específicos. Usar o valor errado pode confundir as tecnologias assistivas e causar problemas de acessibilidade. Saiba mais sobre os valores ARIA.
No seu código HTML, localize o elemento com um valor ARIA inválido (p. ex.,
aria-expanded="perhaps",aria-checked="maybe").Substitua o valor inválido por um que seja permitido pela especificação ARIA.
Exemplo
<!-- Incorrect -->
<input type="checkbox" aria-checked="sometimes">
<!-- Correct -->
<input type="checkbox" aria-checked="true">Resolvendo valores inválidos de aria-level
O atributo aria-level deve ser um número inteiro positivo, começando em 1. Ele é usado em elementos com papel de título (heading) para indicar o nível deles na estrutura do documento.
No seu código HTML, localize qualquer uso do atributo
aria-levelcom valor 0, um número negativo ou um valor não inteiro (por exemplo,aria-level="zero",aria-level="0",aria-level="-1")Substitua o valor por um número inteiro positivo (1 ou maior).
Observação: Use o atributo aria-level somente em elementos com role="heading". Se o elemento não tiver um papel de título, remova o atributo.
Exemplo
<!-- Incorrect -->
<div role="heading" aria-level="zero">Title</div>
<!-- Correct -->
<div role="heading" aria-level="1">Title</div>Resolvendo atributos ARIA inválidos
Alguns atributos ARIA podem estar escritos incorretamente ou ser usados no lugar errado. Esses atributos não funcionam e podem induzir as tecnologias assistivas ao erro. Saiba mais sobre os atributos ARIA.
No seu código HTML, localize o elemento com um atributo ARIA inválido ou escrito incorretamente (por exemplo,
aria-unchecked,aria-visible,aria-foo).Remova o atributo ARIA inválido ou substitua-o por um válido.
Exemplo
<!-- Incorrect -->
<button aria-unchecked="true">Submit</button>
<!-- Correct -->
<button aria-pressed="false">Submit</button>
Resolvendo elementos focáveis que usam o papel de apresentação
Elementos com papel de apresentação devem ser ignorados pelos leitores de tela. Quando esses elementos são focáveis, o papel de apresentação pode confundir os leitores de tela.
No seu código HTML, localize qualquer elemento focável com
role="presentation"ourole="none"(por exemplo, elementos comtabindex="0"ou elementos focáveis nativos, como<a>e<button>).Remova o papel de apresentação (
role="presentation"ourole="none") para preservar o significado interativo do elemento.
Observação: Se o elemento não se destina a ser interativo, remova os elementos focáveis, por exemplo, removendo tabindex ou o atributo href.
Exemplo
<!-- Incorrect -->
<a href="#" role="presentation">Link</a>
<!-- Correct -->
<a href="#">Link</a>Resolvendo atributos ARIA globais em elementos com papel de apresentação
Elementos com papel de apresentação devem ser ignorados pelas tecnologias assistivas. Quando esses elementos incluem tanto papéis de apresentação quanto atributos ARIA globais, eles podem confundir os leitores de tela.
No seu código HTML, localize um elemento focável que contenha
role="presentation"ourole="none"e que também inclua atributos ARIA globais, comoaria-label,aria-describedbyouaria-hidden.Remova o papel de apresentação (
role="presentation"ourole="none") para preservar o significado interativo do elemento.
Observação: Se o elemento não se destina a ser interativo, remova os atributos ARIA.
Exemplo
<!-- Incorrect -->
<div role="presentation" aria-label="Decorative container"></div>
<!-- Correct -->
<div aria-label="Decorative container"></div>p>Resolvendo valores inválidos de tabindex
Usar tabindex com valor -1 ou 0 pode interromper indevidamente o fluxo da navegação pelo teclado, dificultando a navegação dos usuários pelo conteúdo.
No seu código HTML, localize o elemento com um valor de
tabindexinadequado (por exemplo,tabindex="-1",tabindex="0").Remova o valor de tabindex para restaurar a navegação normal pelo teclado.
Exemplo
<!-- Incorrect -->
<h2 tabindex="-1">Header</h2>
<!-- Correct -->
<h2>Header</h2>Resolvendo papéis ARIA redundantes
Se um elemento já consegue transmitir seu significado nativo, adicionar um papel ARIA equivalente é desnecessário e pode confundir as tecnologias assistivas.
No seu código HTML, localize o elemento com um papel redundante (por exemplo,
<button role="button">,<a role="link">).Remova o atributo
roleredundante.
Exemplo
<!-- Incorrect --> <button role="button">Save</button> <!-- Correct --> <button>Save</button>
Boas práticas
Alcançar uma boa acessibilidade exige corrigir problemas comuns de código e de conteúdo para melhorar a clareza, a organização e a usabilidade para todos os usuários. Aplicar as boas práticas ajuda a criar conteúdos mais inclusivos e fáceis de usar.
Resolvendo o uso de tags visuais sem significado semântico
Use tags semânticas, como <strong> e <em>, em vez de tags apenas visuais, como <b> e <i>, para ajudar as tecnologias assistivas a entender a importância ou a ênfase do texto.
No código HTML, localize as tags
<b>e substitua-as por<strong>se o texto for importante.No código HTML, localize as tags
<i>e substitua-as por<em>se o texto deve ser enfatizado.
Exemplo
<!-- Incorrect -->
<p><b>Important:</b> Save your changes.</p>
<p><i>Note:</i> Restart required.</p>
<!-- Correct -->
<p><strong>Important:</strong> Save your changes.</p>
<p><em>Note:</em> Restart required.</p> Resolvendo problemas de texto alternativo não exclusivo
As imagens devem ter texto alternativo (alt text) que descreva com precisão o seu conteúdo. Se duas imagens mostram conteúdos diferentes, mas compartilham o mesmo texto alternativo, os usuários podem ser induzidos ao erro. Da mesma forma, quando duas imagens usam a mesma origem de arquivo, mas têm textos alternativos diferentes, isso gera inconsistência.
No seu código HTML, localize os elementos
<img>sinalizados por um problema de texto alternativo não exclusivo.-
Para imagens com origens diferentes (
src) que compartilham o mesmo texto alternativo, atualize o texto alternativo para que cada descrição seja exclusiva e corresponda ao conteúdo da imagem.<img src="team-photo.jpg" alt="Team standing together outside office"> <img src="office.jpg" alt="Front view of office building"> -
Para imagens com a mesma origem (
src), verifique se o texto alternativo é consistente em todas as ocorrências.<img src="logo.png" alt="Company logo"> <img src="logo.png" alt="Company logo"> Salve suas alterações e recarregue a página.
Resolvendo texto alternativo repetido em imagens
Usar o mesmo texto alternativo em várias imagens pode ser confuso para usuários de leitores de tela. Cada imagem deve ter um atributo alt exclusivo que descreva seu conteúdo ou finalidade específicos.
No seu código HTML, localize o elemento
<img>com a mesma descrição alternativa no atributoalt.Atualize a descrição no atributo
altda imagem para descrever o conteúdo específico dela.
Observação: Se a imagem for puramente decorativa, use um atributoaltvazio (alt="").
Exemplo
<!-- Incorrect -->
<img src="math-icon.png" alt="Icon"> <img src="science-icon.png" alt="Icon">
<!-- Correct -->
<img src="math-icon.png" alt="Math icon showing a calculator"> <img src="history-icon.png" alt="History icon showing a scroll and feather pen">
Resolvendo papéis de landmark em elementos aninhados
Os papéis de landmark servem para identificar as principais regiões de uma página. Eles devem ser usados somente em elementos de nível superior, para oferecer suporte à navegação acessível.
No seu código HTML, localize o elemento com o papel de landmark (por exemplo,
role="main",role="banner",role="navigation") que esteja dentro de outros elementos estruturais (por exemplo,<div>,<section>ou<article>)Mova o papel de landmark para fora dos elementos estruturais e coloque-o sob a tag
<body>ou no nível superior do layout do seu código.
Exemplo
<!-- Incorrect -->
<div class="article"> <section role="main">Content</section> </div>
<!-- Correct -->
<section role="main">Content</section>Resolvendo regiões de landmark duplicadas
Os landmarks ajudam os usuários a navegar ao definir a estrutura da página. Usar o mesmo papel várias vezes, sem uma distinção clara, pode confundir os usuários de tecnologias assistivas.
No seu código HTML, localize o elemento com papéis de landmark repetidos (por exemplo,
role="navigation",role="main").Remova o landmark duplicado que não tem uma finalidade distinta ou altere o papel de landmark para um que reflita melhor a função da seção.
Observação: Se forem necessários vários landmarks com o mesmo papel, adicione um rótulo exclusivo usandoaria-labelouaria-labelledbypara ajudar a diferenciá-los.
Exemplo
<!-- Incorrect -->
<nav role="navigation">Main links</nav> <nav role="navigation">Sidebar links</nav>
<!-- Correct -->
<nav role="navigation" aria-label="Main">Main links</nav> <nav role="navigation" aria-label="Sidebar">Sidebar links</nav>
Resolvendo atributos scope inválidos em cabeçalhos de tabela
O atributo scope conecta os cabeçalhos da tabela às células de dados. Usar valores incorretos ou omiti-los pode dificultar a interpretação das tabelas por usuários de leitores de tela.
No seu código HTML, localize o elemento
<th>com um valor de atributoscopeinválido ou ausente.-
Substitua ou adicione o valor de
scopede acordo com o tipo de cabeçalho:Use
scope="col"para cabeçalhos de coluna.Use
scope="row"para cabeçalhos de linha.
Observação: Para cabeçalhos de vários níveis, use
rowgroupoucolgroupse houver agrupamento.
Exemplo
<!-- Incorrect -->
<th scope="column">Course</th>
<!-- Correct -->
<th scope="col">Course</th>
Resolvendo legendas duplicadas em tabelas
As tabelas precisam de descrições exclusivas para ajudar os usuários a entender o que elas contêm. Reutilizar a mesma legenda em várias tabelas reduz a clareza ao usar tecnologias assistivas.
No seu código HTML, localize o elemento
<caption>dentro do elemento<table>.Dentro do elemento
<caption>, substitua a legenda duplicada por uma legenda específica que descreva a tabela.
Exemplo
<!-- Incorrect --> <table> <caption>Data table</caption> ... </table> <!-- Correct --> <table> <caption>Student Enrollment by Department – Fall 2025</caption> ... </table>
Resolvendo problemas de texto alternativo não exclusivo
As imagens devem ter texto alternativo (alt text) que descreva com precisão o seu conteúdo. Se duas imagens mostram conteúdos diferentes, mas compartilham o mesmo texto alternativo, os usuários podem ser induzidos ao erro. Da mesma forma, quando duas imagens usam a mesma origem de arquivo, mas têm textos alternativos diferentes, isso gera inconsistência.
No seu código HTML, localize os elementos
<img>sinalizados por um problema de texto alternativo não exclusivo.Para imagens com origens diferentes (
src) que compartilham o mesmo texto alternativo, atualize o texto alternativo para que cada descrição seja exclusiva e corresponda ao conteúdo da imagem.
<img src="team-photo.jpg" alt="Team standing together outside office"> <img src="office.jpg" alt="Front view of office building">
Para imagens com a mesma origem (src), verifique se o texto alternativo é consistente em todas as ocorrências.
<img src="logo.png" alt="Company logo"> <img src="logo.png" alt="Company logo">
Salve suas alterações e recarregue a página.
Resolvendo elementos <noscript> incorretos
O elemento <noscript> fornece conteúdo alternativo para usuários que desativaram o JavaScript. Verifique se ele contém conteúdo significativo e acessível e se não duplica nem oculta informações essenciais. Você não deve depender do conteúdo de <noscript> para funcionalidades importantes, a menos que seja oferecida uma alternativa acessível.
- No seu código HTML, localize os elementos
<noscript>sinalizados. - Dentro dos seus elementos
<noscript>, verifique se eles contêm conteúdo alternativo útil que informe aos usuários quais funcionalidades não estão disponíveis sem JavaScript.
Observação: Remova os elementos <noscript> que estiverem vazios, duplicados ou puramente decorativos.
Exemplo
<!-- Incorrect -->
<noscript></noscript>
<!-- Correct -->
<noscript>
<p>This site requires JavaScript to function properly. Please enable JavaScript in your browser.</p>
</noscript>
Resolvendo o uso de tags visuais sem significado semântico
Use tags semânticas, como <strong> e <em>, em vez de tags apenas visuais, como <b> e <i>, para ajudar as tecnologias assistivas a entender a importância ou a ênfase do texto.
No código HTML, localize as tags
<b>e substitua-as por<strong>se o texto for importante.No código HTML, localize as tags
<i>e substitua-as por<em>se o texto deve ser enfatizado.
Exemplo
<!-- Incorrect --> <p><b>Important:</b> Save your changes.</p> <p><i>Note:</i> Restart required.</p> <!-- Correct --> <p><strong>Important:</strong> Save your changes.</p> <p><em>Note:</em> Restart required.</p>
Resolvendo a ausência de título de nível um (H1)
Toda página precisa de um único título de nível um, claro (<h1>), para ajudar os usuários, especialmente os que usam tecnologia assistiva, a entender o propósito ou o tema principal da página. Uma estrutura de títulos ausente ou incorreta pode tornar a navegação confusa.
- No seu código HTML, localize a área de conteúdo principal da página (por exemplo, dentro do elemento
<body>). -
Adicione um elemento
<h1>que descreva claramente o tema ou o propósito principal da página.
Observação: Verifique se há apenas um<h1>por página e se ele é adicionado antes dos demais títulos de nível inferior (por exemplo,<h2>,<h3>,<h4>).
Exemplo
<!-- Incorrect --> <body> <h2>Course Overview</h2> <p>This page describes available courses.</p> </body> <!-- Correct --> <body> <h1>Available Courses</h1> <h2>Course Overview</h2> <p>This page describes available courses.</p> </body>
Resolvendo níveis de título ignorados
Os títulos devem seguir uma ordem lógica para ajudar os usuários a entender a estrutura da página. Pular níveis de título pode confundir os usuários de leitores de tela e dificultar a navegação pelo conteúdo.
- No seu código HTML, verifique a estrutura de títulos (por exemplo, de
<h1>a<h6>) em toda a página. - Atualize os níveis de título para garantir que estejam em uma hierarquia adequada e que nenhum nível seja pulado (por exemplo,
<h2>deve ficar sob<h1>, e<h3>deve ficar sob<h2>).
Exemplo
<!-- Incorrect --> <h1>Academic Programs</h1> <h3>Undergraduate Programs</h3> <p>Details about undergraduate offerings.</p> <!-- Correct --> <h1>Academic Programs</h1> <h2>Undergraduate Programs</h2> <p>Details about undergraduate offerings.</p>
Resolvendo títulos vazios
Os títulos devem conter texto significativo para que os usuários entendam a estrutura e o conteúdo de uma página. Títulos vazios, como títulos sem texto ou apenas com elementos decorativos, não fornecem nenhuma informação aos usuários de leitores de tela e podem causar confusão durante a navegação.
- No seu código HTML, localize os elementos de título sinalizados que não contêm texto visível e descritivo.
- Atualize cada título vazio adicionando uma descrição clara do conteúdo da seção.
Observação: Se o título não for necessário, remova o nível de título.
Exemplo
<!-- Incorrect --> <h2></h2> <p>Information about campus housing.</p> <!-- Correct --> <h2>Campus Housing</h2> <p>Information about campus housing.</p>
Resolvendo regiões circundantes ausentes ou definidas incorretamente
Usar elementos de região como <header>, <nav>, <main>, <aside> e <footer> ajuda a descrever como a sua página é estruturada. Esses elementos informam aos leitores de tela onde começam e terminam as partes principais da página.
- No seu código HTML, localize as áreas principais da sua página (por exemplo, o banner superior, o menu de navegação, o conteúdo principal, a barra lateral ou o rodapé).
- Se a sua página usa contêineres genéricos, como
<div>, atualize-os para usar o elemento de região correto (por exemplo, substitua<div id="main">por<main>.) - Verifique se você adicionou o elemento de região correto ao redor de cada área:
-
<header>para a seção superior ou o cabeçalho do site. -
<nav>para os links de navegação. -
<main>para o conteúdo central da página. -
<aside>para informações extras ou relacionadas. -
<footer>para a seção inferior ou o conteúdo de encerramento.
-
- Se você usar papéis ARIA (por exemplo,
role="main"ourole="navigation"), coloque-os dentro do elemento de região correto.
Observação: Use papéis ARIA somente se não puder usar elementos de região nativos do HTML.
Exemplo
<!-- Incorrect -->
<div id="header">
<h1>Welcome to Our Site</h1>
</div>
<div id="menu">
<ul><li><a href="#">Home</a></li></ul>
</div>
<div id="content">
<p>Main content goes here.</p>
</div>
<!-- Correct -->
<header>
<h1>Welcome to Our Site</h1>
</header>
<nav>
<ul><li><a href="#">Home</a></li></ul>
</nav>
<main>
<p>Main content goes here.</p>
</main>