0Pricing
CSS Academy · Leçon

Composant d’onglets avec :checked ou JS

Implémentez une interface à onglets avec la technique CSS :checked et comparez-la à une approche JavaScript.

Composant d’onglets avec :checked ou JS est une leçon CSS Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage CSS Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours CSS Academy comprend 4 leçons au total.

Exigences du composant à onglets

Un composant à onglets nécessite : un indicateur visuel de l’onglet actif, un panneau associé affiché ou masqué lors de la sélection, une navigation au clavier entre les onglets et des attributs ARIA accessibles. Ces fonctionnalités peuvent être obtenues avec du CSS pur grâce au stratagème :checked, ou avec JavaScript pour une meilleure accessibilité.

Le stratagème :checked

Les champs radio masqués servent d’état : chaque onglet est un <label> associé à un champ radio. Lorsqu’un bouton radio est coché, les combinateurs de frères CSS affichent le panneau correspondant et mettent en forme le libellé de l’onglet actif. Aucun JavaScript n’est nécessaire.

<div class="tabs">
  <input type="radio" name="tabs" id="tab-1" checked hidden />
  <label for="tab-1">Tab One</label>
  <div id="panel-1">Panel one content</div>
</div>

Architecture CSS avec :checked

Placez les champs radio, puis tous les libellés (onglets), puis tous les panneaux dans le même conteneur. Utilisez le combinateur de frères généraux (~) pour relier un bouton radio coché au panneau correspondant. Par défaut, les panneaux utilisent display: none ; le panneau correspondant reçoit display: block.

Limites de l’approche :checked

Le stratagème :checked ne peut pas mettre à jour les attributs ARIA (aria-selected, aria-controls), activer la navigation entre les onglets avec les touches fléchées, ni éviter que les contraintes d’ordre du DOM entrent en conflit avec les exigences de la conception visuelle. Ces lacunes limitent l’accessibilité réelle.

Composant d’onglets JavaScript

Un composant d’onglets en JS écoute les clics sur les boutons d’onglet, définit aria-selected sur l’onglet actif, met à jour aria-hidden sur les panneaux et gère le focus. Cette approche permet une conformité ARIA complète et des interactions au clavier conformes aux pratiques de conception ARIA.

Rôles ARIA pour les onglets

Utilisez role="tablist" sur le conteneur, role="tab" sur chaque bouton d’onglet avec aria-selected et aria-controls, ainsi que role="tabpanel" sur chaque panneau avec aria-labelledby. Les lecteurs d’écran annoncent le nombre d’onglets, la position de l’onglet et son état sélectionné.

Modèle d’interaction au clavier

Pratiques de conception ARIA pour les onglets : la touche Tab entre dans la liste d’onglets et place le focus sur l’onglet actif. Les flèches gauche et droite permettent de passer d’un onglet à l’autre. Origine et Fin permettent d’aller directement au premier ou au dernier onglet. Chaque déplacement avec une touche fléchée active l’onglet focalisé (modèle d’activation automatique).

CSS pour l’état actif

Mettez l’onglet actif en forme avec une bordure inférieure ou un changement d’arrière-plan à l’aide du sélecteur [aria-selected="true"] — cela fonctionne avec les approches JS et :checked. Le CSS reste ainsi synchronisé avec l’attribut d’état ARIA, ce qui évite de gérer deux états distincts.

<div role="tablist">
  <button role="tab" aria-selected="true">Overview</button>
  <button role="tab" aria-selected="false">Details</button>
</div>

Indicateur animé

Un indicateur animé d’onglet glisse d’un onglet à l’autre : placez un élément indicateur en position absolue, utilisez JavaScript pour définir sa position à gauche et sa largeur afin qu’elles correspondent aux dimensions de l’onglet actif, puis animez-le avec transition: left 200ms ease, width 200ms ease.

Débordement adaptatif des onglets

Lorsque les onglets débordent de leur conteneur sur les petits écrans, utilisez le défilement horizontal (overflow-x: auto; scrollbar-width: none) ou regroupez-les dans un menu déroulant sur mobile. L’approche avec une liste de sélection nécessite JS pour synchroniser la liste native avec la visibilité du panneau d’onglet.

CSS uniquement ou JS : quand utiliser chacun

Utilisez l’astuce :checked pour une interface utilisateur simple et non critique, lorsque l’accessibilité n’est pas une contrainte prioritaire. Utilisez des onglets JavaScript pour toute interface en production destinée aux utilisateurs du clavier ou d’un lecteur d’écran, ou pour les applications qui doivent respecter ARIA lors d’audits ou pour satisfaire des exigences légales.

Vérification des connaissances

Quelle est la principale limitation d’accessibilité de l’astuce CSS :checked pour les onglets ?

Résumé

L’astuce :checked permet de changer d’onglet uniquement avec CSS grâce aux champs radio et aux combinateurs de frères, mais elle ne fournit ni accessibilité ARIA ni accessibilité au clavier. Les onglets JavaScript dotés des rôles ARIA (tablist, tab, tabpanel), de la gestion de aria-selected et de la gestion des touches fléchées offrent l’expérience complète et accessible requise pour les composants en production.

Questions Fréquemment Posées

La leçon « Composant d’onglets avec :checked ou JS » est-elle gratuite ?

Oui — le texte complet de « Composant d’onglets avec :checked ou JS » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours CSS Academy, passe à CoddyKit PRO. Le cours CSS Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Composant d’onglets avec :checked ou JS » ?

Implémentez une interface à onglets avec la technique CSS :checked et comparez-la à une approche JavaScript. Tu pratiques CSS Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer CSS Academy ?

Aucune expérience préalable n'est requise. CSS Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Composant d’onglets avec :checked ou JS » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon CSS Academy ?

Oui. Chaque leçon CSS Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Composant carte avec des propriétés personnalisées CSS
  2. Styles des fenêtres modales et boîtes de dialogue
  3. Modèles de menus déroulants et fenêtres contextuelles
  4. Composant d’onglets avec :checked ou JS
← Retour à CSS Academy