Composant accordéon CSS et JavaScript : un menu accessible à réutiliser partout
Problème de lecture
Cette vidéo ne semble pas disponible
00:00
00:00
Sous-titres non disponibles
1h18
de formation
19
leçons vidéo
5
chapitres
Intermédiaire
niveau requis
Carl Brison
Carl Brison
Formateur certifié

Composant accordéon CSS et JavaScript : un menu accessible à réutiliser partout

Vente flash ! -31%
4.8/5 Trustpilot (1399 avis) Satisfait ou remboursé
1h18
de formation
19
leçons vidéo
5
chapitres

Un accordéon accessible, vous l'avez peut-être déjà codé une fois. Le problème arrive au projet suivant : tout recopier, renommer les identifiants, recâbler les attributs ARIA et réécrire le script quand le comportement attendu change. Ce cours transforme cet accordéon en composant autonome : un fragment HTML à coller où vous voulez, des couleurs branchées sur vos design tokens, et un simple attribut pour choisir entre un seul panneau ouvert à la fois ou plusieurs.

Composant accordéon : ce que vous saurez faire

Au-delà de ce menu, la méthode vaut pour tout code que vous voulez rendre réutilisable.

  • Transformer un code existant en composant indépendant de son conteneur
  • Rendre un comportement réglable par un attribut data, sans toucher au script
  • Faire cohabiter plusieurs instances d'un composant sur une même page
  • Isoler les couleurs derrière un contrat de variables relié à vos tokens
  • Garder aria-expanded, aria-controls et hidden synchronisés avec l'état réel
  • Désactiver les animations pour qui les a coupées sur son système
  • Empêcher un bouton de soumettre un formulaire par accident

Mode single ou multiple : un attribut data-accordion, pas une ligne de JavaScript

Le comportement se règle dans le HTML. Avec la valeur multiple, chaque panneau s'ouvre et se ferme indépendamment ; avec single, ouvrir un panneau referme les autres du même groupe. Le script ne cherche pas les déclencheurs dans tout le document mais dans chaque accordéon, ce qui permet d'en poser plusieurs sur une page avec des réglages différents sans qu'ils interfèrent. La structure HTML et les attributs ARIA de départ sont repris du menu accordéon FAQ accessible du même formateur : ici, on ne les réexplique pas, on les industrialise.

Pourquoi l'ouverture de l'accordéon reste un fondu

Un effet de glissement à l'ouverture obligerait à retirer l'attribut hidden des panneaux fermés, et donc à les laisser lisibles par les lecteurs d'écran. Le cours fait le choix inverse : le panneau garde hidden, l'animation se limite à un fondu d'opacité, et elle disparaît entièrement quand l'utilisateur a demandé moins d'animations via prefers-reduced-motion. Moins spectaculaire, mais conforme.

Un composant documenté, rangé dans votre bibliothèque

Le composant rejoint le dossier components, sur le même modèle que le toggle switch de thème de l'épisode précédent : accordion.html, accordion.css et accordion.js, une page d'exemple qui montre un accordéon single et un multiple côte à côte, et un README qui rappelle l'intégration, les tokens requis et le chargement du CSS dans la couche components. Tous ces fichiers sont fournis.

Pour qui

Développeurs front-end de niveau intermédiaire, à l'aise avec HTML, CSS et JavaScript. Le cours s'appuie sur les briques posées dans les épisodes précédents de la série : nommage BEM, nesting CSS natif, variables et couches @layer. Si vous arrivez directement ici, ces notions sont utilisées sans être réexpliquées. Aucune librairie ni framework n'est nécessaire.

Pour aller plus loin

Si vous voulez couvrir les autres composants interactifs courants avec la même rigueur, le bundle accessibilité web : ARIA et composants accessibles réunit le menu burger, la modale, les onglets et l'accordéon.

Qu’allez-vous apprendre dans ce cours ?

Plan de cours
Chapitre 1
Introduction
Chapitre 2
Structure HTML et classes BEM
Chapitre 3
Styles du composant
Chapitre 4
Comportement en JavaScript
Chapitre 5
Robustesse, animation et documentation

Table des matières

Chapitre 1 : Introduction

04m
 
Leçon 1Objectif : intégrer l'accordéon à la bibliothèque

Chapitre 2 : Structure HTML et classes BEM

16m21
 
Leçon 1Reprendre le HTML de l'accordéon FAQ
Leçon 2Poser les classes BEM : bloc, item, title, trigger, panel
Leçon 3Rendre le HTML générique avec data-accordion

Chapitre 3 : Styles du composant

29m38
 
Leçon 1Structurer le CSS BEM avec le nesting natif
Leçon 2Définir le contrat de variables du composant
Leçon 3Espacer les items avec gap : grid ou flex
Leçon 4Styler les items et les titres
Leçon 5Styler le bouton déclencheur et son survol
Leçon 6Indicateur + et - et focus clavier visible
Leçon 7Styler le panneau de contenu

Chapitre 4 : Comportement en JavaScript

15m53
 
Leçon 1Gérer plusieurs accordéons sur une même page
Leçon 2Ouvrir et fermer les panneaux : mode multiple
Leçon 3Mode single : un seul panneau ouvert à la fois

Chapitre 5 : Robustesse, animation et documentation

12m15
 
Leçon 1Éviter la soumission de formulaire avec type=button
Leçon 2Animation en fondu et prefers-reduced-motion
Leçon 3Rédiger le README du composant
Leçon 4Ajouter l'accordéon à la bibliothèque de composants
Leçon 5Aperçu du prochain composant : la fenêtre modale

Vos questions sur le cours

Que contient le fichier source ?

Le code source complet.

Quelle différence avec le tuto « Créer un menu accordéon FAQ accessible » du même formateur ?

Le premier construit l'accordéon et explique ses attributs ARIA. Celui-ci part de ce code et le transforme en composant réutilisable : classes BEM, contrat de variables, mode single ou multiple, plusieurs accordéons par page. Si ARIA est nouveau pour vous, commencez par le menu accordéon FAQ accessible.

L'accordéon mémorise-t-il les panneaux ouverts après un rechargement de page ?

Non. L'état des panneaux n'est pas enregistré : au rechargement, ils reviennent à leur état initial défini dans le HTML.

Le cours couvre-t-il la navigation aux flèches entre les titres de l'accordéon ?

Non. Le composant repose sur des boutons natifs, utilisables à la tabulation et avec les touches Entrée et Espace, avec un focus visible. Pour la navigation aux flèches et les touches Début et Fin, voyez les accordéons accessibles RGAA avec navigation clavier.

Le cours utilise-t-il les balises details et summary ?

Non. L'accordéon est construit avec un titre contenant un bouton, l'attribut hidden sur les panneaux et les attributs aria-expanded, aria-controls et aria-labelledby, pilotés en JavaScript.

Le composant dépend-il d'une librairie ou d'un framework ?

Non. Le JavaScript est vanilla et sans dépendance, le CSS utilise le nesting natif et les couches @layer. Le composant attend seulement les design tokens du projet hôte, listés dans son README.

Quels fichiers sont fournis avec le cours ?

Le composant complet tel qu'il est rangé dans la bibliothèque : accordion.html, accordion.css et accordion.js, une page exemple.html avec un accordéon single et un multiple, et le README d'intégration. L'accès se fait à l'achat du cours ou avec l'abonnement Tuto.com.

Peut-on valider ses acquis à la fin du cours ?

Oui, un QCM accompagne le cours pour vérifier ce que vous avez retenu.

Deux façons de suivre cette formation

À l'unité
Pour vous former sur ce sujet précis
12,95€ 8,95€
Vente flash ! -31%
Paiement unique, sans abonnement
Accès à vie à cette formation
1h18 de vidéo • 5 chapitres
Satisfait ou remboursé voir conditions
Accès immédiat après paiement
Avec l'abonnement
Pour progresser en continu
34,90€ /mois
Sans engagement
Cette formation + 6 793 autres en illimité
Plus de 20 nouvelles formations par mois
Résiliable en 1 clic, à tout moment
Commencer avec l’abonnement
Accès immédiat, pendant votre abonnement

Inclus dans les deux formules

  • Hors connexion via l'app Tuto.com
  • Salon d'entraide pour vos questions
  • Certificat de complétion
Paiement sécurisé 1,4 million d'apprenants 4.8/5 Trustpilot
Logo carte-bancaire-monoLogo visa-monoLogo mastercardLogo paypal-monoLogo klarna-monoLogo apple-pay-monoLogo google-pay-mono
Une question avant de choisir ? Écrivez-nous ou appelez le 01 84 80 80 29 (du lundi au vendredi, 10h-12h et 14h-16h)

Formations complémentaires

Les apprenants qui suivent cette formation s'intéressent aussi à :

Abonnement 34,90€/mois

Attendez ! 🤗

Accédez à plus de 1427 tutos gratuits

Notre politique de protection des données