MeDo

Gerador de Accordion com IA.

Descreva suas seções e o MeDo gera um accordion retrátil — comportamento de abertura única ou múltipla, uma animação de altura que funciona com qualquer tamanho de conteúdo, links diretos que abrem um painel automaticamente e o JSON-LD FAQPage correspondente para resultados enriquecidos.

Accordion
Accordion

Um painel recolhido é uma aposta de que o conteúdo é opcional

Accordions costumam ser adicionados para a página parecer mais curta, mas encurtar a página não é de graça. Cada seção recolhida troca escaneabilidade por densidade: quem teria passado os olhos por seis respostas agora precisa decidir em qual clicar, e a maioria não clica em nenhuma. Essa troca vale a pena para material genuinamente secundário, como políticas de envio, perguntas de casos extremos ou tabelas longas de especificações, e é um mau negócio para as duas ou três respostas que realmente resolvem uma objeção de compra. A disciplina útil é promover o conteúdo de maior intenção para fora do accordion e para o texto normal da página, deixando o accordion absorver a cauda longa. Isso também resolve o lado de SEO do mesmo problema, já que texto dentro de um painel fechado que está presente no HTML é indexado, enquanto texto injetado somente após um clique pode não ser.

6 modelos

Modelos de Accordion que você pode gerar

Cada modelo é um prompt real, não uma captura de tela. Copie para qualquer editor de IA, ou rode no MeDo e receba código React + Tailwind.

BasicFAQ Single-Open

Exclusive-Open FAQ List

One answer visible at a time, which keeps a long FAQ from turning into a wall once someone starts clicking. The default for landing-page questions.

Create an FAQ accordion with six items in single-open mode, where opening one item closes the currently open one. Each header is a full-width button carrying the question in 16px semibold text with a chevron on the right that rotates 180 degrees over 200ms; set aria-expanded on the button and aria-controls pointing at the panel, and give the panel role="region" with aria-labelledby back to the header id. Animate the panel with grid-template-rows from 0fr to 1fr so long answers never clip and short ones do not ease for the same duration. Enter and Space toggle, Tab moves between headers normally since each is its own tab stop, and a visible focus-visible ring is required. Allow the open item to be collapsed so no panel is forced open.

Teste no MeDo
ComparisonMulti-Open

Several Panels Open at Once

For troubleshooting steps and spec tables, where someone genuinely needs two sections side by side. Add Expand all only here — it is meaningless in exclusive mode.

Create a multi-open accordion where any number of panels may be expanded at once, holding open ids in a set rather than a single value. Add an Expand all and Collapse all control above the stack whose label reflects the current state, and make it a real button with aria-expanded describing the group. Each header is a button with aria-expanded and aria-controls; each panel is role="region" with aria-labelledby. Animate with grid-template-rows 0fr to 1fr so several simultaneous transitions do not fight a shared max-height. Preserve panel scroll position and any half-filled form fields by keeping panels in the DOM and toggling the hidden attribute rather than unmounting them. Enter and Space toggle the focused header.

Teste no MeDo
No JavaScriptNative Details

Details and Summary Accordion

Works before your bundle loads, is keyboard accessible with zero attributes, and joins find-in-page so a browser search opens the matching panel. The baseline to beat.

Create an accordion using native details and summary elements with no JavaScript at all. Give each details the same name attribute so the browser enforces exclusive-open behavior natively. Style the summary as a full-width row with 20px vertical padding, remove the default marker with list-style: none and ::-webkit-details-marker, and add a custom chevron that rotates using the details[open] selector. Animate the panel with interpolate-size: allow-keywords plus a height transition from 0 to auto, and add ::details-content to the transition so the reveal is smooth where supported and an instant open elsewhere. Keep a visible focus ring on the summary and ensure find-in-page still expands a closed panel.

Teste no MeDo
ShareableDeep Linked

Hash-Opened Panels With Copy Link

Every panel gets its own URL, so a support reply can point at one answer rather than "scroll down to the FAQ". The offset for the sticky header is the part that gets skipped.

Create an accordion where each item is addressable by URL hash. Give every header a stable slug id derived from its question, and on mount read location.hash, open the matching panel, and scroll it into view with scroll-margin-top of 96px so it does not land underneath a sticky header. Update the hash on open using history.replaceState so the back button is not filled with toggles, and listen for hashchange so in-page links work after the first render. Add a small copy-link button inside each header row that writes the absolute URL to the clipboard and swaps its label to Copied for two seconds; stop its click from bubbling to the header button so copying does not also collapse the panel.

Teste no MeDo
SEOFAQ Schema

Accordion With FAQPage JSON-LD

Panels and structured data generated from one array, which is the only way they stay in sync six months later. Treat the markup as a clarity signal, not a guaranteed rich result.

Create an FAQ accordion that renders both the interactive panels and a matching FAQPage JSON-LD script from the same array of question and answer objects, so the two cannot drift apart when someone edits a question. Emit the JSON-LD server-side in a script tag with type="application/ld+json", using Question and Answer entities with acceptedAnswer text. Render every answer into the HTML even while collapsed, hiding it with CSS rather than fetching it on click, since content injected after a click may never be crawled. Keep the accessible pattern intact: header buttons with aria-expanded and aria-controls, panels as role="region" with aria-labelledby, and a grid-template-rows height animation.

Teste no MeDo
NestedNested Groups

Grouped Accordion With Sub-Sections

Two levels for a long feature matrix or a knowledge base. Depth past two is where people lose the thread — if you need a third, the content wants its own page.

Create a nested accordion two levels deep: outer groups such as Security, Integrations and Support, each containing three to five child items. Indent child headers by 20px, drop their type size by one step, and keep every level as its own button with aria-expanded and aria-controls, panels as role="region" with aria-labelledby — do not use a treeview role, since these are disclosures, not a tree. Outer groups are multi-open and children are single-open within their parent. When a parent collapses, remember which children were open so reopening the parent restores that state rather than resetting it, and make sure the parent panel height animation accounts for children expanding after the parent has settled.

Teste no MeDo

Como personalizar seu Accordion

Decida entre <details> e um botão desde o início

Um par nativo de <details> e <summary> funciona sem nenhum JavaScript, é acessível por teclado por padrão e permanece aberto quando o navegador pesquisa a página. Um botão com aria-expanded dá controle total sobre a animação e a lógica de abertura exclusiva. Diga qual você quer, porque eles produzem marcações completamente diferentes.

Nunca anime até um max-height fixo

Um max-height fixo corta respostas longas e faz as curtas animarem pela mesma duração. Peça grid-template-rows animando de 0fr para 1fr, ou interpolate-size com calc-size para height auto, para que a transição siga a altura real do conteúdo.

Seja explícito sobre abertura única versus múltipla

A abertura exclusiva mantém a página curta e o leitor focado em uma resposta. Permitir vários abertos ao mesmo tempo é melhor quando as pessoas comparam seções ou copiam detalhes de duas delas. Defina o padrão e se o usuário pode fechar todos os itens, já que alguns accordions mantêm um painel sempre aberto.

Peça deep links e offset de rolagem juntos

Abrir um painel a partir do hash da URL é apenas metade do recurso. Sem um offset de rolagem explícito, o alvo fica embaixo de um cabeçalho fixo, então mencione a altura do cabeçalho e peça scroll-margin-top ou um offset via script no mesmo prompt.

Quem usa o componente Accordion

Seção de FAQ de site de marketing

Oito perguntas em um accordion de abertura exclusiva no fim de uma landing page, cada item com deep link para que respostas do suporte possam apontar para uma resposta específica, com JSON-LD FAQPage emitido do mesmo array de dados.

Página de produto de e-commerce

Envio, Trocas e Instruções de Cuidado recolhidos abaixo do botão de adicionar ao carrinho, mantendo a caixa de compra visível enquanto o texto das políticas permanece no HTML para os mecanismos de busca.

Documentação ou base de conhecimento

Passos de solução de problemas em um accordion de abertura múltipla, para que o leitor mantenha duas seções relacionadas expandidas lado a lado enquanto aplica uma correção.

Comparação na página de preços

Uma matriz longa de recursos dividida em grupos retráteis como Segurança, Integrações e Suporte, para que as colunas de planos continuem visíveis em vez de ficarem três telas acima.

Padrões de Accordion para diferentes sites

O mesmo componente accordion, ajustado ao tipo de site em que ele entra.

01 / 06

Marketing Site FAQ

Exclusive-open questions at the bottom of a landing page, with the two or three answers that actually resolve a purchase objection promoted out into plain page copy above. An accordion holding your strongest answer is an accordion hiding it.

Estilos e variações de Accordion

Escolha a variação que combina com o resto da página e gere-a.

01 / 06

Divider List Accordion

Flush rows separated by 1px light-grey lines, with no outer border at all. The quietest option and the right one for an FAQ of ten or more items, where card borders and gaps would add more visual noise than structure.

Accordion em React, Next.js, Vue e Svelte

React, Next.js, Vue 3, SvelteKit, Astro ou HTML puro — o mesmo accordion, seis formas de integrar.

01 / 06

React Accordion

Hold open ids in a Set so the same component covers single and multi-open — swap the set for one id and you have exclusive mode. No height measurement is needed if the panel animates with grid rows.

src/components/Accordion.tsx

const [open, setOpen] = useState(new Set())

<button
  aria-expanded={open.has(item.id)}
  aria-controls={`panel-${item.id}`}
  onClick={() => toggle(item.id)}
>
  {item.question}
</button>
<div id={`panel-${item.id}`} role="region" className="grid"
     style={{ gridTemplateRows: open.has(item.id) ? '1fr' : '0fr' }}>
  <div className="overflow-hidden">{item.answer}</div>
</div>

Como adicionar o seu Accordion a um projeto

Quatro passos, de escolher um modelo de accordion até subir para produção.

01~30s

Pick an Accordion Template

Decide two things first: single or multi-open, and native details versus a button with aria-expanded. Those choices produce different markup, so picking after generation means regenerating.

02~10s

Copy the Prompt

Take the prompt into MeDo, Lovable, Bolt, v0 or Cursor and paste your real questions and answers in place of the placeholders. If you want FAQPage JSON-LD, say so now so it is generated from the same array rather than hand-written later.

03~1min

Generate and Refine

You get React + Tailwind back with a live preview. Follow up in plain English — "allow several open at once", "open the panel matching the URL hash", "swap the chevron for a plus" — instead of editing the transition by hand.

04~2min

Check the Content and Ship

Before shipping, confirm the longest answer does not clip mid-animation, every answer is present in the HTML while collapsed, and your highest-intent copy is in open page text rather than behind a click.

Perguntas comuns sobre Accordion

Como gerar um accordion de FAQ com IA?

Liste suas perguntas e respostas no prompt e diga se um ou vários painéis podem ficar abertos ao mesmo tempo. O MeDo gera os botões de cabeçalho acessíveis com aria-expanded e aria-controls, os painéis animados e, opcionalmente, o JSON-LD FAQPage construído a partir do mesmo conteúdo, para que a marcação e os dados estruturados não fiquem dessincronizados.

Devo usar <details> e <summary> ou um accordion personalizado?

Use <details> e <summary> quando quiser uma base confiável: funciona antes de o JavaScript carregar, é acessível por teclado e leitor de tela sem nenhum atributo e participa do recurso de busca na página do navegador. Escolha um botão com aria-expanded quando precisar de abertura exclusiva, uma curva de animação controlada ou estado que viva na URL. O elemento nativo já pode ser animado agora que os navegadores suportam transições de content-visibility e height com interpolate-size.

Como animar um accordion até height auto?

Envolva o painel em um CSS grid e faça a transição de grid-template-rows de 0fr para 1fr, com overflow hidden no elemento interno. Isso segue a altura real do conteúdo sem medição em JavaScript. Em navegadores com suporte a interpolate-size: allow-keywords, você pode transicionar height de 0 para auto diretamente, o que é mais simples e vale a pena como melhoria progressiva.

Um accordion de FAQ pode ganhar resultados enriquecidos no Google?

Pode, se a página tiver dados estruturados FAQPage válidos e as perguntas e respostas também aparecerem no HTML renderizado. O Google restringiu a elegibilidade dos resultados enriquecidos de FAQ principalmente a sites governamentais e de saúde com autoridade, então trate a marcação como um sinal de clareza para a busca e para mecanismos de resposta com IA, não como um recurso garantido na SERP. Peça ao MeDo para gerar o JSON-LD do mesmo array que renderiza os painéis, para que fiquem sincronizados.

Esconder conteúdo em um accordion afeta o SEO?

Conteúdo que está no HTML mas visualmente recolhido é indexado normalmente, e o Google já disse que accordions no mobile são um padrão responsivo esperado. Os riscos reais são carregar as respostas apenas no clique, o que pode deixá-las sem rastreamento, e enterrar seu texto mais importante onde ninguém expande. Mantenha a mensagem principal no texto visível da página e use os painéis recolhidos para detalhes complementares.

Devo usar um accordion ou abas?

Escolha um accordion quando as seções são independentes, os rótulos são longos o suficiente para se ler como frases, ou o leitor pode querer mais de um aberto ao mesmo tempo — é por isso que listas de FAQ são quase sempre accordions. Escolha abas quando os painéis são alternativas mutuamente exclusivas sendo comparadas, como preço mensal versus anual, e os rótulos são curtos o suficiente para caber em uma linha horizontal. Rótulos longos em forma de pergunta são o sinal mais claro de que abas são o padrão errado.