Überblick
HTML5 ermöglicht <svg>
und <math>
markiert jetzt ein HTML-Dokument ohne Abhängigkeit von externen Namespaces (anständige Übersicht hier ). Beide haben ihre eigenen alt
Attributanaloga (siehe unten), die von der heutigen Bildschirmlese-Software effektiv ignoriert werden. Somit sind diese Elemente für blinde Benutzer nicht zugänglich.
Gibt es Pläne, eine Standard-Alt-Text-Konvention für diese neuen Elemente zu implementieren? Ich habe die Dokumente durchsucht und bin trocken gekommen!
Weitere Details
In Bezug auf SVG: Der alternative Text einer SVG kann als Inhalt des Stamms title
oder desc
Tags angesehen werden.
<svg>
<title>An image title</title>
<desc>This is the longer image description</desc>
...
</svg>
Ich habe einen Bildschirmleser gefunden, der ihn als solchen liest, aber ist das Standard? Frühere Methoden zum Einfügen von SVG hatten auch Probleme mit der Barrierefreiheit, da <object>
Tags von Screenreadern inkonsistent behandelt werden.
In Bezug auf MathML: Der alternative Text von MathML sollte im alttext
Attribut gespeichert werden .
<math alttext="A squared plus B squared equals C squared">
...
</math>
Da Bildschirmleser dies nicht zu erkennen scheinen, fügt die Mathe-Rendering-Bibliothek MathJaxaria-label
zur Laufzeit Text in ein Attribut ein.
<span aria-label="[alttext contents]">...</span>
Leider lesen NVDA, JAWS und andere diese Etiketten auch noch nicht zuverlässig. (Mehr zu WAI-ARIA )
In Bezug auf beides: Da ich mit den weitgehend nicht unterstützten ARIA-Attributen keinen Erfolg hatte, habe ich versucht, title
Attribute zu verwenden. Diese scheinen auch bei diesen "fremden" HTML-Elementen ignoriert zu werden.
Einpacken
Ich bin mehr als nur ein kurzer Hack, ich suche nach der empfohlenen Möglichkeit , alternativen Text auf diesen neuen HTML-Elementen zu platzieren. Vielleicht gibt es eine W3C-Spezifikation, die ich übersehen habe? Oder ist es noch zu früh im Spiel?
quelle
<svg>
s an, wie es ist, wenn Anzeigebilder ausgeschaltet sind. Das schien mir ein Randfall zu sein, aber jetzt reicht die Antwort aus, um sie zu verwenden.Im Allgemeinen versucht HTML5, Autoren davon abzuhalten, Inhalte bereitzustellen, die für sehende Benutzer verborgen sind, da (a) es häufig neue Informationen enthält, die für sehende Benutzer von Nutzen sind, (b) es häufig schlecht geschrieben ist, weil es (normalerweise) nur wenig Feedback gibt ) sehender Autor, und (c) es wird nicht so sorgfältig gepflegt und kann daher schnell abgestanden sein.
Anstatt die Informationen in einem Attribut auszublenden, sollten Sie sie normalerweise als Beschriftung in einem
<p>
Tag neben dem Abschnitt svg oder math auf der Seite platzieren oder den Text in ein<figcaption>
Tag einfügen und diesen und den Abschnitt svg / math in a setzen<figure>
Element.Wenn Sie wirklich nicht möchten, dass sehende Benutzer die Informationen sehen, besteht die Standardtechnik meiner Meinung nach darin, die Beschriftung absolut mit einem großen negativen "linken" Wert zu positionieren, zumindest bis Screenreader HTML5 einholen.
quelle
<figcaption>
. Das ist wahrscheinlich die beste "in der Zwischenzeit" -Lösung für SVG-Bilder. Ich habe immer noch keinen Hinweis darauf gefunden, ob ein Bildschirmleser, der das Top-Level-<desc>
Tag spricht, Standard ist oder nicht. Vielleicht stupse ich die NVDA-Listen an. Ich werde dies als akzeptierte Antwort markieren, da es die vollständigste ist (ich dachte mir, dass es keinen bestimmten Standard geben würde, auf den jemand hinweisen könnte).In Bezug auf SVG, ähnlich, aber nicht identisch mit den obigen Vorschlägen, scheint es der derzeit beste Ansatz zu sein, Arienetiketten zu verwenden, indem auf die ID des Elements verwiesen wird, das den 'Alt-Text' enthält (nicht den Alt-Text selbst).
<svg aria-labelledby="svg1title"> <title id="svg1title">A wide rectangle</title> <rect width="70" height="10" fill="black" /> </svg>
Sie können auch die Elemente title und desc verwenden, indem Sie aria-labelledby = "svg1title svg1desc" festlegen.
Quelle: http://www.sitepoint.com/tips-accessible-svg/
Ärgerlicherweise müssen Sie in diesem Fall (irgendwie) sicherstellen, dass die IDs auf der gesamten Seite eindeutig sind (mit anderen Worten, wenn Sie viele SVGs verwenden, müssen alle unterschiedliche IDs für den Titel haben). Dies gilt auch für andere IDs innerhalb der SVG und ist ein allgemeiner schwerwiegender Ärger mit Inline-SVG.
(Wenn dies äußerst problematisch ist, sollten Sie die Einbettung von SVGs mithilfe des img-Tags untersuchen. Wenn Sie eine Daten-URL verwenden und die SVG mit base64 codieren, können Sie dies weiterhin ohne externe Datei inline ausführen.)
quelle
Theoretisch sollte ein SVG-Bild zugänglicher sein als ein Rasterbild mit einem Alt-Tag. Zum einen kann Text als Text in einem SVG gespeichert werden, ganze Textfragmente nicht nur ein kurzer Satz. Es ist traurig, wenn Screenreader diese zusätzlichen Informationen ignorieren. Es kann jedoch sein, dass nicht alle Textinhalte zu einem bestimmten Zeitpunkt sichtbar sind, wie dies auch bei HTML der Fall ist. Viele SVG-Bilder sind statische Bilder, aber ein wachsender Trend (basierend auf der tatsächlichen Verwendung im offenen Web) scheint darin zu bestehen, dynamischere SVGs zu verwenden, z. B. zum Anzeigen von Grafiken oder Diagrammen, die bearbeitet oder ausgeklappt werden können.
Beachten Sie außerdem, dass
<title>
Elemente in allen svg-fähigen Browsern AFAIK (zumindest der neuesten Generation) als QuickInfos (für sehende Benutzer) angezeigt werden und dass Sie sie auch in andere svg-Elemente einfügen können (der Titel gilt für das Element, zu dem es ein direktes Kind ist).quelle
Ich habe dies nicht getestet, aber Sie könnten versuchen, einem Container-DIV alt = "was auch immer" hinzuzufügen. Ja, es ist kein gültiges Attribut für DIV, aber ich kann ältere Bildschirmleser sehen, die sich nicht darum kümmern, wo alt erscheint.
Zum Beispiel:
<div aria-label="Whatever" alt="Whatever" role="math"> <math>...</math> </div>
Dies setzt natürlich voraus, dass Screenreader Alt-Attribute (falsch) auf anderen Elementen als IMG lesen. Noch nicht getestet, aber es ist besser, als darauf zu warten, dass Screenreader aufholen, wenn es funktioniert.
quelle
aria-label
Undaria-labelledby
als die richtige Methode angesehen. Die Unterstützung ist jedoch immer noch lückenhaft.