Accordéon - Accordion
Les accordéons permettent aux utilisateurs d’afficher et de masquer des sections de contenu présentés dans une page.
En conformité avec la documentation officielle en bas de page, ce composant :
- introduit des niveaux de titre : assurez-vous de respecter la hiérarchie de la page ;
- ne doit pas être utilisé pour du contenu que vos utilisateurs devraient lire ;
- ne doit pas être utilisé pour un contenu très court : utilisez des listes ou paragraphes.
Accordéon avec trois sections
Les titres title
et les contenus sont obligatoires pour les sections.
L’attribut id
est optionnel et permet de définir une ancre HTML réutilisable.
S’il n’est pas passé un id
aléatoire sera généré.
Code
= dsfr_accordion do |accordion|
- accordion.with_section(title: "Un") { tag.p("Premier contenu") }
- accordion.with_section(title: "Deux", id: "section-deux") { tag.p("Deuxième contenu") }
- accordion.with_section(title: "Trois", expanded: true) { tag.p("Troisième contenu déplié") }
Résultat
Premier contenu
Deuxième contenu
<div class="fr-accordions-group">
<section class="fr-accordion">
<h3 class="fr-accordion__title">
<button
class="fr-accordion__btn"
aria-expanded="false"
aria-controls="accordion-section-352e2591"
>
Un
</button>
</h3>
<div
id="accordion-section-352e2591"
class="fr-collapse "
>
<p>
Premier contenu
</p>
</div>
</section>
<section class="fr-accordion">
<h3 class="fr-accordion__title">
<button
class="fr-accordion__btn"
aria-expanded="false"
aria-controls="section-deux"
>
Deux
</button>
</h3>
<div
id="section-deux"
class="fr-collapse "
>
<p>
Deuxième contenu
</p>
</div>
</section>
<section class="fr-accordion">
<h3 class="fr-accordion__title">
<button
class="fr-accordion__btn"
aria-expanded="true"
aria-controls="accordion-section-4abd8644"
>
Trois
</button>
</h3>
<div
id="accordion-section-4abd8644"
class="fr-collapse fr-collapse--expanded"
>
<p>
Troisième contenu déplié
</p>
</div>
</section>
</div>
Accordéon avec niveau de titre personnalisé
Si le niveau de titre par défaut (H3
) ne vous convient pas, vous pouvez le surcharger en passant l’option starting_header_level
.
Code
= dsfr_accordion(starting_header_level: 2) do |accordion|
- accordion.with_section(title: "Un") { tag.p("Premier contenu") }
- accordion.with_section(title: "Deux", id: "section-deux") { tag.p("Deuxième contenu") }
- accordion.with_section(title: "Trois", expanded: true) { tag.p("Troisième contenu déplié") }
Résultat
Premier contenu
Deuxième contenu
<div class="fr-accordions-group">
<section class="fr-accordion">
<h2 class="fr-accordion__title">
<button
class="fr-accordion__btn"
aria-expanded="false"
aria-controls="accordion-section-0fb13222"
>
Un
</button>
</h2>
<div
id="accordion-section-0fb13222"
class="fr-collapse "
>
<p>
Premier contenu
</p>
</div>
</section>
<section class="fr-accordion">
<h2 class="fr-accordion__title">
<button
class="fr-accordion__btn"
aria-expanded="false"
aria-controls="section-deux"
>
Deux
</button>
</h2>
<div
id="section-deux"
class="fr-collapse "
>
<p>
Deuxième contenu
</p>
</div>
</section>
<section class="fr-accordion">
<h2 class="fr-accordion__title">
<button
class="fr-accordion__btn"
aria-expanded="true"
aria-controls="accordion-section-ab9276e1"
>
Trois
</button>
</h2>
<div
id="accordion-section-ab9276e1"
class="fr-collapse fr-collapse--expanded"
>
<p>
Troisième contenu déplié
</p>
</div>
</section>
</div>