Libellés et alternatives de texte

Pour qu'un lecteur d'écran présente une UI vocale à l'utilisateur, les éléments significatifs doivent disposer de libellés appropriés ou d'autres textes alternatifs. Un libellé ou une alternative textuelle donne à un élément son nom accessible, l'une des propriétés clés permettant d'exprimer la sémantique des éléments dans l'arborescence d'accessibilité.

Lorsque le nom d'un élément est associé à son rôle, l'utilisateur bénéficie d'un contexte lui permettant de comprendre avec quel type d'élément il interagit et comment il est représenté sur la page. En l'absence de nom, le lecteur d'écran énonce uniquement le rôle de l'élément. Imaginez que vous essayez de naviguer sur une page et d'entendre les mots clés "bouton", "case à cocher" et "image" sans aucun contexte supplémentaire. C'est pourquoi les libellés et les alternatives au texte sont essentiels pour une expérience de qualité et accessible.

Inspecter le nom d'un élément

Vous pouvez facilement vérifier le nom accessible d'un élément à l'aide des outils pour les développeurs Chrome:

  1. Faites un clic droit sur un élément, puis sélectionnez Inspecter. Le panneau "Éléments des outils de développement" s'ouvre.
  2. Dans le panneau "Elements", recherchez le volet Accessibility (Accessibilité). Il peut être masqué derrière un symbole ».
  3. Dans la liste déroulante Propriétés calculées, recherchez la propriété Nom.
Volet d'accessibilité des outils de développement affichant le nom calculé pour un bouton.

Que vous examiniez un élément img avec du texte alt ou un élément input avec un élément label, tous ces scénarios aboutissent au même résultat: attribuer un nom accessible à un élément.

Vérifiez qu'il n'y a pas de noms manquants

Il existe différentes manières d'ajouter un nom accessible à un élément, en fonction de son type. Le tableau suivant répertorie les types d'éléments les plus courants nécessitant des noms accessibles et des liens vers des explications sur la façon de les ajouter.

Étiqueter les documents et les cadres

Chaque page doit comporter un élément title qui explique brièvement le sujet de la page. L'élément title donne son nom accessible à la page. Lorsqu'un lecteur d'écran entre dans la page, c'est le premier texte annoncé.

Par exemple, la page ci-dessous s'intitule "Recette de pâtisserie rapide de Mary's Maple Bar":

<!doctype html>
  <html lang="en">
    <head>
      <title>Mary's Maple Bar Fast-Baking Recipe</title>
    </head>
  <body>
    …
  </body>
</html>

De même, tous les éléments frame ou iframe doivent avoir des attributs title:

<iframe title="An interactive map of San Francisco" src="…"></iframe>

Bien que le contenu d'un iframe puisse contenir son propre élément title interne, un lecteur d'écran s'arrête généralement à la limite du frame et annonce le rôle de l'élément ("frame") et son nom accessible, fournis par l'attribut title. Cela permet à l'utilisateur de décider s'il souhaite entrer dans la trame ou la contourner.

Inclure des alternatives au texte pour les images et les objets

Un élément img doit toujours être accompagné d'un attribut alt pour donner à l'image son nom accessible. Si l'image ne se charge pas, le texte alt est utilisé comme espace réservé afin que les utilisateurs aient une idée de ce que l'image essayait de transmettre.

Écrire un texte alt efficace est un peu de l'art, mais voici quelques consignes que vous pouvez suivre:

  1. Déterminez si l'image fournit un contenu qui serait autrement difficile à obtenir à partir du texte qui l'entoure.
  2. Si c'est le cas, expliquez le contenu de la manière la plus succincte possible.

Si l'image fait office de décoration et ne fournit aucun contenu utile, vous pouvez lui attribuer un attribut alt="" vide pour la supprimer de l'arborescence d'accessibilité.

Une image encapsulée dans un lien doit utiliser l'attribut alt de img pour décrire la page vers laquelle l'utilisateur sera redirigé s'il clique sur le lien:

<a href="https://en.wikipedia.org/wiki/Google">
  <img alt="Google's wikipedia page" src="google-logo.jpg">
</a>

De même, si un élément <input type="image"> est utilisé pour créer un bouton d'image, il doit contenir du texte alt décrivant l'action qui se produit lorsque l'utilisateur clique sur le bouton:

<form>
  <label>
    Username:
    <input type="text">
  </label>
  <input type="image" alt="Sign in" src="./sign-in-button.png">
</form>

Objets intégrés

Les éléments <object>, généralement utilisés pour les intégrations telles que Flash, PDF ou ActiveX, doivent également contenir du texte alternatif. Comme pour les images, ce texte s'affiche si l'élément ne s'affiche pas. Le texte alternatif est inséré dans l'élément object sous forme de texte normal, comme "Rapport annuel" ci-dessous:

<object type="application/pdf" data="/report.pdf">
Annual report.
</object>

Les boutons et les liens sont souvent essentiels à l'expérience utilisateur d'un site, et il est important que les deux noms soient accessibles.

Boutons

Un élément button tente toujours de calculer son nom accessible à l'aide de son contenu textuel. Pour les boutons qui ne font pas partie d'un form, il suffit d'écrire une action claire, car le contenu textuel peut être tout ce dont vous avez besoin pour créer un nom accessible.

<button>Book Room</button>

Formulaire mobile avec un bouton &quot;Réserver la salle&quot;.

Les boutons en forme d'icône constituent une exception courante à cette règle. Un bouton d'icône peut utiliser une image ou une police d'icône pour fournir le contenu textuel du bouton. Par exemple, les boutons utilisés dans un éditeur WYSIWYG (What You See Is What You Get) pour mettre en forme du texte ne sont généralement que des symboles graphiques:

Icône d&#39;alignement à gauche

Lorsque vous utilisez des boutons en forme d'icône, il peut être utile de leur attribuer un nom explicite accessible à l'aide de l'attribut aria-label. aria-label remplace tout contenu textuel à l'intérieur du bouton, ce qui vous permet de décrire clairement l'action à toute personne utilisant un lecteur d'écran.

<button aria-label="Left align"></button>

Comme les boutons, les liens obtiennent principalement leur nom accessible à partir de leur contenu textuel. Une astuce consiste à insérer le texte le plus pertinent dans le lien lui-même, plutôt que des mots de remplissage tels que "Ici" ou "Lire la suite".

Pas assez descriptive
Check out our guide to web performance <a href="/guide">here</a>.
Contenu utile
Check out <a href="/guide">our guide to web performance</a>.

Cela est particulièrement utile pour les lecteurs d'écran qui proposent des raccourcis pour répertorier tous les liens de la page. Si les liens sont remplis de texte de remplissage répétitif, les raccourcis suivants deviennent beaucoup moins utiles:

Menu des liens de VoiceOver affichant le mot &quot;ici&quot;.
Exemple de VoiceOver, un lecteur d'écran pour macOS, montrant le menu de navigation par liens.

Ajouter des libellés aux éléments du formulaire

Il existe deux façons d'associer un libellé à un élément de formulaire (une case à cocher, par exemple). Ces deux méthodes permettent au texte du libellé de devenir également une cible de clic pour la case à cocher, ce qui est également utile pour les utilisateurs de souris ou d'écrans tactiles. Pour associer un libellé à un élément, vous avez deux possibilités:

  • Placer l'élément d'entrée à l'intérieur d'un élément de libellé
<label>
  <input type="checkbox">Receive promotional offers?</input>
</label>
  • Vous pouvez également utiliser l'attribut for du libellé et faire référence au id de l'élément.
<input id="promo" type="checkbox"></input>
<label for="promo">Receive promotional offers?</label>

Lorsque la case à cocher a été correctement libellée, le lecteur d'écran peut signaler que l'élément a le rôle de case à cocher, qu'il est coché et qu'il est nommé "Recevoir des offres promotionnelles ?", comme dans l'exemple VoiceOver ci-dessous:

Sortie textuelle VoiceOver indiquant &quot;Recevoir les offres promotionnelles ?&quot;

À FAIRE: Site DevSite – Évaluation Think and Check