Est-il un équivalent de l'attribut “alt” pour les éléments div?
Lecteurs d'écran lira quelle que soit la chaîne est définie pour l'attribut "alt". L'utilisation de cet attribut est spécifiquement pour les balises d'image.
Si j'ai un div comme ceci:
<div id=myCoolDiv tabindex="0"> 2 <div>
Est-il un moyen d'avoir un lecteur d'écran de ramassage un attribut de lire une chaîne de la même façon une balise alt est utilisé?
Donc pour la div énumérés ci-dessous, le lecteur d'écran va dire c'est à dire: "panier articles 2"?
J'ai essayé d'utiliser aria-label, mais le lecteur d'écran va pas le prendre:
<div id=myCoolDiv tabindex="0" aria-label="shopping cart items"> 2 <div>
- qu'en est le titre ?
- Êtes-vous sûr que le
title
attribut est lu par les lecteurs d'écran? Le spec HTML5 explicitement décourage son utilisation pour l'accessibilité. - Je vous encourage à regarder une de la hors de l'écran techniques spécialement conçu pour fournir du contenu supplémentaire pour les utilisateurs de lecteurs d'écran tout en masquant d'utilisateurs voyants. Aussi, évitez de mettre en
tabindex
sur tout ce qui n'est pas un réel contrôle. - avez-vous l'utilisation de Bootstrap? Vous pouvez utiliser
sr-only
classe pour votre but. - Lecteur d'écran ne pas lire votre
aria-label
, parce queDIV
ont pas de valeur par défaut ARIArole
. Vous devez définirrole
avoir learia-*
attributs active.
Vous devez vous connecter pour publier un commentaire.
Essayer
role="listitem"
ourole="group"
etaria-labelledby="shopping cart items"
. Voir Exemple 1. Le2
est du contenu du texte qui doit être lu par le lecteur d'écran déjà avec l'attribut lecture que le contexte du contenu. Reportez-vous à cette section.Mise à JOUR 2
Ajouter
aria-readonly=true
role=textbox
si vous utilisez une entrée. Si il y a des doutes quant à l'utilisationaria-label
ouaria-labelledby
, lisez ce l'article. Dans le la documentation pour des MÂCHOIRES et de le tester moi-même soutient le fait quearia-label
est ignoré. En outre, la sémantique est très importante lorsque l'accessibilité est votre préoccupation. À l'aide d'une div lorsque vous pouvez utiliser une entrée n'est pas sémantiquement son et comme je l'ai dit avant, les MÂCHOIRES, accepterait un élément de formulaire, plus facilement qu'un div. Je suppose que ce "panier" est une forme ou d'une partie d'un formulaire, et si vous n'aimez pas ses frontières,input {border: 0 none transparent}
ou de l'utilisation<output>
* ce qui serait Un+ aussi loin que la sémantique sont concernés.Désolé, @RadekPech a rappelé à moi, j'ai oublié d'ajouter que l'utilisation de
aria-labelledby
besoins de texte visible et que le texte a besoin d'un id qui est également sur la liste des valeur(s) dearia-labelledby
. Si vous ne voulez pas de texte à cause de l'esthétique, de l'utilisationcolor: transparent
,line-height: 0
, oucolor:<same as background>
. Qui devrait satisfaire de visibilité que le DOM est concerné* et encore invisible à l'œil nu. Gardez à l'esprit que ces mesures sont parce que les MÂCHOIRES ignorearia-label
.*non testé
EXEMPLE 3
Mise à JOUR de 1
Pour les MÂCHOIRES, vous devrez probablement configurer un peu:
Dans cette boîte de dialogue, vous pouvez ajouter des attributs spécifiques et ce qui est dit quand un élément est tabulés. MÂCHOIRES se répondent pour former des éléments plus facile, car ils peuvent déclencher la
focus
événement. Vous aurez un temps plus facile de faire Exemple 2 à la place:EXEMPLE 1
EXEMPLE 2
aria-labeledby
de référence est lié à l'élément label. Pour l'étiquette réelle est attributaria-label
.Il y a deux façons (qui peuvent être combinés) de disposer d'un lecteur d'écran pour lire un texte alternatif:
Quoi que ce soit avec ARIA rôle
img
peut (DOIT) avoiralt
attribut. Voir WAI-ARIA img rôle.Cependant cela doit être utilisé uniquement dans le cas où l'élément vraiment représenter une image (par exemple le cœur de caractères unicode).
Si un élément contient du texte réel, qui n'ont besoin que de lecture différents, vous devez définir ARIA rôle de
text
et ajouteraria-label
avec tout ce que vous voulez être lu par le lecteur d'écran. Voir WAI-ARIA texte de rôle.Ne pas incompatibilité avec
aria-labeledby
qui doit contenir l'IDENTIFIANT de l'élément lié.Vous pouvez combiner les deux cas en une à l'aide de deux rôles ARIA et en ajoutant les deux
alt
etaria-label
:Lorsque plus d'ARIA rôles sont définis, navigateur doit utiliser le premier qui est pris en charge et les processus de l'élément avec ce rôle.
Une dernière chose importante est que vous devez définir le type de page HTML5 (qui soutien ARIA par conception).
À l'aide de HTML4 ou XHTML requiert une DTD pour permettre à ARIA de soutien.
Dans le cas où vous utilisez Bootstrap Cadre il y a une solution rapide et facile. Vous devez utiliser
sr-only
ousr-only sr-only-focusable
Bootstrap CSS les classes dans unspan
élément où votrescreen-reader-only
texte sera écrit.Vérifiez l'exemple suivant, un
span
élément avec la classeglyphicon glyphicon-shopping-cart
est également utilisé comme icône de panier.Vous pouvez trouver ci-dessus exemple de travail dans ce: Violon
Comme suggéré par Oriol, dans le cas où vous n'utilisez pas Bootstrap Cadre puis il suffit d'ajouter la ligne suivante dans votre fichier CSS.
.sr-only
les styles.sr-only sr-only-focusable
classes pour afficher le texte sur l'accentNon, il n'est pas l'équivalent d'un
alt
attribut pour<div>
éléments.Pour ce que vous êtes en train de faire, une ARIA-fondé de la solution est exagéré. Non seulement vous heurter les lecteurs d'écran des problèmes de compatibilité, vous êtes en appliquant des attributs ARIA où ils ne sont pas nécessaires (et sans doute n'appartiennent pas si sur quelque chose comme un
<div>
).Au lieu de cela, envisager d'utiliser une technique de l'écran (comme celui-ci à partir de La Paciello Groupe ou de celui de la WebAIM). Contenu caché à l'aide de cette technique va être lu par les lecteurs d'écran, mais sera visuellement caché.
À partir de la lecture de votre question, je pense que c'est ce que vous êtes après.
J'ai fait un stylo à la démonstration de cette technique. Il peut être plus facile à tester dans le pleine page de la version.
Modifier: Ajout de code HTML et CSS de l'exemple, mais veuillez noter que les spécifications et le navigateur /technologie d'assistance, de support de changer au fil du temps, donc si vous lisez ceci dans un an, vous devez continuer à utiliser les liens ci-dessus pour vérifier cette CSS est toujours les meilleures pratiques en vigueur.
HTML
CSS
<div>
est lu. Si vous vous sentez qu'il doit recevoir le focus pour un lecteur d'écran pour entendre, il n'est pas nécessaire. Toutefois, si vous êtes inflexible, puis il suffit de mettretabindex=0
sur le<div>
. Peu importe, j'ai ajouté untabindex
. Avez-vous testé dans les MÂCHOIRES? Il effectue en tant que vous spécifiez. Il annonce le contenu textuel.<div>
, pas un natif peut recevoir le focus de l'élément. Si le contenu doit être axé (via la touche tab, par exemple), puis latabindex=0
va le faire comme je l'ai dit ci-dessus. Ou mettre le contenu dans un natif peut recevoir le focus de l'élément. De toute façon, le hors-technique de l'écran fonctionne toujours. Encore une fois, le CodePen exemple indique ce de travail et peut recevoir le focus.Selon la texte de remplacement d'algorithme de calcul de la W3C et la
Accessibles de Nom et de Description: Calcul et de l'API Mappages 1.1 vous devriez certainement utiliser
aria-label
.Cela étant dit, il ne fonctionne pas avec des Mâchoires, c'est une honte pour un tel outil cher.
L'autre option est d'utiliser un lien qui vous permettra d'aller à la page de votre panier, en utilisant à la fois
title
etaria-label
pour satisfaire tout le monde:Vous pouvez également utiliser un transparent de 1 pixel option:
Essayer:
HTML
CSS
Ce annoncera le texte à l'intérieur de la portée. Et le div Parent ne sera pas perdre le focus visuel. Aria-hidden classe pour se cacher de l'étendre à partir de l'écran visible de la zone, mais va lire le son à l'intérieur de la div qui a le focus.
Vous pouvez créer une classe comme screen-reader-text avec le code css suivant:
Puis, dans votre code, vous pouvez simplement ajouter un
<span>
avec le lecteur d'écran texte ainsi:Voir un exemple ici: https://jsfiddle.net/zj1zuk9y/
(Source: http://www.coolfields.co.uk/2016/05/text-for-screen-readers-only-updated/)
Utiliser une image à l'intérieur de la div qui a l'étiquette, comme son
alt
attribut. De cette façon, les non-lecteurs d'écran vient de voir le nombre et une image, tandis que ceux avec les lecteurs entendrez la phrase entière:La
alt
attribut existe pour les images, car il n'y a aucun moyen de "lire à voix haute" le contenu de l'image, le texte fourni est utilisé à la place. Mais pour la div, il contient déjà du texte et des images. Par conséquent, si vous voulez qu'il soit lu par un lecteur d'écran, vous devez inclure le texte et texte dans le contenu de la div.