In HTML, wie kann ich text, der ist nur zugänglich für Screenreader (z.B. für blinde Menschen)?
Ich habe eine website, auf der die farbigen divs mit zahlen, z.B. einen roten block mit der Nummer 2 innerhalb von es. Die Farbe ist wichtig für das Verständnis. Ein Blinder Benutzer per E-Mail mich Fragen, ob ich es schaffen könnte sagen, "2 rot" für seine screen-reader.
Habe ich versucht, indem Sie diese als ein alt="2 rot" aber er sagte, dass etwas nicht tun. Er denkt, es könnte nur Lesen, alt-tags für Bilder.
Ist es ein guter Weg, dies zu tun für divs?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Soweit alt-text, Sie sind richtig, das funktioniert nur für Bilder.. Aber Sie können aria-label an die Stelle der " alt " - Attribut für nicht-Bild-Elemente, wie etwa so:
Lösungen, die funktionieren
ARIA Etiketten ★ ★ ★ ★ ★ ★
aria-label
(nicht konzentriert, mitaria-labeledby
) wird verwendet, um off-screen beschreibenden Inhalte in einem element viel in der Art eineralt=
Attribut fügt off-screen-beschreibende Inhalte zu Bildern werden verwendet, wenn die Bilder nicht darstellbar.Der Unterschied ist,
aria-label
können verwendet werden, auf nicht-Bild-Elementen.Zusätzlich die
aria-hidden
Attribut versteckt sich der innere text.Position + Clip + Zusammenbruch ★ ★ ★ ★
Den clip wird verwendet, um zu verstecken, die 1px x 1px element vollständig, sonst wird es noch sichtbar auf dem Bildschirm.
Position ★ ★ ★
Einzug ★
Dem eigentlichen Einzug-Wert ist nicht wichtig, solange es außerhalb der Reichweite Ihrer Seiten-layout. Im Beispiel wird die Verschiebung der Inhalte in der linken 5000 Pixel.
Diese Lösung funktioniert nur für vollständige Blöcke von text. Es funktioniert nicht gut auf Anker oder Formulare, oder von-rechts-nach-Links-Sprachen, oder bestimmte inline-text, vermischt mit anderem text.
Wird nicht funktionieren
visibility: hidden; und/oder display:none;Diese Formate ausblenden von text für alle Benutzer. Der text ist entnommen aus dem visuellen Fluss von der Seite und ignoriert die von Bildschirmlesegeräten. Verwenden Sie dieses CSS-wenn Sie möchten, dass der Inhalt von einem Screenreader vorgelesen. Aber verwenden Sie es für die Inhalte, die Sie wollen nicht von der Sprachausgabe gelesen.
width:0px;height:0pxAls oben, da ein element ohne Höhe oder Breite entfernt ist die Strömung von der Seite, die meisten Screenreader ignorieren diese Inhalte. HTML-Breite und-Höhe geben das gleiche Ergebnis. Nicht Größe-Inhalt auf 0 Pixel, wenn Sie möchten, dass der Inhalt von einem Screenreader vorgelesen.
Weiter:
visibility:hidden
oderdisplay:none
wird für die Arbeit nicht einem einzigen Bildschirm-Lesegerät (außer wenn Sie deaktivieren CSS). Sie sind die 2 zuverlässige Techniken, um das ausblenden von Inhalten aus jeder screen-reader-Benutzer sind oder nicht.Sofern nicht anders angegeben, in der akzeptierten Antwort mindestens Chromevox1 und NVDA2 auch lese-Elemente mit Stil
display:none
odervisibility: hidden
CSS-Attribute, wennaria-hidden=false
eingestellt ist. Allerdings derzeit nur in Chrome (65), nicht in Firefox oder Edge (nach meinen tests).Ja (derzeit leider nur im Chrome) ist es auch möglich, so etwas zu tun:
wo Chromevox und NVDA Lesen der ersten und der zweiten Position.
Auch zu sehen: https://jsfiddle.net/4y3g6zr8/6/
Wenn alle Browser Zustimmen würde, auf dieses Verhalten, es wäre eine viel sauberere Lösung als die, die alle CSS-tricks, die in den anderen Lösungen.
1Chromevox https://chrome.google.com/webstore/detail/chromevox/kgejglhpjiefppelpmljglcjbhoiplfn
2NVDA https://www.nvaccess.org/
Bezüglich der Frage im Titel: Nein, es gibt keine Möglichkeit (im HTML-oder anderweitig), um text, der nur zugänglich ist für screen-Reader. Was auch immer Sie tun könnten, wie mit einer
img
element mit einem nicht leerenalt
Attribut und eine fehlende oder dysfunctsrc
Attribut` oder mit CSS zu verstecken, etwas visuell, steht jede software, die kümmert sich, es zu Lesen (und kann nicht zugegriffen werden auf dem Bildschirm Leser für einen oder anderen Grund).Auf der anderen Seite, wenn Sie auch tatsächlich nutzen, z.B.
dann die meisten Screenreader Lesen wie "zwei roten", aber so gut verhält, normalen Browser, so dass die Wirkung ist nicht beschränkt auf die Bildschirm-Leser.
Was Sie tun sollten für die Zugänglichkeit, ist eine andere Frage und hängt vom Kontext und von dem Zweck der Verwendung von Roter Farbe. Beachten Sie, dass selbst wenn der browser zeigt eine box, wie rot der Benutzer möglicherweise nicht sehen Sie es als eine rote, wegen der Farbe Blindheit; insbesondere dann, wenn es relevant ist zu unterscheiden zwischen rot und grün, viele Menschen scheitern, dies zu tun.
Gibt es möglicherweise eine einfache Lösung in einem bestimmten Fall, oder es könnte ein heikles problem mit keine gute Lösung. Für Allgemeine Hinweise und verschiedene Techniken, siehe das Dokument How to Meet WCAG 2.0: die Verwendung von Farbe.
Können Sie einen optisch hidden-element innen:
Zu "optisch zu verstecken", können Sie ausleihen, wie HTML5 boilerplate es macht:
Wie wäre es mit der schriftart, die Farbe, die komplett transparent sind?
Ich habe nicht ein screen-reader, um zu testen, ob diese Art von text ist lesbar, die von Bildschirmlesegeräten.