Utilisation des CSS : rendre invisible un contenu nécessaire aux utilisateurs de lecteurs d’écrans
![]() |
|
Imprimer
|
Envoyer
|
Partager
|
Avertissement : la version originale de ce document est CSS in Action: Invisible Content Just for Screen Reader Users. Cette traduction en français a été réalisée par Ideose dans le cadre d’un accord entre WebAIM et Ideose.
Note : consulter la page Documents sur l’accessibilité du Web pour obtenir la liste de tous les documents déjà traduits. D’autres ressources sur l’accessibilité du Web sont également listées dans le Portail du numérique accessible.
Sommaire
Introduction
Il y a parfois des cas où le contenu doit être mis à la disposition des utilisateurs de lecteur d’écran mais caché aux personnes voyantes. Dans la plupart des cas, si le contenu (en particulier le contenu qui fournit des fonctionnalités ou de l’interactivité) est suffisamment important pour les utilisateurs de lecteur d’écran, il devrait probablement être mis à la disposition de tous les utilisateurs. Les cas où des informations ou des instructions sont fournies uniquement aux utilisateurs de lecteurs d’écran sont davantage un reflet d’une mauvaise conception et d’une mauvaise accessibilité. Cependant, il existe quelques cas où une information est évidente visuellement mais peut ne pas l’être pour les utilisateurs de lecteurs d’écran. Dans ces cas, il est approprié de coder une instruction à propos de cette information de telle manière qu’elle soit lue par un lecteur d’écran mais invisible aux utilisateurs voyants.
Techniques pour cacher du texte
Il existe plusieurs mécanismes pour cacher du contenu. Il est important qu’une technique mise en œuvre donne le résultat souhaité et qu’elle soit accessible.
visibility: hidden; et/ou display:none;
Ces styles cachent le texte à tous les utilisateurs. Le texte est retiré du flux visuel de la page et est ignoré par les lecteurs d’écran. Ne pas utiliser ce style CSS si vous voulez que le contenu soit lu par un lecteur d’écran. Mais utilisez le si vous voulez que le contenu ne soit pas lu par les lecteurs d’écran.
width:0px;height:0px
Comme ci-dessus, parce qu’un élément sans hauteur, ni la largeur est retiré du flux de la page, la plupart des lecteurs d’écran ignoreront ce contenu. Les attributs HTML width et height avec une valeur à zéro pourraient donc donner le même résultat. Ce n’est pas une approche correcte pour cacher visuellement du contenu, mais cela permet au contenu d’être lu par un lecteur d’écran.
text-indent: -1000px;
Cette approche déplace le contenu de 1000 pixels vers la gauche – en dehors donc de l’écran visible. Les lecteurs d’écran liront toujours le texte avec ce style. Cependant, si un lien ou un élément de formulaire est équipé de ce style, il peut résulter en une indication de focus (les lignes pointillées ou les « fourmis en marche » qui entourent un lien avec le focus) qui s’étendra de l’endroit où l’élément doit être situé dans la page à l’endroit où il est en fait réellement situé (loin à gauche). Ce n’est pas très joli. En tant que tel, il s’agit d’une option correcte si l’élément ne contient pas d’éléments de navigation.
Positionner le contenu hors écran de manière absolue
Utilisez les CSS pour déplacer le contenu caché à une position hors écran est considéré générallement comme la méthode la plus utile et la plus accessible pour cacher visuellement du contenu.
Positionner le contenu hors de l’écran
Les styles suivant sont recommandés pour cacher visuellement du contenu qui sera lu par un lecteur d’écran.
{position:absolute;
left:-10000px;
top:auto;
width:1px;
height:1px;
overflow:hidden;}
La classe CSS .hidden doit alors être indiquée dans le code de l’élément qui doit être caché de la manière suivante :
<div class="hidden">Ce texte et caché.</div>
Les utilisateurs voyants ne verront pas du tout le contenu caché. Il est en fait affiché hors de leur portée – bien caché à gauche de la fenêtre visible du navigateur. Les utilisateurs de lecteurs d’écran auront accès au contenu comme s’il n’était pas caché. Les lecteurs d’écran liront le contenu normalement, en ignorant complètement les styles utilisés dans cette technique.
Analysons le code en détail.
position:absolute; dit au navigateur de supprimer l’élément du flux de la page et de commencer à le positionner. left:-10000px; déplace le contenu de 10000 pixels à gauche. top:auto; indique au navigateur de positionner verticalement le contenu à la même position où il était à l’origine. L’omission de top pourrait avoir comme conséquence que le style left soit ignoré dans certains cas et dans certains navigateurs. En bref, cette partie du code déplace l’élément de 10000 pixels vers la gauche.
width:1px; height:1px; overflow:hidden; indique au navigateur de donner la taille 1px par 1px à l’élément et de cacher visuellement tout ce qui ne rentre pas dans ces dimensions. Il existe quelques cas où le positionnement (à gauche) peut ne pas fonctionner alors que tous les autres styles restent activés. Dans ce cas, l’élément reste dans sa position initiale et prendra une taille de 1 pixel.
Remarque
Une version antérieure de cet article a recommandé d’utiliser left:0px; top:-500px. Bien que ce positionnement fonctionne pour mettre le contenu au-dessus du haut de la page, nous avons découvert que si l’élément caché contient un lien ou élément de formulaire, quand celui-ci prend le focus clavier, le navigateur tente d’aller à l’élément – donc de faire défiler la page vers le haut. Cela peut entraîner de la confusion pour les utilisateurs voyants utilisant le clavier. En positionnant directement à gauche, le navigateur ne fera pas de défilement vers le haut de la page. Il est à noter que, parce que les liens et les éléments de formulaire fournissent des fonctionnalités interactives, ils devraient rarement être cachés aux personnes voyantes. Les utilisateurs voyants ne seront pas en mesure de voir quel élément a le focus puisque celui-ci est hors de l’écran.
Repères et indicateurs
Important!
En général, une instruction sur une information devrait être cachée aux utilisateurs voyants et disponible pour les utilisateurs de lecteurs d’écrans uniquement si l’information est visuellement évidente mais impossible à connaître pour les utilisateurs de lecteurs d’écran.
Cette technique peut être utilisée pour fournir des repères et des indicateurs aux utilisateurs de lecteurs d’écran. Elle devrait être mise en oeuvre avec discrétion et uniquement lorsque cela est nécessaire. La page de WebAIM montre une bonne utilisation de cette technique à trois endroits.
Tout d’abord, le champ de recherche en haut de la page a un intitulé (balise label) immédiatement devant lui. Il est très clair visuellement que le champ est un champ de recherche, mais un lecteur d’écran a besoin d’un label pour donner cette information. Pour ce faire, nous avons fourni un intitulé via une balise label mais caché visuellement.
Deuxièmement, le fil d’ariane dans le haut de la page est un élément commun dans les sites Web. La plupart des internautes comprennent son fonctionnement et peuvent l’identifier visuellement. Mais parce qu’un lecteur d’écran accéde à cette liste de liens de manière linéaire, il peut ne pas être évident pour les utilisateurs de lecteur d’écran qu’il s’agit du fil d’ariane jusqu’à ce qu’ils en aient lu une partie. Il faut donc leur indiquer. Pour ce faire, un texte caché « You are here: » a été ajouté juste avant le fil d’ariane.
Enfin, nous avons identifié le début de la publicité au bas de chaque page avec du texte caché. Comme pour le fil d’ariane, il est visuellement évident qu’il s’agit d’une publicité mais pas pour un utilisateur de lecteur d’écran tant qu’il n’a pas commencé la lecture de ce contenu.
Vous pouvez voir l’ensemble des textes cachés en désactivant les styles de la page de WebAIM. N’oubliez pas, tous les contenus visuellement cachés avec CSS seront visibles si les styles sont désactivés.
Les autres implémentations
Pour un utilisateur visuel, un tableau de cellules d’en-tête peut effectuer la double fonction d’organiser le contenu du tableau et aussi fournir des intitulés (label) aux éléments de formulaire à l’intérieur de ce tableau, comme on le voit dans la capture d’écran ci-après d’un formulaire dans un tableau de données.

Les en-têtes de ligne et colonne du tableau sont peu utiles en termes de compréhension de l’agencement du tableau, mais les en-têtes ne sont pas des champs de formulaire. Quand les utilisateurs de lecteurs d’écran tabulent d’un champ de formulaire à un autre champ, ils n’entendront pas les en-têtes du tableau. En fait, ils n’entendront aucun label. Les lecteurs d’écran demandent des labels de texte pour les champs de formulaire. Mais ajouter des labels de texte à chacun des champs de formulaire serait certainement redondant, superflu et probablement créerait de la confusion pour les utilisateurs voyants. Dans ce cas, les labels peuvent être fournis dans le code adjacent à leurs champs de formulaire correspondants mais cachés à l’aide de la CSS ci-dessus et mis en œuvre de la manière suivante…
<label for= »amembers » class= »hidden »>Number of members in team A</label>
…
Un autre exemple d’incompatibilité apparente entre les besoins des utilisateurs de lecteurs d’écran et les utilisateurs voyants se produit lorsque les développeurs créent de nombreux champs de formulaire qui semblent appartenir au même label. Un exemple courant de cela est lorsque deux ou plusieurs champs d’entrée de texte sont utilisés pour les numéros de téléphone.
La plupart des utilisateurs voyants en Amérique du Nord comprendront que les zones de saisie de texte correspondent aux différentes parties d’un numéro de téléphone. Les utilisateurs de lecteurs d’écran, cependant, peuvent vouloir entrer l’ensemble du numéro de téléphone dans la première case. Ils seront certainement un peu étonnés quand ils découvriront que le champ est limité à seulement 3 chiffres ou qu’il y a d’autres champs non libellés qui la suivent.
La solution la plus évidente à ce problème consisterait à combiner l’ensemble des cases de saisie de texte dans une seule, puis de fournir le label approprié. Cependant, cette technique CSS peut également être appliquée à cette situation pour ajouter des labels cachés à chaque zone de texte distinct.
<p>Phone number:
(
<label for= »area » class= »hidden »>Area code</label>
<input name= »area » id= »area » type= »text » size= »3″ maxlength= »3″/>
)
…
Conclusion
Quand les techniques CSS présentées ici sont utilisées pour masquer le contenu, les utilisateurs voyants ne sauront jamais que le contenu est présent (à moins qu’ils ne désactivent les styles). Les utilisateurs de lecteurs d’écran, d’autre part, ne pourront jamais se rendre compte que ce contenu est invisible pour les utilisateurs voyants. Ces deux types d’utilisateurs seront en mesure d’utiliser le contenu de manière intuitive sans qu’une modification du code ne soit nécessaire. Cela peut fournir des indications contextuelles importantes, impossibles à saisir autrement pour les utilisateurs de lecteur d’écran du fait de leur nature visuelle. Lorsqu’elle est utilisée judicieusement, cette technique peut résoudre certains problèmes entre les exigences de l’accessibilité et les exigences de la mise en forme visuelle des pages Web. Ce n’est pas la seule technique ou le seul moyen pour résoudre ce problème, mais c’est une des solutions que les développeurs Web peuvent utiliser en cas de besoin.
Liens commerciaux
WebAIM est une initiative de :
![]()
Copyright 1999-2009 WebAIM
































S'abonner au blog Ideose
