Accordéon et onglets JavaScript accessibles

Accordéon et onglets JavaScript

Accordéon et onglets JavaScript accessibles : code à copier-coller | We.Inc

Un accordéon en JavaScript natif avec hauteur animée et aria-expanded, et des onglets avec navigation aux flèches et roving tabindex. Les deux fonctionnent en direct sur la page, avec une checklist clavier et un tableau ARIA.

Un accordéon accessible utilise un vrai bouton dans chaque titre, avec aria-expanded pour indiquer si son panneau est ouvert et aria-controls pour nommer le panneau. Des onglets accessibles utilisent role=tablist, tab et tabpanel, avec aria-selected, et passent d'un onglet à l'autre avec les flèches du clavier, en ne gardant que l'onglet sélectionné dans l'ordre de tabulation. Les deux démos ci-dessous fonctionnent en direct.

Lequel utiliser

Chaque démo est un bloc autonome de HTML, CSS et JavaScript. Modifiez-le et le résultat se relance. Ensuite, laissez la souris de côté et testez-le au clavier à l'aide de la checklist plus bas.

Questions fréquentes

Les onglets doivent-ils changer avec les flèches ou avec Entrée ?

Le guide ARIA autorise les deux. Changer d'onglet au déplacement de la flèche (activation automatique) paraît le plus rapide quand les panneaux sont déjà chargés. Si l'affichage d'un panneau est lent, déplacez le focus avec les flèches et changez plutôt d'onglet avec Entrée ou Espace.

Comment animer la hauteur d'un accordéon sans mesure en JavaScript ?

Faites du panneau une grille et animez grid-template-rows de 0fr à 1fr, avec un élément intérieur en overflow hidden. Le navigateur calcule la hauteur pour vous.

Un élément details est-il accessible ?

Oui. Les navigateurs exposent summary comme un bouton avec un état développé, et il fonctionne au clavier sans rien ajouter. Styliser le marqueur et l'animer est plus difficile, c'est pourquoi beaucoup de sites construisent encore le leur.

Les réponses masquées d'un accordéon comptent-elles pour le SEO ?

Le contenu présent dans le HTML mais replié est tout de même exploré. Gardez-le dans le code source de la page plutôt que de le charger au clic, et assurez-vous que la réponse visible correspond à ce qui figure dans le HTML.

Pour aller plus loin

Erreurs courantes

Accordéon

Accordéon accessible avec hauteur animée

Chaque titre contient un vrai bouton avec aria-expanded et aria-controls. La hauteur s'anime grâce à une transition sur les rangées de grille, donc aucune mesure de scrollHeight. Essayez-le avec Tab, Entrée et Espace.

Un seul panneau ouvert à la fois

Quand un panneau s'ouvre, fermez tout autre panneau ouvert. Gardez cela facultatif : les gens qui comparent deux réponses veulent souvent les deux ouvertes.

Solution de repli sans JavaScript : details et summary

Les éléments details natifs s'ouvrent et se ferment sans script. Leur donner le même attribut name les rend exclusifs dans les navigateurs actuels ; les plus anciens permettent simplement d'en ouvrir plusieurs.

Onglets

Onglets avec roving tabindex et flèches du clavier

Seul l'onglet sélectionné a tabindex 0, donc Tab entre une seule fois dans la liste d'onglets puis passe au panneau. Les flèches gauche et droite passent d'un onglet à l'autre, Home et End sautent aux extrémités.

Checklist clavier et ARIA

Test au clavier : essayez chacun dans les démos

Référence ARIA

Attributs nécessaires pour chaque partie

Vous travaillez en React ? Partez de nos

composants d'onglets React

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site