0Pricing
HTML Academy · Aula

O atributo hidden

Alternar a visibilidade de um elemento com o atributo booleano hidden.

O atributo hidden é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 2 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.

O que é hidden?

O atributo hidden torna um elemento invisível e o remove da árvore de acessibilidade:

<p hidden>This paragraph is hidden.</p>
<!-- Equivalent to: display: none in CSS -->
<!-- The element is in the DOM but not rendered -->
<!-- Screen readers do not announce hidden elements -->

hidden é um atributo booleano

Atributos booleanos estão presentes (verdadeiro) ou ausentes (falso) — nenhum valor é necessário:

<!-- All of these are equivalent: -->
<div hidden>Content</div>
<div hidden="">Content</div>
<div hidden="hidden">Content</div>

<!-- Remove with JavaScript: -->
element.removeAttribute('hidden');

<!-- Or set: -->
element.setAttribute('hidden', '');

hidden vs display:none vs visibility:hidden

Três maneiras de ocultar elementos:

/* hidden attribute = display:none */
/* Element is removed from flow, invisible to AT */

/* visibility: hidden */
/* Element occupies space but is invisible */
/* Still read by some screen readers */

/* opacity: 0 */
/* Element occupies space, invisible, still interactive */
/* Still read by screen readers */

/* Hidden attribute is the simplest for fully hiding content */

Alternando a visibilidade com JavaScript

Controle a visibilidade adicionando ou removendo o atributo hidden:

const modal = document.getElementById('modal');

// Show:
modal.removeAttribute('hidden');
// or:
modal.hidden = false;

// Hide:
modal.setAttribute('hidden', '');
// or:
modal.hidden = true;

// Toggle:
modal.toggleAttribute('hidden');

CSS pode substituir hidden

display em CSS pode substituir o atributo hidden — tenha cuidado:

/* This makes hidden elements visible again: */
[hidden] {
  display: block !important;
}

/* Do not do this unless you have a very specific reason */

/* The hidden attribute should be trusted as the source of truth for visibility */

hidden vs aria-hidden

Dois tipos diferentes de ocultação:

  • hidden — oculto visualmente E removido da árvore de acessibilidade
  • aria-hidden="true" — oculto apenas da árvore de acessibilidade, mas continua sendo renderizado visualmente
<!-- hidden: nothing sees it -->
<div hidden>Completely hidden</div>

<!-- aria-hidden: visual users see it, screen readers skip it -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>

Padrão de exibição e ocultação

Alternância clássica entre exibição e ocultação com hidden:

<button
  aria-expanded="false"
  aria-controls="menu"
  id="menu-btn"
>Menu</button>

<ul id="menu" hidden>
  <li><a href="/">Home</a></li>
  <li><a href="/about">About</a></li>
</ul>

<script>
document.getElementById('menu-btn').addEventListener('click', function() {
  const menu = document.getElementById('menu');
  const expanded = this.getAttribute('aria-expanded') === 'true';
  menu.hidden = expanded;
  this.setAttribute('aria-expanded', !expanded);
});
</script>

Valor until-found (novo)

O HTML 5.1+ introduziu hidden="until-found" para conteúdo pesquisável, mas recolhido:

<details>
  <summary>Read More</summary>
  <div hidden="until-found" id="more-content">
    <p>This content is collapsed but findable by Ctrl+F.</p>
  </div>
</details>
<!-- hidden="until-found" hides visually but allows browser Ctrl+F to find and reveal it -->
<!-- Only supported in Chromium-based browsers currently -->

Comportamento dos leitores de tela

O atributo hidden oculta completamente o conteúdo das tecnologias assistivas:

  • Leitores de tela ignoram elementos ocultos
  • O foco pela tecla Tab não entra em elementos ocultos
  • Isso é correto para modais, menus fora da tela e painéis condicionais que não devem ser percorridos enquanto estiverem ocultos

Casos de uso comuns

Quando usar o atributo hidden:

  • Diálogos modais antes de serem abertos
  • Conteúdo de painéis de abas (exiba o painel da aba ativa e oculte os demais)
  • Assistentes baseados em etapas (exiba a etapa atual)
  • Divulgação progressiva (revele mais informações ao clicar)
  • Estados de carregamento (substitua o indicador de carregamento pelo conteúdo)

Persistência do estado hidden

Use localStorage para lembrar o estado de visibilidade entre os carregamentos da página:

const panel = document.getElementById('info-panel');
const key = 'info-panel-visible';

// Restore state:
if (localStorage.getItem(key) === 'false') {
  panel.hidden = true;
}

// On toggle:
document.getElementById('toggle-btn').addEventListener('click', () => {
  panel.hidden = !panel.hidden;
  localStorage.setItem(key, !panel.hidden);
});

Verificação rápida

Qual é a diferença entre o atributo hidden e aria-hidden?

Recapitulação: atributo hidden

Princípios essenciais do atributo hidden:

  • hidden — equivalente a display: none
  • Booleano: presença = oculto, ausência = visível
  • Removido da árvore de acessibilidade (diferentemente de visibility: hidden)
  • Alterne com element.hidden = true/false
  • aria-hidden="true" oculta apenas das tecnologias assistivas, mantendo a renderização visual

Perguntas Frequentes

A aula “O atributo hidden” é grátis?

Sim — o texto completo de “O atributo hidden” é 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 “O atributo hidden”?

Alternar a visibilidade de um elemento com o atributo booleano hidden. 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 2 de 4.

Quanto tempo leva a aula “O atributo hidden”?

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. id, class, style e title
  2. O atributo hidden
  3. tabindex e accesskey
  4. Atributos de dados personalizados data-*
← Voltar para HTML Academy