Gibt es ein äquivalent zu der "alt" - Attribut für div-Elemente?
Screenreader gelesen wird, was auch immer-string auf den "alt" - Attribut. Die Verwendung dieses Attributs ist speziell für image-tags.
Wenn ich ein div in etwa so:
<div id=myCoolDiv tabindex="0"> 2 <div>
Ist es ein Weg, um ein screen-reader pickup ein Attribut zu Lesen a-saite auf die gleiche Weise mit einem alt-tag verwendet wird?
Also für das div unten aufgeführten screen-reader werden sagen, sprich: "Artikel im Warenkorb 2"?
Versuchte ich mit aria-label, sondern der screenreader nicht abholen:
<div id=myCoolDiv tabindex="0" aria-label="shopping cart items"> 2 <div>
- was ist Titel ?
- Sind Sie sicher, dass die
title
- Attribut wird von der Sprachausgabe gelesen? HTML5 Spezifikation rät ausdrücklich seinen Einsatz für Barrierefreiheit. - Ich ermutige Sie, sich auf eine von der off-screen-Techniken, die speziell entwickelt, um zusätzliche Inhalte zu screen-reader-Benutzer während versteckt ist es aus mit Sehbehinderung. Auch, bitte vermeiden Sie
tabindex
auf alles, das nicht einer realen Steuerung. - nutzt du Bootstrap? Sie können
sr-only
Klasse für Ihre Zwecke. - Screen-reader Lesen nicht Ihre
aria-label
, weilDIV
haben keine Standard-ARIArole
. Sie müssenrole
haben diearia-*
Parametern aktiviert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen
role="listitem"
oderrole="group"
undaria-labelledby="shopping cart items"
. Sehen Beispiel 1. Die2
ist der text-Inhalte, die gelesen werden soll, screen-reader, die bereits mit dem Attribut read-als Kontext zu den Inhalten. Finden Sie auf dieser Abschnitt.UPDATE 2
Hinzufügen
aria-readonly=true
role=textbox
wenn Sie eine Eingabe. Wenn es Zweifel, obaria-label
oderaria-labelledby
, Lesen Sie diese Artikel. In der Dokumentation für KIEFER und testen es selbst unterstützt die Tatsache, dassaria-label
ignoriert. Darüber hinaus Semantik sind sehr wichtig, wenn die Zugänglichkeit ist Ihr Anliegen. Mit einem div, wenn Sie eine Eingabe ist nicht semantisch sound und wie ich schon sagte, KIEFER akzeptieren würde, ein form-element leichter als div. Ich gehe davon aus, dass dieser "Warenkorb" ist eine form oder ein Teil einer form, und wenn Sie mögen es nicht Grenzen, dieinput {border: 0 none transparent}
oder verwenden Sie<output>
* das wäre dann Ein+, so weit als Semantik betroffen sind.Sorry, @RadekPech erinnerte mich; ich vergaß hinzuzufügen, dass die Verwendung
aria-labelledby
Bedürfnisse sichtbaren text und der text benötigt eine id, die ist auch aufgeführt, da der Wert(s) vonaria-labelledby
. Wenn Sie nicht möchten, dass der text wegen der ästhetik, verwenden Siecolor: transparent
,line-height: 0
odercolor:<same as background>
. Das sollte genügen Sichtbarkeit so weit als der DOM* und immer noch unsichtbar für das bloße Auge. Beachten Sie diese Maßnahmen, weil JAWS ignoriertaria-label
.*ungetestet
BEISPIEL 3
UPDATE 1
Für JAWS, werden Sie wahrscheinlich haben, um es zu konfigurieren, ein wenig:
In diesem besonderen dialog-box, die Sie hinzufügen können spezifische Attribute und das, was gesagt wird, wenn ein element ist ein Tab zu. KIEFERN reagieren auf form-Elementen einfacher, weil Sie auslösen können, die
focus
Veranstaltung. Sie ' ll haben eine einfachere Zeit zu tun Beispiel 2 statt:BEISPIEL 1
BEISPIEL 2
aria-labeledby
ist die Referenz zum zugehörigen label-element. Für die eigentliche label-Attributaria-label
.Gibt es zwei Möglichkeiten (die kombiniert werden können), um das Bildschirm-Lesegerät zu Lesen, alternativer text:
Alles, was mit ARIA-Rolle
img
können (MÜSSEN) habenalt
Attribut. Sehen WAI-ARIA img Rolle.Allerdings sollte dies nur verwendet werden, falls das element wirklich darstellen, ein Bild (z.B. das Herz unicode-Zeichen).
Wenn ein element tatsächlich text enthalten,, die müssen nur verschiedene Lesen, Sie sollten ARIA-Rolle zu
text
und fügen Siearia-label
mit was auch immer Sie wollen gelesen werden, indem die Bildschirm-Leser. Sehen WAI-ARIA-text-Rolle.Nicht Nichtübereinstimmung mit
aria-labeledby
enthalten die ID des zugehörigen Elements.Können Sie kombinieren die beiden vorhergehenden Fällen in eine mit zwei ARIA-Rollen und das hinzufügen sowohl
alt
undaria-label
:Wenn mehr ARIA-Rollen sind definiert, browser verwenden sollten, ist die erste, die unterstützt wird, und der Prozess das element mit dieser Rolle.
Eine Letzte wichtige Sache ist, dass müssen Sie den Seitentyp auf HTML5 (die Unterstützung der ARIA-by-design).
Verwendung von HTML4-oder XHTML-erfordert spezielle DTD zu ermöglichen, ARIA-Unterstützung.
Im Falle der Verwendung Bootstrap-Framework es ist eine schnelle und einfache Lösung. Sollten Sie verwenden
sr-only
odersr-only sr-only-focusable
Bootstrap-CSS - Klassen in einemspan
element, wo Ihrescreen-reader-only
text geschrieben werden.Überprüfen Sie das folgende Beispiel, eine
span
element mit der Klasseglyphicon glyphicon-shopping-cart
ist auch als Einkaufswagen-Symbol.Finden Sie das obige Beispiel in diesem: Fiddle
Vorgeschlagen von Oriol, in Fall, dass Sie nicht verwenden Bootstrap-Framework dann fügen Sie einfach Folgendes in deine CSS-Datei.
.sr-only
Stile.sr-only sr-only-focusable
Klassen um den text auf focusNein, es gibt kein äquivalent zu einem
alt
Attribut für<div>
Elemente.Für das, was Sie versuchen zu tun, eine ARIE-basierte Lösung ist übertrieben. Nicht nur sind Sie zu stoßen screen-reader-Kompatibilität Probleme, die Sie sich bewerben, ARIA-Attribute, wo Sie nicht nötig sind (und wohl auch nicht gehören, wenn so etwas wie ein
<div>
).Stattdessen erwägen Sie die Verwendung einer off-screen-Technik (wie diese von Der Paciello Group oder diese von WebAIM). Inhalte ausgeblendet mithilfe dieser Technik wird immer noch von Bildschirmlesegeräten gelesen werden, sondern wird visuell ausgeblendet.
Aus der Lektüre Ihrer Frage, ich denke, das ist, was Sie sind nach.
Machte ich ein Stift der Demonstration dieser Technik. Es kann einfacher sein, zu testen, in der full-page-version.
Bearbeiten: Hinzugefügt: HTML und CSS von dem Beispiel, aber bitte beachten Sie, dass sowohl die Spezifikationen und die browser /assistive Technologie unterstützen, im Laufe der Zeit ändern, so dass, wenn Sie dies Lesen, in einem Jahr sollte man weiterhin nutzen Sie die links oben, um zu überprüfen, das CSS ist noch die aktuelle best practice.
HTML
CSS
<div>
gelesen. Wenn Sie das Gefühl, dass es muss den Fokus erhalten für einen screen-reader, um zu hören, müssen Sie nicht. Allerdings, wenn Sie sind hartnäckig, dann setzen Sie einfachtabindex=0
auf die<div>
. Egal, ich habe einetabindex
. Haben Sie es getestet in JAWS? Es führt, wie Sie angeben. Es kündigt den verschachtelten text.<div>
, nicht nativ Isoliertes element. Wenn der Inhalt muss fokussiert werden (über die tab-Taste, zum Beispiel), dann ist dietabindex=0
tun, wie ich oben sagte. Oder fügen Sie den Inhalt in eine nativ Isoliertes element. So oder so, die off-screen-Technik immer noch funktioniert. Wieder, der CodePen-Beispiel zeigt diese Arbeits-und fokussierbar.Entsprechend der text-alternative Berechnung Algorithmus des W3C und die
Erreichbar Name und Beschreibung: die Berechnung und die API-Zuordnungen 1.1 Sie auf jeden Fall nutzen sollte
aria-label
.Dass gesagt wird, es funktioniert nicht mit Backen, ist es eine Schande für so teure tool.
Die Verbleibende Möglichkeit ist die Verwendung eines link, gehen Sie zu Ihrem Warenkorb-Seite, indem Sie beide
title
undaria-label
zu befriedigen jedermann:Können Sie auch eine transparente 1-pixel-option:
Verwenden Sie ein Bild innerhalb des div, die hat das label seine
alt
Attribut. So, diejenigen, die ohne Bildschirm-Leser sehen nur die Zahl und ein Bild, dass diejenigen, die mit den Lesern zu hören, der ganze Satz:Den
alt
Attribut existiert für Bilder, weil es keine Möglichkeit gibt, auf "vorlesen" der Inhalt des Bildes, so dass die vorgelegten text wird stattdessen verwendet. Aber für die div, die es bereits enthält text und Bilder. Deshalb, wenn Sie wollen, es zu Lesen von einem Bildschirm-reader, müssen Sie den text und alt-text, die den Inhalt der div.Versuchen:
HTML
CSS
Diese bekannt wird der text im span. Und das Übergeordnete div nicht verlieren visuellen Fokus. Aria-hidden-Klasse verstecken, die Spanne aus dem sichtbaren Bildschirm-Bereich, aber es zu Lesen, wie Ihr im inneren des div, die den Fokus hat.
Können Sie eine Klasse erstellen wie screen-reader-text mit den folgenden css:
Dann, in Ihrem code, können Sie einfach fügen Sie eine
<span>
mit der screenreader-text etwa so:Siehe ein Beispiel hier: https://jsfiddle.net/zj1zuk9y/
(Quelle: http://www.coolfields.co.uk/2016/05/text-for-screen-readers-only-updated/)