0Pricing
HTML Academy · Aula

details e summary: componente de divulgação

Crie componentes nativos de expansão e recolhimento sem JavaScript.

details e summary: componente de divulgação é uma aula grátis de HTML Academy no CoddyKit. Esta é a aula 3 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 são details e summary?

Os elementos <details> e <summary> criam um componente nativo de divulgação — um componente de expandir e recolher — sem nenhum JavaScript:

<details>
  <summary>What is HTML?</summary>
  <p>HTML (HyperText Markup Language) is the standard markup language
     used to create web pages.</p>
</details>

Como funciona

Comportamento da interação:

  • Por padrão, apenas o <summary> fica visível
  • Clicar em summary alterna a visibilidade do conteúdo restante
  • Um triângulo de expansão aparece em summary por padrão
  • Não é necessário JavaScript

O atributo open

O atributo open expande previamente o elemento details:

<details open>
  <summary>Installation instructions</summary>
  <ol>
    <li>Download the installer</li>
    <li>Run the installer</li>
    <li>Restart your computer</li>
  </ol>
</details>
<!-- open is a boolean attribute: presence = expanded -->
<!-- Remove it to start collapsed -->

Criando uma FAQ

Seções de FAQ são um caso de uso perfeito:

<h2>Frequently Asked Questions</h2>

<details>
  <summary>Is HTML5 a programming language?</summary>
  <p>No. HTML5 is a markup language that defines the structure and meaning
     of web content. Programming languages like JavaScript add logic and behavior.</p>
</details>

<details>
  <summary>Do I need to close void elements?</summary>
  <p>In HTML5, void elements like &lt;img&gt; and &lt;br&gt; do not require
     a closing slash. Both &lt;br&gt; and &lt;br /&gt; are valid.</p>
</details>

Estilizando details e summary

Personalize a aparência:

details {
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
  margin-bottom: 0.5rem;
}

summary {
  font-weight: 600;
  cursor: pointer;
  list-style: none;   /* remove default triangle */
}

summary::before {
  content: '▶ ';      /* custom arrow */
}

details[open] > summary::before {
  content: '▼ ';      /* rotate when open */
}

Removendo o triângulo padrão

O triângulo de expansão é aplicado com list-style:

/* Remove the default arrow: */
summary {
  list-style: none;
}

/* Firefox: */
summary::-webkit-details-marker {
  display: none;
}

/* Then add a custom indicator: */
summary::after {
  content: '+';
  float: right;
}
details[open] summary::after {
  content: '−';
}

Evento toggle

Monitore a abertura e o fechamento com o evento toggle:

const details = document.querySelector('details');

details.addEventListener('toggle', () => {
  if (details.open) {
    console.log('Details opened');
    // Track analytics, load content, etc.
  } else {
    console.log('Details closed');
  }
});

Acordeão com details

Crie um acordeão básico — apenas um painel aberto por vez:

/* Pure CSS accordion using details: */
/* Each item is a details element */
/* For exclusive open, use JavaScript: */

const allDetails = document.querySelectorAll('details');
allDetails.forEach(d => {
  d.addEventListener('toggle', () => {
    if (d.open) {
      allDetails.forEach(other => {
        if (other !== d) other.removeAttribute('open');
      });
    }
  });
});

Acessibilidade de details/summary

Recursos de acessibilidade integrados:

  • summary recebe foco do teclado e pode ser ativado com Enter ou Espaço
  • Leitores de tela anunciam o texto de summary e o estado de expansão
  • O conteúdo oculto está no DOM, mas é anunciado como oculto até ser expandido

Atributo name para acordeão exclusivo

O HTML 2025 adiciona name a details para criar um acordeão exclusivo nativo:

<details name="faq">
  <summary>Question 1</summary>
  <p>Answer 1...</p>
</details>

<details name="faq">
  <summary>Question 2</summary>
  <p>Answer 2...</p>
</details>
<!-- details with the same name act as a group -->
<!-- Opening one closes the others automatically -->
<!-- Supported in Chrome 120+ and Firefox 130+ -->

Carregamento sob demanda com toggle

Carregue o conteúdo somente quando details for aberto:

<details id="advanced">
  <summary>Load advanced settings...</summary>
  <div id="advanced-content">Loading...</div>
</details>

<script>
const d = document.getElementById('advanced');
d.addEventListener('toggle', async () => {
  if (d.open) {
    const res = await fetch('/api/settings');
    const html = await res.text();
    document.getElementById('advanced-content').innerHTML = html;
    d.removeEventListener('toggle', arguments.callee);
  }
}, { once: true });
</script>

Verificação rápida

Qual elemento fornece o texto de acionamento sempre visível em um componente de divulgação details?

Recapitulação: detalhes e resumo

Elementos essenciais do widget de divulgação:

  • <details> + <summary> — expansão/recolhimento nativos, sem necessidade de JavaScript
  • Atributo open — expande previamente
  • Evento de alternância — reage à abertura/ao fechamento
  • Estilize com CSS; remova o triângulo padrão com list-style: none
  • Atributo name — acordeão exclusivo (Chrome 120+)

Perguntas Frequentes

A aula “details e summary: componente de divulgação” é grátis?

Sim — o texto completo de “details e summary: componente de divulgação” é 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 “details e summary: componente de divulgação”?

Crie componentes nativos de expansão e recolhimento sem JavaScript. 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 3 de 4.

Quanto tempo leva a aula “details e summary: componente de divulgação”?

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. aside: conteúdo complementar
  2. figure e figcaption: uma revisão
  3. details e summary: componente de divulgação
  4. Os elementos progress e meter
← Voltar para HTML Academy