Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.
- Erstellt:
- Aktualisiert:
- Autor:
- Roland Golla
Was ist ARIA? Accessible Rich Internet Applications erklärt
ARIA (Accessible Rich Internet Applications) ist eine technische Spezifikation des W3C, die Webentwicklern Attribute zur Verfügung stellt, mit denen die Barrierefreiheit dynamischer Webinhalte verbessert werden kann. ARIA ergänzt HTML um Rollen, Zustände und Eigenschaften, die Screenreadern und anderen Assistenztechnologien Informationen liefern, die im Standard HTML nicht ausgedrückt werden können.
WAI-ARIA 1.0 wurde 2014 W3C Empfehlung. Aktueller Standard ist WAI-ARIA 1.2, seit Juni 2023 W3C Empfehlung. WAI-ARIA 1.3 liegt im Oktober 2026 als Working Draft vor, die letzte Fassung erschien im Juni 2026. ARIA ist ein zentraler Baustein der digitalen Barrierefreiheit und im Kontext der WCAG 2.2 sowie des BFSG oft unverzichtbar.
Wichtig: ARIA ist kein Ersatz für semantisches HTML, sondern eine Ergänzung. Das W3C beschreibt in der Note Using ARIA fünf Regeln für den Einsatz. Die erste lautet: Wenn ein natives HTML Element die gewünschte Funktion bereits liefert, nutze es statt ARIA. Diese Hierarchie zeigt die Levels Tabelle weiter unten.
ARIA mit NCA: Schnelle Hilfe vom Experten
ARIA gehört zu den Themen, die in Frontend Projekten am häufigsten Probleme machen. Falsche Rollen, kaputte aria-labelledby Verknüpfungen oder unbedienbare Custom Widgets sind die Klassiker. NCA baut Komponenten täglich mit Astro, React und Vue, orientiert sich am WAI-ARIA Authoring Practices Guide und sichert das Verhalten mit Cypress Tests und axe ab.
Konkret unterstützen wir Teams mit barrierefreiem Webdesign im Frontend und barrierefreiem Webdesign nach BFSG und WCAG 2.2. Dazu gehören ein Accessibility Audit eurer ARIA Patterns, Accessibility Testing mit Tools wie ANDI und axe DevTools sowie das Refactoring von Custom Components.
Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.
Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.
Warum ARIA für die digitale Barrierefreiheit zentral ist
ARIA schließt die Lücke zwischen modernen Webanwendungen und den Möglichkeiten von Standard HTML. Single Page Applications, Tab Panels, Combobox Widgets oder Live Regionen lassen sich mit reinem HTML nicht vollständig barrierefrei umsetzen. Hier kommt ARIA ins Spiel.
Konkret leistet ARIA Folgendes:
- Rollen erweitern: Komponenten ohne native HTML Entsprechung bekommen eine semantische Rolle (z.B. role="alert", role="tabpanel").
- Zustände kommunizieren: Dynamische Zustandsänderungen werden Screenreadern mitgeteilt (aria-expanded, aria-checked, aria-busy).
- Beziehungen herstellen: Elemente werden semantisch verknüpft (aria-labelledby, aria-describedby, aria-controls).
- Live Updates ankündigen: Asynchrone Inhalte werden ohne Fokuswechsel vorgelesen (aria-live, role="status").
- Sichtbarkeit steuern: Versteckte Inhalte werden für Screenreader korrekt behandelt (aria-hidden).
Ohne ARIA sind komplexe Web Komponenten für Screenreader Nutzer oft unbedienbar. Richtig eingesetzt macht ARIA sie zugänglich. Falsch eingesetzt verschlechtert ARIA die Barrierefreiheit oft mehr, als es nützt. Deshalb prüfen wir ARIA in jedem Accessibility Audit kritisch.
Anwendungsbereiche von ARIA in der Praxis
ARIA kommt überall dort zum Einsatz, wo HTML allein nicht reicht, um Zweck oder Zustand eines UI Elements an Assistenztechnologien zu übermitteln. Typische Einsatzgebiete:
- Dialoge und Modals: natives dialog Element, bei Bedarf role="dialog" oder role="alertdialog" mit aria-labelledby und aria-modal="true"
- Tab Panels: role="tablist", role="tab", role="tabpanel" mit aria-selected und aria-controls
- Combobox und Autocomplete: role="combobox" mit aria-expanded, aria-controls und aria-activedescendant
- Live Regionen: aria-live="polite" oder aria-live="assertive" für Status Updates und Fehlermeldungen
- Toggle Buttons: aria-pressed oder aria-checked für die Zustandsanzeige
- Akkordeons: aria-expanded für den Aufklapp Zustand, aria-controls für die Verknüpfung
- Custom Controls: Slider, Spinbutton, Tree, Grid mit den passenden ARIA Patterns
- Landmarks: role="banner", role="navigation", role="main", role="contentinfo" zur Strukturnavigation
Für jedes dieser Patterns gibt es im WAI-ARIA Authoring Practices Guide (APG) eine Referenzimplementierung. Wer Custom Components baut, sollte sie als Vorlage nutzen. Schon kleine Abweichungen führen zu Bugs, die erst Tools wie ANDI oder axe DevTools sichtbar machen. Für Formulare lohnt der Blick auf Accessible Forms.
Vier Levels von ARIA Einsatz: Vom nativen HTML zum Custom Widget
Wann ARIA wirklich nötig ist und wann es schadet, lässt sich mit einer einfachen Klassifikation in vier Levels ausdrücken. Sie folgt der ersten goldenen Regel des W3C: Wenn ein natives HTML Element existiert, das die Funktion bereits liefert, sollte ARIA nicht eingesetzt werden. Die folgende Tabelle und die Infografik darunter zeigen die Levels mit konkreten Code Beispielen.
Grundlegende ARIA Rollen und Attribute
ARIA besteht aus drei Kategorien von Attributen: Rollen definieren was ein Element ist, Eigenschaften definieren statische Charakteristika und Zustände beschreiben dynamische Veränderungen.
Die wichtigsten ARIA Rollen:
<!-- Landmark Rollen für Seitenstruktur -->
<div role="banner">Header Bereich</div>
<div role="navigation">Hauptnavigation</div>
<div role="main">Hauptinhalt</div>
<div role="contentinfo">Footer</div>
<!-- Widget Rollen für interaktive Komponenten -->
<div role="button" tabindex="0">Custom Button</div>
<div role="alert">Wichtige Meldung</div>
<div role="dialog" aria-modal="true">Dialog Inhalt</div>
Die wichtigsten ARIA Eigenschaften und Zustände:
<!-- Eigenschaften: statische Beschreibung -->
<button aria-label="Suche öffnen">🔍</button>
<input aria-labelledby="label-id" aria-describedby="hint-id">
<button aria-controls="menu-1">Menü</button>
<!-- Zustände: dynamische Veränderung -->
<button aria-expanded="false">Aufklappen</button>
<button aria-pressed="true">Aktiviert</button>
<input aria-invalid="true" aria-required="true">
<div aria-busy="true">Lädt...</div>
<div aria-hidden="true">Visuell sichtbar, für Screenreader versteckt</div>
Eine vollständige Referenz findet sich in der offiziellen WAI-ARIA 1.2 Specification und im praktisch orientierten WAI-ARIA Authoring Practices Guide des W3C.
ARIA Best Practices: Die fünf Regeln des W3C
Das W3C formuliert in der Note Using ARIA fünf Grundregeln, die jedes Frontend Team kennen sollte. Sie verhindern die häufigsten ARIA Fehler.
- Wenn ein natives HTML Element existiert, nutze es: button vor div role="button", nav vor div role="navigation", dialog vor div role="dialog". Native Elemente bringen Tastatur Support, Fokus Verhalten und Browser Defaults automatisch mit.
- Native Semantik nicht ändern, außer es ist nötig: Ein h1 mit role="button" bricht die Überschriften Struktur. Wer einen Button braucht, nutzt ein button Element.
- Alle interaktiven ARIA Komponenten müssen per Tastatur bedienbar sein: Wer mit ARIA einen Button baut, muss Enter und Space selbst behandeln. Das passiert nicht automatisch.
- Kein role="presentation" oder aria-hidden="true" auf sichtbaren fokussierbaren Elementen: Versteckte fokussierbare Elemente verwirren Tastatur Nutzer.
- Alle interaktiven Elemente brauchen einen Accessible Name: Buttons, Links und Formularfelder brauchen einen Namen, den Screenreader vorlesen können, über sichtbares Label, aria-label oder aria-labelledby.
Diese Regeln prüfen wir in jedem Accessibility Audit systematisch. Tools wie ANDI zeigen Verstöße schnell auf. Die Grundlagen zu Accessible Names erklärt der Eintrag Name, Rolle, Zustand.
Typische ARIA Fehler aus der Praxis
Im Accessibility Audit begegnen uns immer wieder dieselben ARIA Fehler. Diese Liste hilft, die häufigsten Fallen zu erkennen und zu vermeiden.
- div role="button" statt button: Der Klassiker. Tastatur Handling, Fokus Verhalten und Screenreader Ansprache müssen dann von Hand gebaut werden, ein natives button bringt alles mit.
- aria-label auf nicht interaktiven Elementen: aria-label auf einem div ohne Rolle wird von vielen Screenreadern ignoriert, weil das Element keine passende Rolle hat.
- Doppelte Beschriftung: Ein button mit sichtbarem Text und zusätzlichem aria-label überschreibt den sichtbaren Text. Sehende und Screenreader Nutzer bekommen dann unterschiedliche Bezeichnungen.
- aria-hidden auf fokussierbaren Elementen: aria-hidden="true" auf einem button macht ihn für Screenreader unsichtbar. Tastatur Nutzer können trotzdem hinfokussieren und sind dann verloren.
- Kaputte aria-labelledby Verknüpfung: aria-labelledby verweist auf eine ID, die nicht existiert oder leer ist. Ergebnis: kein Accessible Name. Tools wie ANDI zeigen das sofort.
- role="button" ohne Tastatur Handler: Custom Buttons müssen Enter und Space selbst verarbeiten. Ohne diesen Code sind sie für Tastatur Nutzer unbedienbar.
- aria-live auf nachträglich eingefügten Containern: Eine Live Region muss schon im DOM stehen, bevor sich ihr Inhalt ändert. Wird sie erst mit der Meldung eingefügt, liest der Screenreader oft nichts vor.
- Übermaß an ARIA: Jedes div bekommt eine Rolle, jedes Element ein aria-label. Ergebnis: Der Screenreader redet ohne Pause und Nutzer schalten ab.
Diese Fehler zu verhindern ist der Hauptgrund für strukturiertes Accessibility Testing aus automatisierten Tools, manuellen Reviews und Screenreader Tests.
No ARIA is better than Bad ARIA.
Keyboard Navigation 2026: WCAG 2.2 Kriterien, sichtbarer Fokus, Fokusfallen vermeiden und Tab Reihenfolge mit Cypress testen. Im NCA Glossar.
Mehr erfahrenARIA in NCA Projekten: Was wir aus der Praxis gelernt haben
In unseren Projekten arbeiten wir regelmäßig mit ARIA, von einfachen Dialogen bis zu komplexen Comboboxen mit Autocomplete. Drei Erkenntnisse haben sich verfestigt:
Erstens: Die meisten ARIA Probleme entstehen aus der Annahme, ARIA mache eine Komponente automatisch barrierefrei. Tatsächlich ist ARIA nur die Beschriftung, nicht die Funktion. Tastatur Bedienung, Fokus Management und korrekte Zustandsänderung bleiben Aufgabe des JavaScript Codes. Mehr dazu im Eintrag zur Keyboard Navigation.
Zweitens: Der WAI-ARIA Authoring Practices Guide ist die wichtigste Referenz für Frontend Teams. Schau vor jedem Custom Widget zuerst dort nach. Eigene ARIA Konstruktionen führen fast immer zu Problemen. Wo möglich, ersetzen wir sie durch native Elemente, wie im Beitrag JavaScript ablösen für Barrierefreiheit und Performance beschrieben.
Drittens: ARIA Tests gehören in jeden CI Lauf. Mit axe-core in Cypress fallen fehlende Namen, kaputte Verknüpfungen und falsche Rollen vor dem Merge auf. Manuelle Reviews mit ANDI und Screenreader Tests bleiben trotzdem nötig.
Wer ARIA in einer gewachsenen Codebase aufräumen will, findet bei NCA Audits, Unterstützung bei der BFSG Umsetzung und barrierefreie Astro Komponenten als Startpunkt.
Wir sind hier, um Ihnen zu helfen. Gemeinsam meistern wir Ihre digitalen Herausforderungen und fördern die Inklusion im Internet. Lassen Sie uns Ihre Projekte mit barrierefreiem Webdesign erfolgreich machen.
Häufige Fragen zu ARIA
Die Antworten beruhen auf der WAI-ARIA 1.2 Spezifikation, dem WAI-ARIA Authoring Practices Guide und unserer Praxis. Für Details verlinken wir auf passende Einträge im NCA Glossar für Barrierefreiheit.
Aktueller Standard ist WAI-ARIA 1.2, seit Juni 2023 W3C Empfehlung. WAI-ARIA 1.3 ist im Oktober 2026 noch Working Draft, die letzte Fassung erschien im Juni 2026. Browser und Screenreader unterstützen ARIA 1.2 weitgehend. Für Production ist 1.2 deshalb die richtige Basis, neue 1.3 Features solltest du vorher in echten Screenreadern testen.
ARIA selbst ist keine Pflicht. Pflicht ist, die Anforderungen aus dem BFSG zu erfüllen, das seit dem 28. Juni 2025 gilt und technisch auf WCAG Kriterien beruht. ARIA ist oft das richtige Mittel dafür, gerade bei dynamischen Inhalten und Custom Widgets. Wer nur statisches, semantisches HTML nutzt, braucht meist kaum ARIA.
Die wichtigsten Tools sind axe DevTools als Browser Erweiterung, WAVE für die visuelle Markierung, Lighthouse in den Chrome DevTools und ANDI als Bookmarklet für die Detailprüfung. In der CI setzen wir axe-core in Cypress Tests ein. So fallen fehlende Namen, falsche Rollen und kaputte Verknüpfungen vor jedem Merge auf.
Der Aufwand hängt von der Größe der Codebase, der Zahl der Custom Components und der vorhandenen Dokumentation ab. Eine kleine Seite mit wenigen Widgets ist schnell geprüft, eine große Anwendung braucht deutlich mehr Zeit. Wir starten mit einem kostenlosen Kennenlernen, schätzen den Aufwand und rechnen transparent minutengenau ab.
Der Working Draft von WAI-ARIA 1.3 ergänzt unter anderem neue Rollen wie comment und suggestion für Kommentar und Review Funktionen, dazu Attribute wie aria-description. Stand Oktober 2026 ist 1.3 noch keine W3C Empfehlung. Prüfe neue Features deshalb in den Screenreadern deiner Zielgruppe, bevor du sie produktiv einsetzt.
ARIA gibt Webinhalten und vor allem dynamischen Komponenten Bedeutung für Assistenztechnologien wie Screenreader. Es ergänzt HTML um Rollen, Zustände und Eigenschaften, die ohne ARIA nicht ausgedrückt werden können. Typische Fälle sind Tab Panels, Comboboxen, Akkordeons und Live Regionen für Statusmeldungen.
Rollen definieren, was ein Element ist, etwa role=button oder role=dialog. Attribute beschreiben Eigenschaften wie aria-label und Zustände wie aria-expanded. Die Rolle gibt einem Element seine Bedeutung, Eigenschaften liefern statische Zusatzinformationen und Zustände melden dynamische Veränderungen an den Screenreader.
Nein, ARIA ersetzt kein HTML. Native HTML Elemente sind immer erste Wahl, weil sie Tastatur Bedienung, Fokus Verhalten und Browser Defaults eingebaut mitbringen. Die erste Regel aus der W3C Note Using ARIA lautet: Wenn ein natives HTML Element existiert, das die Funktion liefert, nutze es statt ARIA.
Live Regionen mit aria-live=polite oder aria-live=assertive melden dynamische Änderungen, ohne den Fokus zu verschieben. Typische Fälle sind Statusmeldungen nach dem Absenden eines Formulars, Toast Notifications oder Ladehinweise. Wichtig: Der Container muss schon beim Laden der Seite im DOM stehen, sonst wird die Änderung oft nicht vorgelesen.
Semantisches HTML bringt viele Funktionen von Haus aus mit: Tastatur Bedienung, Fokus Reihenfolge, Browser Defaults und die passende Rolle. Ein button ist immer besser als ein div mit role=button. Semantisches HTML ist das Fundament, auf dem ARIA gezielt aufbauen kann, statt Lücken mühsam zu flicken.
ARIA selbst liefert keine Tastatur Funktion, es beschreibt nur Rolle und Zustand. Für die Bedienung braucht es JavaScript: Enter und Space für Buttons, Pfeiltasten für Tabs und Comboboxen, Escape für Dialoge. Der WAI-ARIA Authoring Practices Guide nennt für jedes Pattern die genaue Tastenbelegung.
Landmarks sind ARIA Rollen für die Bereiche einer Seite: banner, navigation, main, complementary und contentinfo. Screenreader Nutzer springen damit direkt zu diesen Bereichen. Die HTML Elemente header, nav, main, aside und footer bringen diese Rollen automatisch mit, eine zusätzliche role ist dann überflüssig.
Am anspruchsvollsten sind Combobox mit Autocomplete, Treegrid, Datepicker und editierbare Grids. Sie kombinieren mehrere Rollen, viele Attribute und aufwendiges Tastatur Handling. Bei diesen Patterns lohnt sich der Blick in den Authoring Practices Guide fast immer mehr als ein Eigenbau, und automatisierte Tests sind Pflicht.
Falsches ARIA macht Komponenten oft schlechter zugänglich als gar kein ARIA. aria-hidden auf fokussierbaren Elementen sperrt Tastatur Nutzer aus, role=button ohne Tastatur Handler ist unbedienbar, kaputte aria-labelledby Verweise führen zu fehlenden Namen. Das Motto aus dem Authoring Practices Guide lautet deshalb: No ARIA is better than Bad ARIA.