Einführung in ARIA und nicht native HTML-Semantik
Bisher haben wir die Verwendung nativer HTML-Elemente empfohlen, da sie den Fokus, die Tastaturunterstützung und die integrierte Semantik bieten. Es gibt jedoch Situationen, in denen ein einfaches Layout und natives HTML nicht ausreichen. Beispielsweise gibt es derzeit kein standardisiertes HTML-Element für ein sehr häufiges UI-Konstrukt, das Pop-up-Menü. Es gibt auch kein HTML-Element, das ein semantisches Merkmal wie „Der Nutzer muss so schnell wie möglich darüber erfahren“ bietet.
In dieser Lektion erfahren Sie, wie Sie Semantik ausdrücken, die mit HTML nicht allein ausgedrückt werden kann.
Die Accessible Rich Internet Applications-Spezifikation der Web Accessibility Initiative (WAI-ARIA oder einfach ARIA) eignet sich gut, um Bereiche mit Barrierefreiheitsproblemen zu überbrücken, die nicht mit nativem HTML verwaltet werden können. Sie können damit Attribute angeben, die die Art und Weise ändern, wie ein Element in den Bedienungshilfen-Baum übersetzt wird. Sehen wir uns ein Beispiel an.
Im folgenden Snippet verwenden wir ein Listenelement als benutzerdefiniertes Kästchen. Die CSS-Klasse „checkbox“ verleiht dem Element die erforderlichen visuellen Eigenschaften.
<li tabindex="0" class="checkbox" checked>
Receive promotional offers
</li>
Das funktioniert zwar gut für sehende Nutzer, aber ein Screenreader gibt keinen Hinweis darauf, dass das Element ein Kästchen sein soll. Daher kann es sein, dass Nutzer mit eingeschränktem Sehvermögen das Element ganz übersehen.
Mit ARIA-Attributen können wir dem Element jedoch die fehlenden Informationen hinzufügen, damit der Screenreader es richtig interpretieren kann. Hier wurden die Attribute role
und aria-checked
hinzugefügt, um das Element explizit als Kästchen zu kennzeichnen und anzugeben, dass es standardmäßig aktiviert ist. Das Listenelement wird jetzt dem Baum für Barrierefreiheit hinzugefügt und ein Screenreader meldet es korrekt als Kästchen.
<li tabindex="0" class="checkbox" role="checkbox" checked aria-checked="true">
Receive promotional offers
</li>
ARIA funktioniert, indem der Standard-DOM-Baum für Barrierefreiheit geändert und erweitert wird.
Mit ARIA können wir den Baum für die Barrierefreiheit für jedes Element auf der Seite subtil (oder sogar radikal) ändern. Das ist jedoch die einzige Änderung. ARIA ändert das Verhalten des Elements nicht. Es kann nicht den Fokus erhalten und es werden keine Tastaturereignis-Listener hinzugefügt. Das ist noch Teil unserer Entwicklungsaufgabe.
Es ist wichtig zu verstehen, dass die Standardsemantik nicht neu definiert werden muss. Unabhängig von ihrer Verwendung benötigt ein Standard-HTML-<input type="checkbox">
-Element kein zusätzliches role="checkbox"
-ARIA-Attribut, um richtig angesagt zu werden.
Bestimmte HTML-Elemente unterliegen außerdem Einschränkungen hinsichtlich der ARIA-Rollen und ‑Attribute, die für sie verwendet werden können. Ein Standard-<input
type="text">
-Element hat beispielsweise möglicherweise keine zusätzliche Rolle oder kein zusätzliches Attribut.
Weitere Informationen finden Sie in der Spezifikation „ARIA in HTML“.
Sehen wir uns an, welche weiteren Funktionen ARIA bietet.
Was kann ARIA?
Wie Sie am Beispiel der Kästchen gesehen haben, kann ARIA vorhandene Element-Semantiken ändern oder Elementen Semantiken hinzufügen, für die keine nativen Semantiken vorhanden sind. Außerdem lassen sich damit semantische Muster ausdrücken, die in HTML nicht vorhanden sind, z. B. ein Menü oder ein Tabbereich. Mit ARIA lassen sich häufig Elemente vom Widget-Typ erstellen, die mit reiner HTML nicht möglich wären.
- Mit ARIA können Sie beispielsweise zusätzliche Labels und Text für die Beschreibung hinzufügen, die nur für APIs für Hilfstechnologien sichtbar sind.
<button aria-label="screen reader only label"></button>
- Mit ARIA können semantische Beziehungen zwischen Elementen ausgedrückt werden, die die Standardverbindung zwischen über- und untergeordneten Elementen erweitern, z. B. eine benutzerdefinierte Bildlaufleiste, die eine bestimmte Region steuert.
<div role="scrollbar" aria-controls="main"></div>
<div id="main">
. . .
</div>
- Mit ARIA können Teile der Seite „live“ gemacht werden, sodass Hilfstechnologien sofort über Änderungen informiert werden.
<div aria-live="polite">
<span>GOOG: $400</span>
</div>
Einer der Kernaspekte des ARIA-Systems ist die Sammlung von Rollen. Eine Rolle im Hinblick auf die Barrierefreiheit ist eine Kurzschreibweise für ein bestimmtes UI-Muster. ARIA bietet ein Vokabular für Muster, das wir über das role
-Attribut für jedes HTML-Element verwenden können.
Als wir im vorherigen Beispiel role="checkbox"
angewendet haben, haben wir Hilfstechnologien mitgeteilt, dass das Element dem Muster „Kästchen“ folgen soll. Das heißt, wir garantieren, dass es einen angeklickten Status hat (entweder angeklickt oder nicht angeklickt) und dass der Status mit der Maus oder dem Leertaste umgeschaltet werden kann, genau wie bei einem standardmäßigen HTML-Kästchenelement.
Da Tastatureingaben bei der Verwendung von Screenreadern eine so große Rolle spielen, ist es beim Erstellen eines benutzerdefinierten Widgets sehr wichtig, das Attribut role
immer an derselben Stelle wie das Attribut tabindex
anzuwenden. So wird sichergestellt, dass Tastaturereignisse an die richtige Stelle gehen und dass die Rolle eines Elements korrekt übermittelt wird, wenn der Fokus darauf liegt.
Die ARIA-Spezifikation beschreibt eine Taxonomie der möglichen Werte für das role
-Attribut und die zugehörigen ARIA-Attribute, die in Verbindung mit diesen Rollen verwendet werden können. Dies ist die beste Quelle für endgültige Informationen darüber, wie die ARIA-Rollen und -Attribute zusammenwirken und wie sie von Browsern und Hilfstechnologien unterstützt werden können.
Die Spezifikation ist jedoch sehr umfangreich. Ein besserer Ausgangspunkt ist das Dokument zu ARIA-Autorisierungspraktiken, in dem Best Practices für die Verwendung der verfügbaren ARIA-Rollen und ‑Eigenschaften erläutert werden.
ARIA bietet auch Landmark-Rollen, die die in HTML5 verfügbaren Optionen erweitern. Weitere Informationen finden Sie in der Spezifikation für Designmuster für Markierungsrollen.