Cases à cocher personnalisées en ARIA

Sommaire

Principe

Les cases à cocher sont des éléments de formulaires qui permettent de sélectionner une ou plusieurs options parmi un groupe d’options proposées.

Les cases à cocher sont dites « personnalisées en ARIA » lorsqu’elles ne sont pas construites sur la base du code HTML standard prévu pour ces éléments par la spécification : <input type="checkbox" />.

Le suivi des recommandations ci-dessous permet de reproduire le comportement par défaut des cases à cocher HTML standards, dans les cas où ces dernières ne peuvent être utilisées.

Cette fiche s’appuie sur le motif de conception « Checkbox » détaillé dans les ARIA Authoring Practices Guide (APG) du W3C.

Socle HTML

<div aria-labelledby="question" role="group">
<h2 id="question">Question</h2>
<ul>
<li>
<div role="checkbox" aria-checked="false" tabindex="0">
<img aria-hidden="true" src="checkbox.svg" alt="Non sélectionné : " />
Choix 1
</div>
</li>
<li>
<div role="checkbox" aria-checked="true" tabindex="0">
<img aria-hidden="true" src="checkbox-checked.svg" alt="Sélectionné : " />
Choix 2
</div>
</li>
<li>
<div role="checkbox" aria-checked="false" tabindex="0">
<img aria-hidden="true" src="checkbox.svg" alt="Non sélectionné : " />
Choix 3
</div>
</li>
</ul>
</div>

Rôles, états et propriétés ARIA

  • role="group" doit être appliqué sur le groupe de cases à cocher.
  • role="checkbox" et tabindex="0" doivent être appliqués sur le conteneur de chaque case à cocher.
  • aria-hidden="true" doit être appliqué sur chaque image simulant une case à cocher.
  • L’attribut aria-checked doit être appliqué sur le conteneur de chaque case à cocher. Sa valeur doit être renseignée dynamiquement en fonction de l’état de la case à cocher associée :
    • aria-checked="true" lorsque la case est cochée.
    • aria-checked="false" lorsque la case n’est pas cochée.
  • Le groupe de cases à cocher doit être rattaché à l’étiquette du groupe via l’attribut aria-labelledby :
    • L’étiquette du groupe doit posséder un attribut id renseigné avec une valeur unique.
    • Le groupe de cases à cocher doit posséder un attribut aria-labelledby renseigné avec la valeur de l’attribut id de l’étiquette du groupe.

Interactions au clavier

Les interactions au clavier sont les mêmes que pour des cases à cocher HTML classiques. À la seule exception que le focus clavier est ici positionné sur le conteneur de la case à cocher, et non uniquement sur la case à cocher.

Espace

Lorsque le focus clavier est sur le conteneur d’une case à cocher, coche/décoche la case à cocher, alternativement et en boucle.

Tab

Permet d’accéder successivement à chaque case à cocher, avant de sortir du groupe, dans l’ordre logique de lecture.

Maj + Tab

Même comportement qu’avec la touche Tab, mais cette fois dans l’ordre inverse de lecture.

Remarques

La source de l’image, ainsi que son texte alternatif, doivent être modifiés en fonction de l’état de la case à cocher correspondante.

À noter qu’une balise <img /> est proposée dans l’exemple de code, mais qu’il est également possible de la remplacer par une image vectorielle <svg>.

Composants

Ces composants « Cases à cocher personnalisées en ARIA » sont proposés ici car leur niveau d’accessibilité est jugé bon ou très bon.

Toutefois, avant de les utiliser dans votre projet, il est important de vérifier le respect des spécifications présentées ci-avant. Certains pouvant nécessiter quelques ajustements.

4 commentaires

  • Par Benjamin, le 13 novembre 2016 à 15h04.

    Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.

    Bonjour,

    Il y a quelque chose qui m’échappe dans votre exemple : quel est l’intérêt d’ajouter une balise alt sur l’image qui a par ailleurs un attribut aria-hidden ?

    Répondre

    • Par Sébastien Delorme, le 14 novembre 2016 à 11h10.

      Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.

      Bonjour,

      Ah ah, c’est la petite subtilité de la recommandation, si vous vous posez la question, c’est que vous avez en tout cas bien compris tout le reste. J’en suis ravi.

      En effet, ici, on place l’alternative de l’image plutôt pour d’autres raisons que l’accessibilité. C’est plutôt dans le cas où l’image ne serait pas chargée correctement, pour permettre d’afficher le texte alternatif.
      Et on ne la fait pas lire par les aides techniques pour éviter la redite.

      Sébastien.

      Répondre

      • Par Benjamin, le 14 novembre 2016 à 15h36.

        Ce commentaire a été publié sur une ancienne version des notices AcceDe Web. Il se peut que son contenu ne soit plus d'actualité.

        Je n’avais pas pensé à cet aspect, en effet :-)

  • Par Philippe Lhoste, le 20 octobre 2021 à 14h23.

    Ce commentaire a été publié il y a plus de 2 ans. Il se peut que son contenu ne soit plus d'actualité.

    Pour information, les cases à cocher peuvent avoir un état indéterminé / mixte.
    Voir https://www.w3.org/TR/wai-aria-practices-1.1/examples/checkbox/checkbox-2/checkbox-2.html
    Dans ce cas, on utilise aria-checked= »mixed ».

    Répondre

Ajouter un commentaire

Tous les champs sont obligatoires.

Haut de page