MeDo

Générateur d'Accordéon IA.

Décrivez vos sections et MeDo génère un accordéon dépliable — ouverture simple ou multiple, une animation de hauteur qui fonctionne avec n'importe quelle longueur de contenu, des liens directs qui ouvrent automatiquement un panneau, et le JSON-LD FAQPage correspondant pour les résultats enrichis.

Accordéon
Accordéon

Un panneau replié est un pari sur le caractère facultatif du contenu

On ajoute généralement un accordéon pour faire paraître une page plus courte, mais raccourcir la page n'est pas gratuit. Chaque section repliée échange la lisibilité en survol contre la densité : un visiteur qui aurait parcouru six réponses doit maintenant choisir laquelle cliquer, et la plupart n'en cliquent aucune. Ce compromis vaut la peine pour du contenu réellement secondaire comme les politiques de livraison, les questions de cas limites ou les longs tableaux de spécifications, et c'est un mauvais choix pour les deux ou trois réponses qui lèvent vraiment une objection d'achat. La bonne discipline consiste à faire remonter votre contenu à plus forte intention hors de l'accordéon vers le texte courant de la page, puis à laisser l'accordéon absorber la longue traîne. Cela règle aussi le versant SEO du même problème, puisque le texte présent dans le HTML mais dans un panneau fermé est indexé, alors que le texte injecté uniquement après un clic peut ne pas l'être.

6 modèles

Modèles de Accordéon que vous pouvez générer

Chaque modèle est un vrai prompt, pas une capture d'écran. Copiez-le dans n'importe quel éditeur IA, ou exécutez-le dans MeDo pour récupérer du code 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.

Tester dans 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.

Tester dans 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.

Tester dans 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.

Tester dans 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.

Tester dans 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.

Tester dans MeDo

Comment personnaliser votre Accordéon

Choisissez d'emblée entre <details> et un bouton

Une paire native <details> et <summary> fonctionne sans aucun JavaScript, est accessible au clavier par défaut et reste ouverte lorsque le navigateur recherche dans la page. Un bouton avec aria-expanded vous donne un contrôle total sur l'animation et la logique d'ouverture exclusive. Précisez celui que vous voulez, car ils produisent un balisage complètement différent.

N'animez jamais vers un max-height codé en dur

Un max-height fixe coupe les longues réponses et fait durer l'animation des courtes tout aussi longtemps. Demandez grid-template-rows animant de 0fr à 1fr, ou interpolate-size avec calc-size pour height auto, afin que la transition suive la hauteur réelle du contenu.

Soyez explicite sur ouverture unique ou multiple

L'ouverture exclusive garde la page courte et le lecteur concentré sur une réponse. Autoriser plusieurs panneaux ouverts est préférable quand les gens comparent des sections ou copient des détails depuis deux d'entre elles. Indiquez la valeur par défaut et si l'utilisateur peut tout refermer, car certains accordéons gardent un panneau ouvert en permanence.

Demandez les liens directs et le décalage de défilement ensemble

Ouvrir un panneau depuis un hash d'URL ne représente que la moitié de la fonctionnalité. Sans décalage de défilement explicite, la cible se retrouve sous un en-tête collant : mentionnez la hauteur de l'en-tête et demandez scroll-margin-top ou un décalage scripté dans le même prompt.

Qui utilise le composant Accordéon

Section FAQ d'un site marketing

Huit questions dans un accordéon à ouverture exclusive en bas d'une landing page, chaque élément accessible par lien direct pour que le support puisse pointer vers une réponse précise, avec le JSON-LD FAQPage émis depuis le même tableau de données.

Page produit e-commerce

Livraison, Retours et Instructions d'entretien repliés sous le bouton d'ajout au panier, gardant la zone d'achat visible tandis que le texte des politiques reste dans le HTML pour les moteurs de recherche.

Documentation ou base de connaissances

Étapes de dépannage dans un accordéon à ouverture multiple pour qu'un lecteur puisse garder deux sections liées dépliées côte à côte pendant qu'il applique un correctif.

Comparaison sur la page tarifs

Une longue matrice de fonctionnalités découpée en groupes dépliables comme Sécurité, Intégrations et Support, afin que les colonnes d'offres restent visibles au lieu de défiler sur trois écrans de lignes.

Modèles de Accordéon pour différents sites web

Le même composant accordéon, adapté au type de site sur lequel il est publié.

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.

Styles et variantes de Accordéon

Choisissez la variante qui correspond au reste de la page, puis générez-la.

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.

Accordéon en React, Next.js, Vue et Svelte

React, Next.js, Vue 3, SvelteKit, Astro ou HTML simple — le même accordéon, six façons de l'intégrer.

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>

Comment ajouter votre Accordéon à un projet

Quatre étapes, du choix d'un modèle de accordéon à sa mise en production.

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.

Questions fréquentes à propos de Accordéon

Comment générer un accordéon FAQ avec l'IA ?

Listez vos questions et réponses dans le prompt et précisez si un seul ou plusieurs panneaux peuvent être ouverts à la fois. MeDo génère les boutons d'en-tête accessibles avec aria-expanded et aria-controls, les panneaux animés et, en option, le JSON-LD FAQPage correspondant construit depuis le même contenu, afin que le balisage et les données structurées ne puissent pas diverger.

Dois-je utiliser <details> et <summary> ou un accordéon personnalisé ?

Utilisez <details> et <summary> quand vous voulez une base fiable : cela fonctionne avant le chargement de JavaScript, c'est accessible au clavier et aux lecteurs d'écran sans le moindre attribut, et cela participe à la recherche dans la page du navigateur. Optez pour un bouton avec aria-expanded quand vous avez besoin d'une ouverture exclusive, d'une courbe d'animation contrôlée ou d'un état stocké dans l'URL. L'élément natif peut désormais être animé aussi, les navigateurs prenant en charge les transitions de content-visibility et de height avec interpolate-size.

Comment animer un accordéon jusqu'à height auto ?

Enveloppez le panneau dans une grille CSS et faites une transition de grid-template-rows de 0fr à 1fr, avec overflow hidden sur l'élément interne. Cela suit la hauteur réelle du contenu sans aucune mesure en JavaScript. Dans les navigateurs prenant en charge interpolate-size: allow-keywords, vous pouvez faire une transition de height de 0 vers auto directement, ce qui est plus simple et mérite d'être utilisé en amélioration progressive.

Un accordéon FAQ peut-il obtenir des résultats enrichis dans Google ?

C'est possible si la page porte des données structurées FAQPage valides et que les questions et réponses apparaissent aussi dans le HTML rendu. Google a restreint l'éligibilité aux résultats enrichis FAQ principalement aux sites gouvernementaux et de santé faisant autorité : traitez donc le balisage comme un signal de clarté pour la recherche et les moteurs de réponse IA plutôt que comme une fonctionnalité SERP garantie. Demandez à MeDo de générer le JSON-LD depuis le même tableau qui rend les panneaux, pour qu'ils restent synchronisés.

Masquer du contenu dans un accordéon nuit-il au SEO ?

Le contenu présent dans le HTML mais replié visuellement est indexé normalement, et Google a indiqué que les accordéons sur mobile sont un motif responsive attendu. Les vrais risques sont de charger les réponses uniquement au clic, ce qui peut les laisser non explorées, et d'enfouir votre texte le plus important là où personne ne le déplie. Gardez le message principal dans le texte visible de la page et réservez les panneaux repliés aux détails secondaires.

Dois-je utiliser un accordéon ou des onglets ?

Choisissez un accordéon quand les sections sont indépendantes, quand les libellés sont assez longs pour se lire comme des phrases, ou quand le lecteur peut vouloir en garder plusieurs ouverts — c'est pourquoi les listes de FAQ sont presque toujours des accordéons. Choisissez des onglets quand les panneaux sont des alternatives mutuellement exclusives que l'on compare, comme une tarification mensuelle contre annuelle, et que les libellés sont assez courts pour tenir sur une seule ligne horizontale. Des libellés longs en forme de question sont le signal le plus clair que les onglets sont le mauvais motif.