Images fonctionnelles
Apercu – Images fonctionnelles
Les images fonctionnelles sont utilisées comme boutons, liens et commandes personnalisées. L’image est imbriquée dans la commande.
Il importe de s’assurer que la commande porte un nom accessible. Il existe deux stratégies.
Stratégie 1 : Fournir un nom accessible en utilisant l’attribut alt de l’élément img
Avec cette stratégie, la valeur de alt
d’une image fonctionnelle fournit le texte du lien ou le nom de la commande, qui sera lu par le lecteur d’écran. L’équivalent textuel de l’image doit indiquer l’action ou le résultat plutôt que la description littérale de l’image.
Les valeurs alt manquantes ou vides dans les images fonctionnelles créent des problèmes importants pour les utilisateurs de lecteurs d’écran. Les boutons et les commandes personnalisées indiquent uniquement leur rôle (p. ex., « bouton », « onglet ») et leur état (p. ex., « élargi »). Les images liées indiquent leur rôle (« lien ») et, en l’absence d’une valeur d’attribut alt
, les lecteurs d’écran essaient de deviner et indiquent plutôt le nom du fichier d’image ou le localisateur de ressources uniformes du lien, lequel ne sont pas descriptifs.
Bon exemple : Image liée
Dans l’exemple ci-dessous, le logo Canada.ca de la bannière renvoie à la page d’accueil Canada.ca. <img>
L’élément est imbriqué dans le lien. Le texte de remplacement « Page d’accueil du gouvernement du Canada » fournit le texte du lien.
L'exemple commence
L'exemple finit
HTML
Début du code
<a href="https://www.canada.ca/en.html">
<img src="https://www.canada.ca/etc/designs/canada/wet-boew/assets/sig-blk-en.svg" alt="Page d’accueil du gouvernement du Canada">
</a>
Fin du code
Bon exemple : Icône avec texte de remplacement utile imbriqué dans le texte du lien
Dans cet exemple, une icône avec le texte de remplacement utile « S’ouvre dans une nouvelle fenêtre » est imbriquée dans le lien avec le texte de lien « Page d’accueil du W3C ». Les utilisateurs du lecteur d’écran entendront « Page d’accueil du W3C, s’ouvre dans une nouvelle fenêtre ».
HTML
Début du code
<a href="https://www.w3.org/" target="_blank">
Page d’accueil du W3C
<img src="new-window.png" alt="S’ouvre dans une nouvelle fenêtre">
</a>
Fin du code
Remarque : Cette technique est souvent utilisée avec des icônes pour indiquer différents formats de fichier comme AVI, ODF, MP3, PDF, Word, etc. Dans ce cas, l’équivalent textuel doit transmettre le format représenté par chaque icône.
Bon exemple : Icône fonctionnelle
Dans cet exemple, une icône cliquable représentant une imprimante indique une fonction d’impression. Son équivalent textuel est « Imprimer cette page » plutôt que le mot littéral «Imprimante», car le but est d’activer la boîte de dialogue d’impression.
L'exemple commence
L'exemple finit
HTML
Début du code
<a href="javascript:print()">
<img src="print.png" alt="Imprimer cette page">
</a>
Fin du code
Bon exemple : Image utilisée dans un bouton
L’image suivante est utilisée pour donner au bouton un style distinct. Dans ce cas, il s’agit du bouton permettant de lancer une demande de recherche, et l’icône imbriquée est une loupe. L’équivalent textuel de l’image est « Recherche », pour indiquer la fonction du bouton, plutôt que « loupe ».
L'exemple commence
L'exemple finit
HTML
Début du code
<input type="image" src="searchbutton.png" alt="Recherche">
Fin du code
Bon exemple : Image redondante dans le texte du lien
Dans cet exemple, le logo de la société XYZ accompagne un lien texte qui mène à la page d’accueil de la société XYZ. L’image ne représente pas une fonctionnalité différente et ne transmet pas d’autres renseignements que ceux déjà fournis dans le texte du lien. En fait, l’image est une simple aide visuelle associée au texte du lien. Une valeur alt nulle (vide) est appliquée, (alt=""
), pour éviter la redondance et la répétition.
HTML
Début du code
<a href="https://www.CompanyXYZ.ca/">
<img src="logo.png" alt="">
Page d’accueil de la compagnie XYZ
</a>
Fin du code
Stratégie 2 : Fournir un nom accessible en utilisant l’attribut aria-label ou aria-labelledby
Avec cette stratégie, une étiquette ARIA sur la commande fournit le nom accessible de l’image fonctionnelle. L’attribut alt
de l’élément imbriqué <img>
est réglé sur null (vide) : alt=""
.
L’attribut alt de l’élément enfant <img>
pourrait contenir n’importe quelle valeur et cela n’aurait pas d’importance, car cette valeur serait supplantée par l’attribut aria-label
ou aria-labelledby
, qui a préséance sur le texte enfant lorsqu’on nomme une commande
Bon exemple : Nommer une image fonctionnelle à l’aide de l’attribut aria-label
Dans cet exemple, un attribut aria-label
nomme le bouton plutôt que l’attribut alt
de l’élément enfant <img>
. L’attribut alt
est réglé sur null (vide) : alt=""
.
HTML
Début du code
<button aria-label="Suivant">
<img src="images/next.png" alt="">
</button>
Fin du code
Bon exemple : Nommer des images fonctionnelles à l’aide des attributs aria-label et aria-labelled
Dans cet exemple, chacun des deux boutons de formatage du texte est accompagné d’un bouton « More » (Lire la suite) identique. Les boutons de formatage sont nommés avec l’attribut aria-label
. Les boutons « More » (Lire la suite) sont nommés avec l’attribut aria-labelledby
, pointant vers les valeurs id
des éléments contenant les fragments d’étiquette souhaités : « Lire la suite » + soit « Bullets » (Puces) soit « Text alignment » (Alignement du texte). L’attribut alt
de chaque élément de bouton <img>
est réglé sur null (vide) : alt=””
.
L'exemple commence
L'exemple finit
HTML
Début du code
<button id="bullets" aria-label="Puces">
<img src="images/bullets.png" alt="">
</button>
<button id="more-1" aria-label="Lire la suite" aria-labelledby="more-1 bullets">
<img src="images/down-arrow.png" alt="">
</button>
<button id="text-align" aria-label="Alignement du texte">
<img src="images/text-align.png" alt="">
</button>
<button id="more-2" aria-label="Lire la suite" aria-labelledby="more-2 text-align">
<img src="images/down-arrow.png" alt="">
</button>
Fin du code
Stratégie alternative : Une seule instance de l’étiquette de texte « More »
Lorsqu’ils utilisent l’attribut aria-labelledby
, les développeurs peuvent préférer cibler une valeur unique d’attribut id
cible pour le nom d’une icône répétitive.
Cette stratégie permet d’attribuer une valeur d’attribut id
à une instance définissant le texte « More » et de régler l’affichage des feuilles de style en cascades à « aucun ». L’attribut aria-labellearia-describedbyode>aria-describedby
) peut cibler un élément dont l’affichage
est établi à « aucun ». L’attribut aria-labelledby
concatène un nom en pointant les valeurs d’attribut id de l’instance qui définit et le bouton partenaire, ce qui donne les étiquettes « More Bullets » et « More Text alignment ».
Contrairement à la première stratégie, les boutons « More » n’ont pas besoin d’attributs id
ou aria-label
, car ils ne contribuent pas à l’étiquette concaténée.
HTML
Début du code
<span id="more" style="display:none">Lire la suite</span>
<button id="bullets" aria-label="Puces">
<img src="icons/bullets.png" alt="">
</button>
<button aria-labelledby="more bullets">
<img src="icons/down-arrow.png" alt="">
</button>
<button id="text-align" aria-label="Alignement du texte">
<img src="icons/text-align.png" alt="">
</button>
<button aria-labelledby="more text-align">
<img src="icons/down-arrow.png" alt="">
</button>
Fin du code
Ressources WCAG connexes
Ressources WCAG connexes
Critères de succès
Techniques
- H36 : Utiliser un attribut alt sur une image utilisée comme bouton soumettre (en anglais)
- H37 : Utiliser l'attribut alt sur l'élément img (en anglais)
- H67 : Utiliser un attribut alt vide sans attribut title sur un élément img pour les images qui doivent être ignorées par les technologies d'assistance (en anglais)
- ARIA6 : Utiliser aria-label pour attribuer des étiquettes aux objets (en anglais)
- ARIA9 : Utiliser aria-labelledby pour concaténer une étiquette provenant de plusieurs nœuds de texte (en anglais)
- ARIA10 : Utiliser aria-labelledby pour fournir un équivalent textuel pour un contenu non textuel (en anglais)