Pour concevoir le design d'une page web, doit-on placer les images dans les feuilles de styles CSS, par exemple en arrière-plan grâce à la propriété background-image, ou utiliser la classique balise <img>
?
Ces deux alternatives répondent à des besoins précis et sont complémentaires. Il ne faut surtout pas privilégier l'une aux dépens de l'autre.
Lorsque les feuilles de style sont désactivées, ou lors d'un rendu sur un navigateur non graphique ou un média différent de l'écran (navigateur textuel, imprimante, plage braille, synthèse vocale, etc.), les images d'arrière-plan ne sont pas restituées, contrairement aux éléments <img>
qui font partie intégrante du document. Seuls les éléments <img>
ont un mécanisme permettant de les remplacer par leur alternative textuelle lorsqu'elles ne sont pas restituées (l'attribut alt
).
Il peut s'agir d'illustration de fond, de bordures, d'arrondis, de puces ou toute autre décoration qui n'apporte rien au contenu de la page (c'est à dire que la page demeure lisible et compréhensible sans ces illustrations).
Elle peut être gérée de deux manières :
<img>
si celle-ci est dotée d'un attribut vide alt=""
. Il est indispensable de lui donner une alternative textuelle nulle puisqu'elle ne véhicule aucune information qui devrait être lue par un lecteur d'écran, affichée par un navigateur non graphique, etc. Un attribut alt non vide "parasitera" le contenu du document et rendra sa compréhension plus difficile.À partir du moment où l'image est informative et fait partie intégrante du contenu (une photo, un bouton d'action, un logo), ou lorsqu'elle a un rôle fonctionnel (image lien), il faut que cette information puisse être véhiculée même si les styles CSS sont désactivés ou sur les navigateurs non graphiques.
<img>
dûment renseignée avec l'attribut alt correspondant, pour en donner un équivalent textuel.Ceci est particulièrement important quand une image est le seul contenu d'un élément lien <a>
: elle ne doit alors en aucun cas être gérée en tant qu'image d'arrière-plan CSS. Si l'on souhaite réaliser un effet au survol (rollover), il faut passer par JavaScript (ou équivalent) : l'effet ne justifie pas le passage de l'image en arrière-plan CSS, qui ne serait pas accessible.