Accessible Rich Internet Applications (ARIA)

Typ: Artikel , Schwerpunktthema: Webentwicklung

1. Was ist ARIA?

Die Web Accessibility InitiativeAccessible Rich Internet Applications (WAI-ARIA) ist eine Initiative vom World Wide Web Consortium (W3C) zur Verbesserung von Webseiten und Webanwendungen für Menschen mit Behinderungen. Insbesondere blinde Menschen, die auf Vorleseprogramme angewiesen sind, können von der technischen Spezifikation ARIA profitieren.

ARIA definiert dabei einen Satz von Attributen, die vorwiegend für HTML entwickelt wurden, die aber mit beliebigem Markup-Content verwendet werden können. Wenn ARIA-Attribute einem Markup-Element hinzugefügt werden, können diese Informationen von assistiven Technologien erkannt und herausgelesen werden.

Die meisten Browser und Screenreader unterstützen ARIA, wobei die Umsetzungen teilweise voneinander abweichen. Da bei älteren Browsern die Unterstützung für ARIA oft nicht vollständig oder auch gar nicht vorhanden ist, sollte ein „sicheres“ ARIA verwendet werden. Alternativ sollten die Benutzer:innen zur Nutzung von neuen Browserversionen aufgefordert werden.

2. Was ist ARIA nicht?

ARIA bietet keine Funktionalität, sondern reichert Elemente mit Informationen an. Wenn eine Komponente auf einer Webseite mit ARIA semantisch angereichert wurde, dann muss sie mit JavaScript bedienbar gemacht und mit CSS gestaltet werden.

3. Wann wird ARIA verwendet?

Wichtig: Die Nutzung von ARIA ist nicht immer notwendig und zweckmäßig. Insbesondere folgende Punkte sind beim Einsatz zu bedenken:

  1. Grundsätzlich sollten, wenn vorhanden, HTML-Elemente mit passender Semantik statt ARIA verwendet werden (Beispiel: Um auf einer Webseite einen Absatz darzustellen, sollte <p> verwendet werden und nicht <div role="paragraph">).
  2. ARIA sollte nicht zu HTML-Markup hinzugefügt werden, wenn dieses schon die gewünschte Semantik impliziert (Beispiel: <button role="button">; Ausnahme: Landmark Roles).
  3. ARIA sollte nicht verwendet werden, um die HTML-Semantik umzudeuten (Beispiel: <button role="link">). Nutzen Sie diese Semantik nur, wenn es wirklich notwendig ist.

ARIA ist in erster Linie für benutzerdefinierte Widgets und andere Komponenten gedacht, die nicht die erforderlichen Zugänglichkeitsinformationen enthalten.

Mögliche Verwendungsfelder von ARIA:

  • Wenn die native HTML-Semantik nicht ausreicht, um ein Element zu identifizieren und seinen Status, seine Funktion oder seine Informationen zu übermitteln, muss das entsprechende ARIA-Markup verwendet werden, um die semantischen Informationen an assistive Technologien wie Screenreader zu übermitteln.
  • Um in vorhandenen Webseiten, Probleme der Barrierefreiheit zu korrigieren.
  • Um Design-lastige Oberflächen umzusetzen (beispielsweise, wenn Markenrichtlinien ein bestimmtes Design mit Wiedererkennungswert vorschreiben). Diese können teilweise nicht mit entsprechender HTML-Syntax umgesetzt werden.

Hinweis: Im öffentlichen Bereich gilt jedoch: Zugänglichkeit geht vor Design im Sinne von Aussehen.

4. Wie wird ARIA verwendet?

Sollten Sie mit der Verwendung von ARIA nicht vertraut sein, können Ihnen folgende Anleitungen einen ersten Einblick in die Verwendung geben. Sie definieren und erläutern die wichtigsten Regeln bei der Verwendung mit ARIA sowie die Verwendung der unterschiedlichen ARIA Rollen, Eigenschaften und Zustände aus Sicht des W3C.

ARIA bietet drei Möglichkeiten, Semantik zu kommunizieren:

  • Rollen
  • Eigenschaften
  • Zustände

Rollen

Landmark Roles

Landmark Roles sind Attribute für ganze Seitenbereiche, die überwiegend die Navigation für Screenreader erleichtern.
Um eine maximale Browserkompatibilität zu erreichen, empfiehlt die W3C im entsprechenden Tutorial derzeit die Kombination der nativen HTML5 Auszeichnungen mit den entsprechenden ARIA-Landmark Roles.

<header role="banner">…</header>

<main role="main">…</main>

<nav role="navigation">…</nav>

<footer role="contentinfo">…</footer>

Diese „doppelte Auszeichnung“ wird nur für die Landmark Rollen empfohlen.

Landmark RoleBeschreibung
bannerEin Bereich, der überwiegend seitenübergreifende Inhalte enthält und sich auf den einzelnen Seiten des Webauftritts wiederholt.
mainHauptinhalt einer Seite. Innerhalb einer Seite sollte es nur einen Main-Bereich geben.
complementaryEin ergänzender Bereich auf einer Webseite mit unterstützenden Informationen. Beispiele sind Seitenbereiche, die weiterführende Links beinhalten.
contentinfoMeta-Informationen zum Webauftritt. In diesem Seitenbereich befinden sich typischerweise Links oder Angaben zu Impressum, Copyright oder Datenschutz.
navigationNavigationselemente einer Webseite.
formBereiche mit Formularelementen.
searchBereich mit Suchfunktionalität.
applicationKennzeichnet einen Bereich als Web-Anwendung. Dies bringt allerdings Konsequenzen mit sich, die in diesem Webblog genauer beschrieben wurden.

Sonstige Rollen

Außerhalb der Rollen für Seitenbereiche gibt es auch weitere Rollen, die hauptsächlich zur Korrektur bereits existierender Webseiten eingesetzt werden. Native HTML5 Auszeichnungen sind vorrangig zu verwenden.

RolleBeschreibung
alertTeilt dem Benutzer mit, dass ein Element dynamisch aktualisiert wurde.
buttonWird für Tasten und andere anklickbare Elemente verwendet, mit deren Aktivierung der Benutzer eine Reaktion auslöst.
cellInformiert darüber, dass es sich bei dem Element um eine Zelle in einer Tabelle handelt.
checkboxKennzeichnet ein Element als Kontrollkästchen.
commentKennzeichnet ein Element als Kommentar / Reaktion zum Inhalt.
dialogKennzeichnet ein Anwendungsdialogfeld oder -fenster, das Inhalt oder Benutzeroberfläche vom Rest der Webanwendung oder der Seite trennt.
documentWeist Hilfstechnologien an, in den Lesemodus zu wechseln.
feedKennzeichnet einen Artikel, mit dynamischen Scrollbalken, so dass Inhalt, der durch Scrollen geladen wird, ohne Unterbrechung gelesen werden kann.
figureKennzeichnet ein Element als Bild.
gridKennzeichnet eine oder mehrere Zellenzeilen als Raster. Die Position jeder Zelle ist signifikant und kann durch Tastatureingaben fokussiert werden.
gridcellKennzeichnet eine Zelle im Raster.
headingKennzeichnet ein Element als Überschrift.
imgKennzeichnet mehrere Elemente als ein Bild.
listKennzeichnet eine Liste von Elementen.
listboxKennzeichnet eine Liste, aus denen Benutzerinnen und Benutzer ein oder mehrere Elemente auswählen können.
listitemKennzeichnet ein Element innerhalb einer Liste.
rowKennzeichnet eine Reihe von Zellen innerhalb einer Tabellenstruktur.
rowgroupKennzeichnet eine Gruppe von Zeilen innerhalb einer Tabellenstruktur.
tableKennzeichnet eine Tabelle.
testboxKennzeichnet ein Element, bei dem die Eingabe von Freitext möglich ist.
timerKennzeichnet ein Element als numerischen Zähler, der die verstrichene Zeit von einem Startpunkt oder die verbleibende Zeit bis zu einem Endpunkt angibt.

Eigenschaften

Eigenschaften können Elemente näher beschreiben oder Beziehungen zu anderen Elementen herstellen. Im Gegensatz zu Zuständen, ist der Wert der Eigenschaft konstant.

Name

Der zugängliche Name identifiziert und bezeichnet ein Element. Er unterscheidet das Element von anderen Elementen auf der Seite und ermöglicht, direkt damit zu interagieren. Eine detaillierte Beschreibung der Verwendung der folgenden ARIA-Elemente finden Sie unter Formularelemente korrekt auszeichnen.

ZustandBeschreibung
aria-descibedbyIdentifiziert das mit aria-labelledby bezeichnete Objekt näher.
aria-labelBezeichnet das aktuelle Element ohne sichtbare Beschriftung.
aria-labelledbyBezeichnet das aktuelle Element mit sichtbarer Beschriftung.

Kennzeichnung

EigenschaftBeschreibung
aria-requiredKennzeichnet Pflichtfelder in Formularen.
aria-multilineGibt an, ob ein Textfeld eine mehrzeilige Eingabe erlaubt.
aria-multiselectableGibt an, ob eine Mehrfachauswahl möglich ist.
aria-orientationGibt an, ob ein Element horizontal oder vertikal ausgerichtet ist.
aria-sortInformiert darüber, ob eine Spalte auf- oder absteigend sortiert ist. Wichtig: aria-sort führt selbst keine Sortierung durch.
aria-readonlyKennzeichnet ein Formularelement als nicht editierbar. Dass das Formularelement tatsächlich nicht editierbar ist, muss mit anderen Webtechnologien gewährleistet werden.

Wert

AttributBeschreibung
aria-valueminGibt den Minimalwert wieder.
aria-valuemaxGibt den Maximalwert wieder.
aria-valuenowGibt den aktuellen Wert wieder.
aria-setsizeGibt die Gesamtzahl der Elemente in der Liste oder im Baum an.
aria-posinsetGibt die Position eines Elements in der Liste oder im Baum an.
aria-valuetextGibt ergänzend zum aria-valuenow einen beschreibenden Text für den aktuellen Wert wieder.

Zustände

Einige Elemente können unterschiedliche Zustände annehmen (z. B. Kontrollkästchen oder Schalter). Werden native HTML-Elemente verwendet, wird der jeweilige Zustand automatisch weitergegeben. Wurden die Rollen der Elemente mit ARIA codiert, muss auch der Zustand des Elements entsprechend der Nutzereingabe gesetzt werden.

ZustandBeschreibung
aria-hiddenZustand, der angibt, dass das Element und dessen Kindelemente nicht sicht- und erkennbar sind.
aria-autocompleteZeigt an, ob bei Benutzereingaben Vorschläge zur Auto-Vervollständigung angeboten werden.
aria-busyZeigt an, ob ein Element oder seine Kindelemente gerade durch ein Update aktualisiert werden.
aria-checkedZeigt den aktuellen Zustand von Checkboxen, Radio Buttons und anderen Eingabeelementen an.
aria-activedescendantZeigt das aktuelle Kindelement eines composite widget an.
aria-atomicZeigt an, ob assistive Technologien vorhanden sind. Geänderte Regionen werden durch das aria-relevant-Attribut gekennzeichnet.
aria-controlsIdentifiziert ein Element, dessen Inhalt durch das aktuelle Element kontrolliert wird.
aria-currentIdentifiziert das Element mit dem jeweils aktuellen Wert. Mögliche Werte sind:
- page
- step
- location
- date
- time
aria-invalidZustand, der angibt, dass der eingegebene Wert nicht dem erwarteten Format entspricht.
aria-disbaledZustand, der angibt, dass das Element sichtbar, aber inaktiv ist. Es kann damit nicht bearbeitet oder bedient werden.
aria-selectedZustand, der angibt, ob ein Element ausgewählt wurde. Wird üblicherweise für Elemente einer Auswahlgruppe verwendet. Beispielsweise Option, Listbox oder in einer Tabelle.
aria-pressedZustand eines Toggle-Schalters.
aria-grabbedZeigt in einer Drag & Drop-Operation den "grabbed"-Zustand an, also dass sich das entsprechende Element im Zugriff befindet.
aria-relevantFilter für die Referenzierung UD Live-Regionen (dynamische Seiteninhalte).
aria-haspopupZeigt, dass das Element ein Popup Kontext Menü oder ein Sub-Level Menü besitzt.
aria-levelInfo über das Niveau eines Elements. Mit aria-level kann etwa die Überschriftenebene eines Elements festgelegt werden, das mittels role = „heading“ als Überschrift gekennzeichnet wurde.

Stand: 09.01.2024