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 :
- Effectuez un clic droit sur un élément, puis sélectionnez Inspecter. Le panneau "Éléments" des outils de développement s'ouvre.
- Dans le panneau "Éléments", recherchez le volet Accessibilité. Il est peut-être masqué derrière un symbole
»
. - Dans le menu déroulant Propriétés calculées, recherchez la propriété Name (Nom).
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.
Type d'élément | Ajouter un nom |
---|---|
Document HTML | Étiqueter des documents et des cadres |
Éléments <frame> ou <iframe>
|
Étiqueter des documents et des cadres |
Éléments image | Ajoutez des alternatives textuelles aux images et aux objets. |
Éléments <input type="image">
|
Ajoutez des alternatives textuelles aux images et aux objets. |
Éléments <object>
|
Ajoutez des alternatives textuelles aux images et aux objets. |
Boutons | Ajouter des libellés aux boutons et aux liens |
Liens | Ajouter des libellés aux boutons et aux liens |
Éléments de formulaire | Ajouter des libellés aux éléments du formulaire |
É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 :
- Déterminez si l'image fournit un contenu qui serait autrement difficile à obtenir en lisant le texte environnant.
- 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é.
Images en tant que liens et entrées
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>
Étiqueter les boutons et les liens
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>
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:
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>
Liens
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".
Check out our guide to web performance <a href="/guide">here</a>.
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 :
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 auid
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 :
À FAIRE : DevSite - Évaluation "Penser et vérifier"