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 ou d'alternatives textuelles appropriés. Un libellé ou un texte alternatif donne à un élément son nom accessible, l'une des propriétés clés pour exprimer la sémantique des éléments dans l'arborescence d'accessibilité.

Lorsque le nom d'un élément est associé à son rôle, il fournit un contexte à l'utilisateur afin qu'il puisse comprendre le type d'élément avec lequel il interagit et la façon dont il est représenté sur la page. Si aucun nom n'est présent, un lecteur d'écran n'annonce que le rôle de l'élément. Imaginez que vous essayiez de naviguer sur une page et que vous entendiez "bouton", "case à cocher" ou "image" sans contexte supplémentaire. C'est pourquoi l'étiquetage et les alternatives de texte sont essentiels pour une bonne expérience accessible.

Inspecter le nom d'un élément

Il est facile de vérifier le nom accessible d'un élément à l'aide des outils pour les développeurs de Chrome :

  1. Effectuez 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 "Éléments", recherchez le volet Accessibilité. Il est peut-être masqué derrière un symbole ».
  3. Dans le menu déroulant Propriétés calculées, recherchez la propriété Name (Nom).
Volet d'accessibilité de DevTools affichant le nom calculé d'un bouton.

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

Rechercher les noms manquants

Il existe différentes façons 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 qui nécessitent des noms accessibles et des liens vers des explications sur leur ajout.

Étiqueter des documents et des cadres

Chaque page doit contenir un élément title qui explique brièvement de quoi il s'agit. L'élément title attribue à la page son nom accessible. Lorsqu'un lecteur d'écran accède à la page, il s'agit du premier texte annoncé.

Par exemple, la page ci-dessous s'intitule "Recette rapide de barres à l'érable de Mary" :

<!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 comporter des attributs title :

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

Bien que le contenu d'un élément 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, fourni par l'attribut title. L'utilisateur peut ainsi décider s'il souhaite entrer dans le frame ou le contourner.

Inclure des alternatives textuelles 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 parvient pas à se charger, le texte alt est utilisé comme espace réservé pour que les utilisateurs aient une idée de ce que l'image essayait de transmettre.

Rédiger un bon texte alt est un peu un art, mais vous pouvez suivre quelques consignes :

  1. Déterminez si l'image fournit un contenu qui serait autrement difficile à obtenir en lisant le texte environnant.
  2. Si c'est le cas, transmettez le contenu de la manière la plus concise possible.

Si l'image sert 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 destination de l'utilisateur 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 "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>, qui sont généralement utilisés pour les éléments intégrés tels que Flash, les PDF ou ActiveX, doivent également contenir un texte alternatif. Comme pour les images, ce texte s'affiche si l'élément ne s'affiche pas. Le texte alternatif se trouve dans l'élément object sous forme de texte standard, 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 d'un site, et il est important qu'ils aient tous les deux des noms 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 peut suffire d'écrire une action claire comme contenu textuel pour créer un nom accessible.

<button>Book Room</button>

Formulaire pour mobile avec un bouton &quot;Réserver une chambre&quot;.

Les boutons avec 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 la mise en forme du texte ne sont généralement que des symboles graphiques:

Bouton d&#39;icône d&#39;alignement à gauche.

Lorsque vous travaillez avec des boutons d'icône, il peut être utile de leur attribuer un nom accessible explicite à 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 pour les boutons, le nom accessible des liens provient principalement de leur contenu textuel. Lors de la création d'un lien, une astuce consiste à placer le texte le plus pertinent dans le lien lui-même, plutôt que des mots de remplissage comme "ici" ou "En savoir plus".

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 lister tous les liens de la page. Si les liens sont remplis de texte de remplissage répétitif, ces raccourcis deviennent beaucoup moins utiles :

Menu de liens de VoiceOver contenant le mot &quot;here&quot; (ici).
Exemple de VoiceOver, un lecteur d'écran pour macOS, affichant 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 tel qu'une case à cocher. L'une ou l'autre de ces méthodes fait en sorte que le texte du libellé devienne également une cible de clic pour la case à cocher, ce qui est également utile pour les utilisateurs de souris ou d'écran tactile. Pour associer un libellé à un élément, procédez comme suit :

  • Placez l'élément de saisie dans 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 indiquer 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 :

Texte VoiceOver indiquant &quot;Recevoir des offres promotionnelles ?&quot;

À FAIRE : DevSite - Évaluation "Penser et vérifier"