C'est quoi
Le contenu d'une page web peut être affiché via HTML (texte, images avec alt) ou via CSS (images de fond, pseudo-éléments ::before/::after).
Quand CSS est désactivé ou non chargé - navigateur texte (Lynx, eLinks), CSS non chargé suite à une erreur réseau, ou utilisateur qui désactive manuellement les styles - le contenu CSS-only disparaît.
Les situations problématiques courantes :
- Une image de fond (
background-image) qui porte une information (graphique, icône de statut, carte). - Du texte injecté via
content: "..."dans un pseudo-élément CSS. - Un visuel important affiché uniquement via
background-imagesur un<div>sans texte alternatif dans le HTML.
Qui est touché
- Les personnes utilisant des navigateurs texte (Lynx, eLinks) qui n'appliquent pas les CSS et n'affichent donc pas les images de fond ni les pseudo-éléments.
- Les personnes qui désactivent manuellement les feuilles de style pour améliorer leur expérience (haut contraste, lisibilité).
- Les robots d'exploration qui ignorent les CSS (impact SEO indirect possible).
Impact business
Les lecteurs d'écran n'exposent pas le contenu des pseudo-éléments CSS (::before, ::after) de façon uniforme selon les technologies et versions. Un contenu porté uniquement par ces mécanismes peut être totalement muet pour un utilisateur de lecteur d'écran.
Les images de fond informatives sont invisibles pour les lecteurs d'écran et pour tout utilisateur dont le navigateur ne charge pas les styles, que ce soit par choix ou par contrainte technique.
Comment le détecter
- Audit Mynto : le scanner détecte les images de fond sur des éléments non décoratifs et les pseudo-éléments contenant du texte informatif.
- Manuel : utilise l'extension "Web Developer" (Chrome/Firefox) et désactive les styles (CSS > Disable All Styles). Parcours la page et vérifie que toute l'information reste présente dans le DOM.
- DevTools : dans le panneau Styles, cherche
background-imageoucontent:sur des éléments qui semblent porter de l'information.
Comment corriger
<!-- Graphique informatif affiché via CSS background uniquement -->
<div class="carte-statut carte-statut--ok"></div>
<!-- CSS : .carte-statut--ok { background-image: url('statut-ok.png'); } --><!-- Graphique remplacé par une image HTML avec texte alternatif -->
<div class="carte-statut">
<img src="statut-ok.png" alt="Statut : validé">
</div>Pour les images de fond informatives, utilise une balise <img> avec un
attribut alt descriptif. Réserve les CSS background-image aux éléments
purement décoratifs.
Pour les textes dans ::before/::after :
- Si le texte est décoratif (guillemets, flèches ornementales), laisse
content:en place. N'ajoutearia-hidden="true"sur l'élément parent que si ce dernier n'a aucun autre contenu signifiant à exposer aux AT. - Si le texte est informatif, déplace-le dans le HTML.
Sur WordPress, vérifie les blocs Gutenberg et shortcodes qui insèrent des
icônes via ::before. Certains thèmes utilisent des polices d'icônes dont
les caractères Unicode sont illisibles sans CSS.
Questions fréquentes
Les images de fond décoratives sont-elles concernées ?
Non. Une image de fond purement décorative (texture, motif d'arrière-plan) ne transporte aucune information et n'a pas besoin d'alternative. Le problème concerne les images qui portent un sens : statut, graphique, carte, icône significative.
Les polices d'icônes (Font Awesome, etc.) sont-elles problématiques ?
Oui, si elles affichent une icône qui porte du sens sans alternative textuelle dans le HTML. Ajoute aria-label sur l'élément parent ou un <span> avec du texte masqué visuellement via .sr-only.
Ce critère est-il lié au critère RGAA 1.1 sur les images ?
Ils se complètent. RGAA 1.1 traite les images HTML sans attribut alt. RGAA 10.2 traite les informations portées uniquement par le CSS et donc absentes du HTML. Les deux doivent être respectés.
À lire aussi
Cette erreur est-elle sur ton site ?
Lance un audit Mynto gratuit. Tu sauras en quelques minutes si ton site est concerné, sur quelles pages, et avec quel impact.