En HTML, comment puis-je avoir le texte qui n'est accessible que pour les lecteurs d'écran (c'est à dire pour les aveugles)?
J'ai un site qui a coloré les divisions avec des nombres, par exemple, un bloc rouge avec le numéro 2 à l'intérieur. La couleur est importante pour la compréhension. Un utilisateur aveugle m'a envoyé un courriel lui demandant si je pouvais lui faire dire "2 rouge" pour son lecteur d'écran.
J'ai essayé d'ajouter ce que une alt="2 rouge" mais il a dit que ne pas faire n'importe quoi. Il pense qu'il peut seulement lire les balises alt pour les images.
Est-il une bonne façon de procéder pour les divs?
OriginalL'auteur Some Guy | 2014-09-25
Vous devez vous connecter pour publier un commentaire.
Aussi loin que le texte d'alt, vous avez raison, cela ne fonctionne que pour les images.. Mais vous pouvez utiliser aria-label à la place de l'attribut alt pour les non-éléments de l'image comme ceci:
Des Solutions qui fonctionnent
ARIA Étiquettes ★ ★ ★ ★ ★ ★
aria-label
(de ne pas être porté avecaria-labeledby
) est utilisé pour ajouter hors de l'écran descriptif de contenu d'un élément beaucoup dans la façon dont unalt=
attribut ajoute hors de l'écran descriptif de contenu sur les images pour être utilisé lorsque les images ne sont pas affichables.La différence est,
aria-label
peut être utilisé sur des éléments de l'image.L'ajout de la
aria-hidden
attribut masque le texte interne.Position + Clip + Effondrement ★ ★ ★ ★
Le clip est utilisé pour masquer les 1px 1px x élément complètement, sinon il sera encore visible sur l'écran.
Position ★ ★ ★
Tiret ★
La réelle valeur de retrait n'est pas important, tant que c'est en dehors de la portée de votre mise en pages. L'exemple de déplacer le contenu vers la gauche 5000 pixels.
Cette solution ne fonctionne que pour plein de blocs de texte. Il ne marche pas bien sur des ancres ou des formes, ou de droite à gauche de langues, ou spécifiques inline-texte mélangés avec d'autres textes.
Ne fonctionnera pas
visibility: hidden; et/ou display:none;Ces styles masquer le texte de 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 CSS si vous voulez que le contenu soit lu par un lecteur d'écran. Mais NE l'utiliser pour le contenu que vous ne voulez pas lu par les lecteurs d'écran.
width:0px;height:0pxComme ci-dessus, parce qu'un élément sans la hauteur ou la largeur est retiré du flux de la page, la plupart des lecteurs d'écran d'ignorer ce contenu. HTML la largeur et la hauteur peuvent donner le même résultat. Ne pas de la taille du contenu à 0 pixels si vous voulez que le contenu soit lu par un lecteur d'écran.
Plus loin:
visibility:hidden
oudisplay:none
de travail pour pas un seul lecteur d'écran (sauf si vous désactivez CSS). Ils sont les 2 techniques fiables pour masquer le contenu de tout le monde, utilisateur de lecteur d'écran ou non.Merci pour la correction, j'ai mis à jour la réponse réfléchie.
La personne m'a dit que aria-label ne fonctionne pas avec son lecteur, même si la spec dit qu'il devrait...
aria-label ne fonctionne pas avec les Mâchoires lorsque j'attache de l'attribut à une norme div, ni aria-labeledby, quelqu'un a compris pourquoi? Je suis en utilisant ce avec FF et IE
aria-label est uniquement autorisée sur quelque chose avec un rôle explicite, donc je ne comprends pas comment le "meilleur" exemple fonctionne.
OriginalL'auteur davidcondrey
Sauf mention contraire dans la accepté de répondre à au moins Chromevox1 et NVDA2 à lire également les éléments avec style
display:none
ouvisibility: hidden
attributs CSS siaria-hidden=false
est réglé. Cependant, actuellement, seulement en Chrome (65), pas dans Firefox ou Edge (selon mes tests).(Actuellement, malheureusement, seulement en Chrome) il est aussi possible de faire quelque chose comme ceci:
où Chromevox et NVDA lire la première et la deuxième position.
Voir aussi ceci: https://jsfiddle.net/4y3g6zr8/6/
Si tous les navigateurs se mettent d'accord sur ce comportement, il serait une bien meilleure solution que de tous les CSS astuces proposées dans les autres solutions.
1Chromevox https://chrome.google.com/webstore/detail/chromevox/kgejglhpjiefppelpmljglcjbhoiplfn
2NVDA https://www.nvaccess.org/
OriginalL'auteur klues
Sur la question dans le titre: Aucun, il n'existe aucun moyen (en HTML ou autre) à un texte qui n'est accessible que pour les lecteurs d'écran. Ce que vous ne pourriez le faire, comme à l'aide d'un
img
élément non videalt
attribut et un manque ou dysfunctsrc
attribut " ou à l'aide de CSS pour cacher quelque chose de visuellement, sera disponible pour tout logiciel qui se soucie de le lire (et peut-être inaccessible aux lecteurs d'écran, pour une raison ou une autre).D'autre part, si vous avez réellement utiliser, par exemple,
alors la plupart des lecteurs d'écran lira comme suit: “rouge”, mais il en sera de bien se comporter normal navigateurs, de sorte que l'effet n'est pas limité aux lecteurs d'écran.
Ce que vous devez faire pour l'accessibilité est une question différente et dépend du contexte et de l'objectif de l'utilisation de la couleur rouge. Notez que même lorsque le navigateur affiche une boîte rouge, l'utilisateur peut ne pas le voir comme un rouge, en raison de la couleur de la cécité; en particulier, s'il est pertinent d'établir une distinction entre le rouge et le vert, beaucoup de gens ne parviennent pas à le faire.
Il y a peut être une solution simple dans un cas particulier, ou il pourrait être un problème délicat avec pas de bonne solution. Pour les remarques générales et les diverses techniques, voir le document Comment faire pour Rencontrer des WCAG 2.0: Utilisation de la couleur.
OriginalL'auteur Jukka K. Korpela
Vous pouvez mettre un visuel élément masqué à l'intérieur:
"Visuellement cacher", vous pouvez emprunter la façon dont HTML5 boilerplate:
OriginalL'auteur kinakuta