Images IMG

Implémentation des images <img> selon qu'elles sont décoratives, informatives ou illustratives.

Image IMG décorative : pas d’alternative textuelle

Pour savoir si une image est décorative, le plus simple est d’imaginer qu’il n’y a pas d’image et de se poser ensuite la question : « Est-ce que je perds de l’information ? ». Si la réponse à la question est « Non », alors l’image est décorative.

Quand les images sont décoratives, on n’ajoute pas d’alternative textuelle (alt). On peut alors coder l’image de plusieurs manières :

  • avec une alternative textuelle vide alt="" :
<img src="mon_image_decorative.png" alt="">
  • sans l’attribut alt mais avec l’attribut role="presentation" :
<img src="mon_image_decorative.png" role="presentation">

Image IMG illustrative ou informative

Cas d’une image « simple »

On posera un attribut alt décrivant l’information contenue dans l’image. Si l’image comporte du texte, on reprendra a minima celui-ci dans l’attribut alt.
Un exemple typique est celui du logotype.

Visuel
Sofève-Concept

Code HTML

<img src="/images/logo-sofeve.webp" alt="Sofève-Concept">

Cas d’une image « complexe »

Typiquement, une image complexe est un graphique, une infographie ; bref, une image qui nécessite une description détaillée car nécessitant plus de 6 mots pour la décrire (la longueur recommandée pour remplir l’attribut alt’ est de 5 à 6 mots).
Dans ce cas la description de l’image serait trop longue pour être contenu dans un attribut alt , on proposera alors sa description dans un texte proche de l’image concernée.

La théorie…

En théorie, d’après la documentation du W3C, il est tout à fait possible de proposer une description longue de l’image en utilisant l’attribut aria-describedby ou l’attribut longdesc. L’attribut aria-describedby ou l’attribut longdesc font alors référence à un id posé sur l’élément qui décrira l’image ; l’attribut alt qui sera quand même renseigné en reprenant (ou pas) le début de la description longue.

Visuel
Répartition des handicaps selon leur visibilité

Répartition des handicaps selon leur visibilité. 20% des handicaps sont visibles (handicap moteur, handicap visuel) et 80% des handicaps sont invisibles (handicap auditif, psychique, mental et maladie invalidante).

Code HTML

Dans cet exemple, le texte descriptif ne peut être lu que par les logiciels de synthèse vocale via la classe de style «.sr-only».

<img src="/images/handicap-repartition.webp" aria-describedby="description" alt="Répartition des handicaps selon leur visibilité">
<p id="description" class="sr-only">Répartition des handicaps selon leur visibilité. 20% des handicaps sont visibles (handicap moteur, handicap visuel) et 80% des handicaps sont invisibles (handicap auditif, psychique, mental et maladie invalidante).</p>

ou

<img src="/images/handicap-repartition.webp" longdesc="description" alt="Répartition des handicaps selon leur visibilité">
<div id="description" class="sr-only">
     <p>Répartition des handicaps selon leur visibilité. 20% des handicaps sont visibles (handicap moteur, handicap visuel) et 80% des handicaps sont invisibles (handicap auditif, psychique, mental et maladie invalidante).</p>
</div>

Hélas, cette implémentation conforme à celle préconisée par le W3C est mal ou pas restituée par les synthétiseurs vocaux. On priviligiera donc l’implémentation suivante…

L’implémentation 100% compatible avec les synthétiseurs vocaux

Pour s’assurer de la restitution de la description de l’image quel que soit le navigateur et le logiciel de synthèse vocale utilisé, le texte descriptif sera proposé juste après l’image.
Au choix du concepteur, la description sera proposée sous forme de texte pliant/dépliant, d’un lien vers une nouvelle page, d’un bouton ouvrant une fenêtre modale…

Exemple avec la description détaillée en-dessous de l’image

<p>
<img src="/images/handicap-repartition.webp" alt="Répartition des handicaps selon leur visibilité (description ci-après)"><br>
Répartition des handicaps selon leur visibilité. 20% des handicaps sont visibles (handicap moteur, handicap visuel) et 80% des handicaps sont invisibles (handicap auditif, psychique, mental et maladie invalidante).
</p>

Exemple avec la description sous forme de texte affiché / masqué
Pour afficher / masquer le texte, on aura alors recours à du javascript. Un exemple complet est disponible sur le site du W3C.

<img src="/images/handicap-repartition.webp" alt="Répartition des handicaps selon leur visibilité (description ci-après)">
<button aria-expanded="false" aria-controls="description">Description détaillée de la répartition des handicaps selon leur visibilité</button>
<div id="description" class="sr-only">
     <p>Répartition des handicaps selon leur visibilité. 20% des handicaps sont visibles (handicap moteur, handicap visuel) et 80% des handicaps sont invisibles (handicap auditif, psychique, mental et maladie invalidante).</p>
</div>

Images utilisées seules comme liens ou boutons

Dans le cas où une image seule sert de lien (une exemple typique est l’image en forme de maison pour représenter le lien vers la page d’accueil) :

  • la balise a du lien ne contiendra aucune description (pas de title ou pas de aria-label) ; idem pour une balise button ;
  • l’alternative textuelle alt de l’image servira d’intitulé du lien.

Exemple pour une image-lien

Accueil
<a href="/">
   <img src="maison.png" alt="Accueil" />
</a>

Exemple pour une image-bouton

<button>
    <img src="astuce.png" alt="Astuce">
</button>

Image-bouton utilisant input type="image"

<input type="image" src="loupe.svg" alt="Lancer la recherche" />

Images utilisées avec du texte comme liens ou boutons

Dans le cas où un lien ou un bouton est représenté à la fois par une image et du texte, alors l’image sera considérée comme décorative et donc implémentée avec un attribut alt vide.

<a href="/">
   <img src="maison.png" alt="" />Accueil
</a>

<button>
    <img src="astuce.png" alt="">Astuce
</button>

N.B. : il est aussi tout à fait possible dans ce cas, d’implémenter l’image via CSS.