HTML Academy · Aula

aria-hidden e aria-live

Oculte elementos decorativos e anuncie conteúdo dinâmico aos leitores de tela.

Aula 4 de 412 etapas

aria-hidden e aria-live é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de HTML Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de HTML Academy inclui 4 aulas no total.

aria-hidden

aria-hidden="true" remove um elemento da árvore de acessibilidade — os leitores de tela o ignoram completamente:

<!-- Decorative icon: visible but skip by screen readers -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>

<!-- Decorative separator -->
<img src="divider.svg" alt="" aria-hidden="true">

<!-- Note: aria-hidden does NOT affect visibility or tab focus
     A button with aria-hidden is still tabbable! -->

Casos de uso de aria-hidden

Usos apropriados para aria-hidden:

<!-- 1. Icons next to descriptive text -->
<button>
  <svg aria-hidden="true"><!-- icon --></svg>
  Save Document
</button>

<!-- 2. Repeated text in a card link -->
<a href="/blog/post-1">
  <span aria-hidden="true">Read more</span>
  <span class="sr-only">Read more: HTML5 Forms Guide</span>
</a>

<!-- 3. UI decoration (dots, decorative borders) -->
<span aria-hidden="true">•••</span>

Armadilha do aria-hidden

Nunca aplique aria-hidden a elementos focáveis:

<!-- BAD: button is in tab order but invisible to screen readers -->
<button aria-hidden="true">Close</button>

<!-- Users reach this via Tab but hear nothing
     They cannot tell if they're on a button or lost focus -->

<!-- If you want to hide from both: use hidden attribute -->
<button hidden>Close</button>

<!-- Or: disabled (but disabled removes from tab order) -->
<button disabled aria-hidden="true">Close</button>

aria-live

aria-live transforma uma região em uma região dinâmica — as alterações são anunciadas automaticamente:

<!-- polite: announce when user is idle -->
<div aria-live="polite" id="status"></div>

<!-- assertive: announce immediately, interrupting current speech -->
<div aria-live="assertive" id="errors"></div>

<script>
// Inject text to trigger announcement:
document.getElementById('status').textContent = 'File saved successfully.';
// Screen reader announces this without user moving focus
</script>

Valores de aria-live

Os três valores de aria-live:

  • off — padrão: as alterações não são anunciadas
  • polite — anunciado quando o usuário faz uma pausa; para atualizações não urgentes
  • assertive — anunciado imediatamente e interrompe o que está sendo lido; para erros e alertas críticos

aria-atomic

aria-atomic controla se a região inteira ou apenas as partes alteradas serão anunciadas:

<div aria-live="polite" aria-atomic="true" id="timer">
  Time remaining: 05:00
</div>
<!-- aria-atomic="true": announce the whole div each update -->
<!-- Without it: only the changed text node is announced
     'Time remaining: 05:00' vs just '05:00' -->

<script>
setInterval(() => {
  document.getElementById('timer').textContent = `Time remaining: ${getTime()}`;
}, 1000);
</script>

aria-relevant

aria-relevant especifica quais tipos de alterações serão anunciados:

<div
  aria-live="polite"
  aria-relevant="additions text"   <!-- announce added content and text changes -->
  id="feed"
>
  <!-- New items added here -->
</div>
<!-- Values: additions, removals, text, all
     Default: additions text
     aria-relevant="removals" needed to announce deleted items -->

Boas práticas para regiões dinâmicas

Orientações para regiões dinâmicas:

  • Use uma região dinâmica persistente para cada tipo de anúncio (não a crie e destrua)
  • Comece com o conteúdo vazio; insira texto para disparar o anúncio
  • Mantenha os anúncios concisos — os leitores de tela podem interrompê-los ou ficar para trás
  • Para estados de carregamento: use polite
  • Para erros de formulário: use assertive ou role="alert"

Padrões para notificações temporárias

Anunciando notificações temporárias com regiões dinâmicas:

<div
  role="status"
  aria-live="polite"
  aria-atomic="true"
  id="toast-container"
  class="sr-only"
></div>

<script>
function showToast(message) {
  const container = document.getElementById('toast-container');
  container.textContent = '';
  // Force rerender for re-announcement:
  requestAnimationFrame(() => {
    container.textContent = message;
  });
}
</script>

aria-busy

aria-busy="true" indica que o conteúdo está sendo atualizado:

<div id="feed" aria-live="polite" aria-busy="false">
  <!-- content -->
</div>

<script>
const feed = document.getElementById('feed');
feed.setAttribute('aria-busy', 'true');

await loadContent();
feed.innerHTML = newContent;

feed.setAttribute('aria-busy', 'false');
// Only now does the live region announce the update
</script>

Verificação rápida

Quando você deve usar aria-live="assertive" em vez de "polite"?

Recapitulação: aria-hidden e aria-live

Elementos essenciais sobre ocultação e regiões dinâmicas:

  • aria-hidden="true" — remove o elemento da árvore de acessibilidade (não se aplica a elementos focáveis!)
  • aria-live="polite" — anuncia as alterações quando o usuário está ocioso
  • aria-live="assertive" — anuncia imediatamente (para erros)
  • aria-atomic="true" — anuncia a região inteira quando há uma alteração
  • aria-busy — suprime os anúncios durante o carregamento
Grátis para começar

Aprenda HTML com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
40
Aulas
159

Perguntas Frequentes

A aula “aria-hidden e aria-live” é grátis?

Sim — o texto completo de “aria-hidden e aria-live” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de HTML Academy, atualize para CoddyKit PRO. O curso de HTML Academy inclui 4 aulas no total.

O que vou aprender em “aria-hidden e aria-live”?

Oculte elementos decorativos e anuncie conteúdo dinâmico aos leitores de tela. Você pratica HTML Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar HTML Academy?

Nenhuma experiência prévia é necessária. HTML Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “aria-hidden e aria-live”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de HTML Academy?

Sim. Cada aula de HTML Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Quando usar ARIA em vez de HTML nativo
  2. role button alert dialog e landmark
  3. aria-label aria-labelledby e aria-describedby
  4. aria-hidden e aria-live
← Voltar para HTML Academy