ARIA Grundlagen: Wann und wie man ARIA verwendet
Web-Zugänglichkeit ist kein „Nice-to-have“, sondern ein „Must-have“. Laut der WebAIM Screen Reader User Survey 2024 haben jedoch mehr als 96 % der Homepages erkennbare Zugänglichkeitsprobleme. Solche Probleme verhindern oft, dass Nutzer mit visuellen oder kognitiven Beeinträchtigungen effizient durch Inhalte navigieren können.
Für Entwickler ist diese Lücke mehr als nur ein Compliance-Risiko – sie stellt einen Usability-Fehler dar. Wenn wichtige Seitenelemente wie benutzerdefinierte Schaltflächen, Schieberegler und Modals nicht zugänglich codiert sind, können Bildschirmleser diese nicht richtig lesen oder übermitteln.
Hier kommt ARIA, oder Accessible Rich Internet Applications, ins Spiel. ARIA fungiert im Wesentlichen als Brücke zwischen modernen, dynamischen Benutzeroberflächen und Hilfstechnologien, indem es benutzerdefinierten UI-Elementen bedeutungsvollen Kontext hinzufügt.
Dieser Blog erklärt, wie ARIA funktioniert, wann es verwendet werden sollte und wie Entwickler Bewährte Verfahren mit realen Beispielen umsetzen können, um die Zugänglichkeit des Webs zu verbessern.
Die Grundprinzipien von ARIA
Heutige Webanwendungen hängen oft von benutzerdefinierten JavaScript-Komponenten ab, die die Grenzen des nativen Verhaltens von HTML-Elementen erweitern. Während eine bessere Interaktivität ein großer Vorteil ist, kann sie im Gegenzug die Zugänglichkeit leicht zerstören, wenn sie nicht korrekt codiert wird.
ARIA ist verfügbar, um Zugänglichkeitsprobleme zu verhindern und sicherzustellen, dass benutzerdefinierte, dynamische Elemente wahrnehmbar, bedienbar und verständlich sind.
Was ARIA über den Rahmen von semantischem HTML hinaus bewirken soll
ARIA ersetzt nicht HTML, sondern ist eine Möglichkeit, einem Element Bedeutung hinzuzufügen, wenn HTML von sich aus nicht genug Bedeutung bietet.
Einfacher gesagt:
- ARIA stellt Rollen bereit, um zu definieren, was ein Element ist (z. B. Schaltfläche, Tab, Dialog).
- Es verwendet Zustände und Eigenschaften, um zu definieren, wie dieses Element sich verhält.
Das bedeutet, dass ARIA Werkzeuge bereitstellt, die für Hilfstechnologien, wie zum Beispiel Bildschirmleser, verfügbar sind, um zu verstehen, wie alles funktioniert und benutzerdefinierte Elemente angemessen anzukündigen.
Beispiel:
<div role="button" aria-pressed="false" tabindex="0">Play</div>
Dies teilt einem Bildschirmleser mit, dass das <div> sich wie eine Schaltfläche verhält, obwohl es standardmäßig keine ist.
Verständnis der Beziehung zwischen ARIA, dem DOM und den Accessibility APIs
Ziel der ARIA-Attribute ist es nicht, HTML zu ändern, sondern den Accessibility Tree zu verändern, der die unsichtbare Struktur darstellt, die Browser für Hilfstechnologien erstellen.
Wie es funktioniert:
- Das DOM (Document Object Model) ist die Darstellung der sichtbaren HTML-Elemente.
- Der Accessibility Tree ist eine Reflexion dieser Elemente, jedoch mit semantischen Daten.
- Die Accessibility APIs (MSAA, UIA, AXAPI) sind es, die diese Daten offenlegen, wie es bei einem Bildschirmleser der Fall ist.
| Schicht | Zweck | Beispiel |
| DOM | Definiert die Struktur der Seite | <div> Element |
| ARIA | Fügt nicht-semantischen Elementen Bedeutung hinzu | role="button" |
| Accessibility API | Sendet diese Bedeutung an Hilfstechnologien | Bildschirmleser kündigt „Schaltfläche“ an |
Wie ARIA den Accessibility Tree für nicht-semantische Komponenten verbessert
Wenn Entwickler einfache <div>- oder <span>-Elemente für interaktive Komponenten verwenden, sind diese Elemente von Natur aus nicht semantisch. ARIA schließt diese Lücke, indem es:
- Semantische Bedeutung hinzufügt (zum Beispiel role="menu")
- Interaktionszustände anzeigt (z. B. aria-expanded="true")
- Benutzer von Hilfstechnologien in Echtzeit auf dem Laufenden hält, wenn sich UI-Zustände ändern
Diese Detailliertheit verleiht benutzerdefinierten UI-Komponenten dasselbe Verhalten wie nativen Elementen und verbessert die Zugänglichkeit über verschiedene Geräte und Hilfstechnologien hinweg.
Der Unterschied zwischen semantischem HTML und ARIA-Rollen
Es ist wichtig zu verstehen, dass ARIA nur dann verwendet werden sollte, wenn es notwendig ist. Wenn ein natives HTML-Element die Aufgabe erfüllen kann, verwenden Sie es stattdessen.
| Funktion | Semantisches HTML | ARIA-Äquivalent | Empfehlung |
| Schaltfläche | <Schaltfläche> | <div role="Schaltfläche"> | Verwenden Sie natives HTML |
| Überschrift | <h1> | <div role="Überschrift" aria-level="1"> | Verwenden Sie natives HTML |
| Kontrollkästchen | <input type="Kontrollkästchen"> | <div role="Kontrollkästchen"> | Verwenden Sie natives HTML |
| Modaler Dialog | <dialog> | <div role="dialog"> | Verwenden Sie ARIA, wenn benutzerdefinierte UI erforderlich ist |
Hauptpunkt:
- Wenn möglich, verwenden Sie immer zuerst semantisches HTML.
- Verwenden Sie ARIA nur, um die Semantik zu erweitern, niemals zu ersetzen.
Das Verständnis der ARIA-Prinzipien ermöglicht es Entwicklern, visuell ansprechende Schnittstellen zu codieren, die auch Zugänglichkeit im Markup berücksichtigen.
Im nächsten Kapitel werden wir das ARIA-Toolset für Rollen, Zustände und Eigenschaften analysieren, das die Bausteine sind, die Entwickler verwenden, um ein interaktives Element zugänglich zu machen.
ARIA-Rollen, Zustände und Eigenschaften: Ein Toolkit für Entwickler

Wenn benutzerdefinierte UI-Elemente wie Dropdowns, Akkordeons und Modals entwickelt werden, reicht die semantische HTML-Struktur oft nicht aus, um den Anforderungen des Elements gerecht zu werden. Hier kommen ARIA-Rollen, -Zustände und -Eigenschaften ins Spiel.
ARIA-Rollen helfen Entwicklern dabei, zu definieren, was ein Element tut, wie es sich zu anderen Elementen verhält und wie Hilfstechnologien die Benutzeroberfläche verstehen werden.
Überblick über ARIA-Rollen und was sie über den Zweck eines Elements aussagen
Jede ARIA-Rolle gibt dem Element in der Benutzeroberfläche eine Bedeutung. Man kann sich Rollen wie den „Jobtitel“ von HTML-Elementen vorstellen – sie bestimmen, was etwas tut.
Beispiele:
- Ein <div role="button"> verhält sich wie eine Schaltfläche für Bildschirmleser.
- Ein <section role="region"> definiert einen benannten Inhaltsbereich.
- Ein <nav role="navigation"> signalisiert eine Sammlung von Navigationslinks.
Schneller Tipp:
Verwenden Sie ARIA-Rollen nur, wenn kein semantisches HTML-Element (wie <button> oder <nav>) denselben Zweck erfüllen kann.
ARIA-Rollen Kategorien
ARIA-Rollen fallen in drei Hauptkategorien: Landmark, Widget und Live Region-Rollen. Jede Kategorie hat einen anderen Zweck im zugänglichen Webdesign.
Landmark-Rollen
Landmark-Rollen helfen Nutzern, große Webseiten effizient durch Bildschirmleser zu navigieren.
Häufige Landmark-Rollen:
- banner – Definiert die Header-Inhalte der Seite.
- main – Markiert den primären Inhaltsbereich.
- navigation – Identifiziert eine Sammlung von Navigationslinks.
- contentinfo – Stellt Informationen im Fußbereich der Seite dar.
Beispiel:
<header role="banner">
<nav role="navigation">
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Docs</a></li>
</ul>
</nav>
</header>
<main role="main">
<p>Welcome to our documentation site.</p>
</main>
<footer role="contentinfo">© 2025 Accesstive</footer>
Widget-Rollen
Widget-Rollen beschreiben interaktive Komponenten, die Benutzer direkt manipulieren können.
Beispiele hierfür sind:
- button – Klickbare Steuerung zum Auslösen von Aktionen.
- tab – Wählbarer Tab in einer Tabelliste.
- dialog – Modal oder Popup-Inhaltcontainer.
- slider – Interaktive Eingabesteuerung für numerische Werte.
Beispiel:
<div role="button" aria-pressed="false" tabindex="0">
Toggle Theme
</div>
Bildschirmleser identifizieren dies als eine Schaltfläche, obwohl es sich um ein <div> handelt.
Live Region-Rollen
Live Region-Rollen übermitteln Echtzeit-Updates an die Benutzer und sind ideal für dynamische Benachrichtigungen.
Häufige Rollen:
- alert – Dringende Nachricht, die sofortige Aufmerksamkeit erfordert.
- status – Nicht-kritische Systemstatusnachricht.
- log – Sequenzielle Aktualisierungslisten (wie Chats oder Logs).
Beispiel:
<div role="alert" aria-live="assertive">
Form submission failed. Please try again.
</div>
Arbeiten mit Zuständen und Eigenschaften
Rollen definieren, was ein Element ist, Zustände und Eigenschaften definieren, wie es sich verhält. Sie kommunizieren dynamische Änderungen und beschreibenden Kontext an Hilfstechnologien.
Häufige Zustände
Verwendet für UI-Komponenten, die den Zustand umschalten oder ändern können.
- aria-expanded – Gibt an, ob ein klappbares Element geöffnet oder geschlossen ist.
- aria-checked – Markiert, ob ein Element (wie ein Kontrollkästchen) ausgewählt ist.
- aria-pressed – Identifiziert den Ein/Aus-Zustand von Umschalttasten.
Beispiel:
<button aria-expanded="false" aria-controls="menu1">Menu</button>
<ul id="menu1" hidden>
<li><a href="#">Profile</a></li>
</ul>
Deskriptive Eigenschaften
Verwendet, um Bildschirmlesern mehr Kontext darüber zu geben, was ein Element tut oder steuert.
- aria-label – Bietet einen zugänglichen Namen, wenn kein sichtbares Label vorhanden ist.
- aria-labelledby – Verweist auf ein anderes Element, das das Label bereitstellt.
- aria-describedby – Zeigt auf zusätzlichen beschreibenden Text.
Beispiel:
<input type="text" aria-label="Search site" />
Live Updates und Dynamisches Verhalten
Für Inhalte, die sich automatisch ändern, benachrichtigen ARIA-Live-Bereiche die Benutzer, ohne die Seite zu aktualisieren.
- aria-live – Gibt Updates bekannt (off, polite oder assertive).
- aria-busy – Zeigt an, dass der Inhalt aktualisiert oder geladen wird.
Beispiel:
<div aria-live="polite">
Loading data, please wait…
</div>
Verwalten von Beziehungen und Hierarchien
ARIA definiert auch Beziehungen zwischen Elementen und hilft Hilfstechnologien, die Struktur der Komponenten zu verstehen.
- aria-owns – Stellt eine Eltern-Kind-Beziehung zwischen DOM-Knoten her.
- aria-controls – Gibt an, dass ein Element ein anderes Element steuert.
- aria-activedescendant – Identifiziert das aktive Kindelement in einem zusammengesetzten Widget (wie Autovervollständigung).
Beispiel:
<ul id="options" role="listbox">
<li id="opt1" role="option">Apple</li>
<li id="opt2" role="option">Banana</li>
</ul>
<input aria-activedescendant="opt2" aria-controls="options" />
Durch das Beherrschen von ARIA-Rollen, Zuständen und Eigenschaften erhalten Entwickler eine präzise Kontrolle über das Zugänglichkeitsverhalten, ohne die Interaktivität zu opfern.
Im nächsten Abschnitt werden wir uns ansehen, wie ARIA in benutzerdefinierten Komponenten angewendet wird, bei denen diese Attribute in realen UI-Mustern zum Leben erweckt werden.
Implementierung von ARIA Schritt für Schritt (Checkliste & Prozess)
Die effektive Implementierung von ARIA ist eine Frage der Strategie, nicht des Rätselratens. Befolgen Sie diesen strukturierten Prozess, um sicherzustellen, dass Ihre Komponenten zugänglich, testbar und standards-konform sind.
Zugänglichkeits-Checkliste vor der Hinzufügung von ARIA
Bevor Sie ARIA verwenden, stellen Sie sicher, dass Ihr grundlegendes HTML und Ihre Interaktionsmuster bereits die Zugänglichkeit unterstützen.
Schnelle Checkliste:
- Verwenden Sie semantisches HTML vor ARIA (z. B. <button> statt <div>).
- Stellen Sie sicher, dass die Tastaturnavigation funktioniert (Tab, Enter, Space).
- Überprüfen Sie, dass sichtbare Labels und zugängliche Namen für Eingaben und Steuerungen vorhanden sind.
Pro-Tipp:
Verwenden Sie den farbkontrast checker, um die Lesbarkeit von Texten zu überprüfen, bevor Sie ARIA testen.
Schritt-für-Schritt Integrationsleitfaden
Der Aufbau mit ARIA wird einfacher, wenn Sie einem vorhersehbaren Ablauf folgen.
1. Identifizieren Sie benutzerdefinierte Komponenten, denen die Semantik fehlt
Beispiel: benutzerdefinierte Dropdowns, Modals, Schieberegler.
2. Wählen Sie geeignete ARIA-Rollen und -Eigenschaften aus
Beispiel: role="dialog", aria-expanded="true", aria-controls="menu1".
3. Wenden Sie ARIA-Attribute programmgesteuert an
button.setAttribute('aria-expanded', 'true');
4. Testen Sie mit Bildschirmlesern
- NVDA (Windows)
- VoiceOver (macOS)
- JAWS (Enterprise-Einsatz)
Validierungswerkzeuge und Tests
Tests stellen sicher, dass Ihre ARIA-Attribute wie beabsichtigt funktionieren.
Automatisierte Werkzeuge:
- Lighthouse – Grundlegende Zugänglichkeitsprüfung.
- axe DevTools – Detaillierte ARIA- und Kontrastprüfung.
- WAVE – Visueller Zugänglichkeitsprüfer.
- Access Audit – KI-gestützte Prüfung zur schnellen Erkennung und Nachverfolgung von ARIA-Problemen.
Manuelle Validierung:
- Verwenden Sie die Browser-Zugänglichkeitsinspektoren, um sicherzustellen, dass ARIA-Rollen, -Namen und -Zustände korrekt im Barrierefreiheit Baum erscheinen.
Zugänglichkeit ist keine einmalige Lösung, sondern eine fortlaufende Praxis. Durch die Kombination von semantischem HTML, ordnungsgemäßem ARIA und kontinuierlichem Testen können Entwickler sicherstellen, dass ihre Schnittstellen sowohl interaktiv als auch inklusiv sind.
Im nächsten Abschnitt werden wir häufige ARIA-Fehler und Bewährte Verfahren untersuchen, die Ihnen helfen, Zugänglichkeitsfallen zu vermeiden.
Häufige Entwicklerfehler und ARIA Bewährte Verfahren

Selbst erfahrene Front-End-Entwickler können versehentlich die Zugänglichkeit beeinträchtigen, indem sie ARIA falsch anwenden. Dieser Abschnitt beschreibt die häufigsten Fallstricke und bewährte Bewährte Verfahren, um Schnittstellen inklusiv, stabil und screenreaderfreundlich zu halten.
Typische Fehler
ARIA ist leistungsstark, aber falsch angewendete Attribute richten oft mehr Schaden an als Nutzen.
Nachfolgend sind häufige Fehler aufgeführt, die Entwickler bei der Implementierung von ARIA machen.
Übermäßiger Einsatz von ARIA, wo native HTML-Elemente ausreichen
- Verwendung von <div role="button"> statt <button>.
- Hinzufügen redundanter Rollen wie <nav role="navigation">.
Verwenden Sie, wenn möglich, native HTML-Elemente. Sie sind bereits zugänglich und erfordern keine zusätzliche Konfiguration.
Fehlende oder falsche ARIA-Referenzen
- aria-labelledby="title" ohne dass ein Element id="title" hat.
- aria-controls verweist auf nicht existierende oder dynamisch entfernte Elemente.
Diese Fehler brechen Beziehungen im Accessibility Tree und verwirren Hilfstechnologien.
Schlechte Synchronisierung zwischen UI-Zustand und ARIA-Attributen
- Eine Schaltfläche wird visuell umgeschaltet, aber aria-pressed bleibt auf false.
- Ein Dropdown öffnet sich, aber aria-expanded zeigt immer noch false an.
- Synchronisieren Sie ARIA-Attribute immer mit dem JavaScript-Zustand des Komponenten.
Bewährte Verfahren
Die korrekte Verwendung von ARIA hängt von strukturierten, konsistenten Codierungsgewohnheiten ab.
Verwenden Sie diese Richtlinien, um sicherzustellen, dass Ihre Implementierung von Zugänglichkeit genau bleibt.
Befolgen Sie die Regel: „Kein ARIA ist besser als schlechtes ARIA“
Wenn ein Element mit nativen HTML-Elementen zugänglich ist, überschreiben Sie es nicht mit ARIA. Lassen Sie HTML die Semantik übernehmen; wenden Sie ARIA nur auf benutzerdefinierte Komponenten an.
Halten Sie Rollen, Zustände und DOM synchron
- Aktualisieren Sie Attribute wie aria-expanded und aria-checked in Echtzeit.
- Stellen Sie sicher, dass Zustandsänderungen im DOM sofort von Bildschirmlesern wiedergegeben werden.
Testen Sie immer mit echten Hilfstechnologien
Simulierte Prüfungen reichen nicht aus. Testen Sie mit:
- NVDA (Windows)
- VoiceOver (macOS/iOS)
- JAWS (Enterprise-Umgebungen)
Überprüfen Sie, ob Navigation, Ankündigungen und Fokusverhalten wie beabsichtigt funktionieren.
Validierung mit W3C und Browser-Zugänglichkeits-APIs
- Überprüfen Sie Ihre Seiten mit dem W3C-Validator und dem Zugänglichkeits-Panel der Browser-DevTools.
- Verwenden Sie Plattformen wie Compliance Hub, um die Einhaltung von Zugänglichkeitsstandards wie WCAG 2.2 zu bestätigen.
Integrieren Sie Zugänglichkeitsprüfungen in CI/CD-Pipelines
Automatisieren Sie die Zugänglichkeitsprüfung als Teil Ihres Entwicklungs-Workflows. Tools wie axe-core, Pa11y oder Access Service helfen dabei, Regressionen vor der Bereitstellung zu erkennen.
Gute ARIA-Nutzung verbessert die Zugänglichkeit, ohne unnötige Komplexität hinzuzufügen. Im nächsten Abschnitt werden wir eine praktische ARIA-Beispielbibliothek mit realen Codebeispielen untersuchen, die diese Prinzipien in der Praxis veranschaulichen.
ARIA Beispielbibliothek (mit Codebeispielen)
Der beste Weg, ARIA zu verstehen, ist durch praktische Implementierung. Nachfolgend finden Sie schnelle, reale Beispiele, die zeigen, wie ARIA gängige UI-Komponenten verbessert.
Beispiel 1: Zugängliches Akkordeon mit aria-expanded und aria-controls
Akkordeons sind in FAQs und Menüs häufig anzutreffen. Verwenden Sie aria-expanded, um den offenen/geschlossenen Zustand anzuzeigen, und aria-controls, um auf den Inhalt zu verlinken.
<button aria-expanded="false" aria-controls="panel1" id="accordion1">
More Details
</button>
<div id="panel1" hidden>
<p>Additional information displayed here.</p>
</div>
const btn = document.getElementById('accordion1');
btn.addEventListener('click', () => {
const expanded = btn.getAttribute('aria-expanded') === 'true';
btn.setAttribute('aria-expanded', !expanded);
document.getElementById('panel1').hidden = expanded;
});
Beispiel 2: Benutzerdefinierter Umschaltknopf mit aria-pressed
Umschaltknöpfe wechseln visuell den Zustand, aber ARIA stellt sicher, dass Bildschirmleser die Zustandsänderung verstehen.
<button id="darkMode" aria-pressed="false">Dark Mode</button>
const toggle = document.getElementById('darkMode');
toggle.addEventListener('click', () => {
const pressed = toggle.getAttribute('aria-pressed') === 'true';
toggle.setAttribute('aria-pressed', !pressed);
});
Beispiel 3: Dynamisches Benachrichtigungssystem mit aria-live="assertive"
Live-Bereiche kündigen Nachrichten dynamisch an, ohne dass der Benutzer eingreifen muss. Verwenden Sie aria-live="assertive", um dringende Updates wie Fehler oder Warnungen zu übermitteln.
<div id="alertBox" aria-live="assertive"></div>
function showAlert(message) {
document.getElementById('alertBox').textContent = message;
}
showAlert('Form submission failed. Please check your inputs.');
Wie man jede Komponente auf Zugänglichkeit testet
Tastaturnavigation:
Verwenden Sie Tab, Enter und Space, um die Interaktion ohne Maus sicherzustellen.
- Bildschirmleser-Test:
- NVDA oder JAWS (Windows)
- VoiceOver (macOS)
Validierung:
Führen Sie schnelle Prüfungen mit axe DevTools oder Lighthouse durch.
Echte Anwendungsbeispiele in modernen Frameworks
- React: Verwenden Sie aria-* Attribute direkt auf JSX-Elementen.
- Vue: Binden Sie ARIA dynamisch mit :aria-expanded oder :aria-pressed.
- Svelte: Aktualisieren Sie ARIA-Attribute reaktiv mit der $:-Syntax.
Kleine ARIA-Ergänzungen wie diese können den Unterschied zwischen einer benutzbaren und einer unbenutzbaren Schnittstelle ausmachen.
Fazit
Zugänglichkeit ist ein wesentlicher Bestandteil einer qualitativ hochwertigen Webentwicklung, kein nachträglicher Gedanke. Durch die korrekte Verwendung von ARIA können Entwickler moderne Schnittstellen zugänglich, inklusiv und benutzerfreundlich gestalten.
Wenn Sie sich unsicher sind, wie es um die Zugänglichkeit Ihrer Website steht, beginnen Sie mit einem kostenloser barrierefreiheit checker. Es ist eine schnelle Möglichkeit, Verbesserungen in Bezug auf Benutzerfreundlichkeit, SEO und Inklusion auf einen Blick zu erkennen.
Der Aufbau mit Blick auf Zugänglichkeit sorgt für bessere Leistung, Compliance und Benutzerzufriedenheit – für alle.
FAQs
ARIA steht für barrierefreie Rich-Internet-Anwendungen. Verwenden Sie es nur, wenn native HTML-Elemente oder -Attribute die erforderliche Semantik oder das erforderliche Verhalten nicht bereitstellen können.
HTML-Semantik ist eingebaut und wird automatisch von Browsern erkannt. ARIA-Rollen definieren manuell die Bedeutung für benutzerdefinierte Komponenten, denen die native Semantik fehlt.
Ja, ARIA kann die Rolle und den Zustand eines <div> beschreiben (z. B. role="button"), aber es benötigt dennoch Tastaturunterstützung (Tab, Enter, Space) für vollständige Zugänglichkeit.
Testen Sie mit Bildschirmlesern wie NVDA, VoiceOver oder JAWS. Verwenden Sie Tastaturnavigation, um den richtigen Fokus, Labels und Ankündigungen zu bestätigen.
Verwenden Sie axe DevTools, WAVE, Lighthouse oder Access Audit, um Fehler zu erkennen und ARIA-Attribute zu überprüfen.
React unterstützt bereits viele zugängliche Muster. Verwenden Sie ARIA nur für vollständig benutzerdefinierte Komponenten oder wenn native HTML-Elemente das gleiche Verhalten nicht erreichen können.