ARIA: Accessible Rich Internet Applications, Roles, States

ARIA fügt Accessibility-Info zu dynamic UIs hinzu via Roles, States, Properties — für Screen-Reader, wenn HTML allein nicht ausreicht.

Was ist ARIA?

ARIA (Accessible Rich Internet Applications) ist eine W3C-Spec, die Accessibility-Info zu Web-Pages und Applications via HTML-Attributes hinzufügt. Sie sagt Assistive-Technologies (Screen-Reader, Voice-Control, Switch-Devices), was dynamic UI-Elements sind, ihren State und wie sie behaven — wenn HTML allein die Bedeutung nicht trägt.

ARIA wurde geschaffen, weil HTML-Elements wie <button> by default accessible sind, aber Custom-Widgets, gebaut mit <div>, für Assistive-Tech invisible sind ohne Hilfe.

Die drei Kategorien von ARIA-Attributes

TypZweckBeispiel
RolesWas das Element ISTrole="button"
PropertiesAttributes, die Element beschreibenaria-label="Close"
StatesAktueller dynamischer Statearia-expanded="true"

Die First-Rule von ARIA: nutze ARIA nicht

<!-- SCHLECHT -->
<div role="button" tabindex="0">Submit</div>

<!-- GUT -->
<button>Submit</button>

Häufige ARIA-Roles

RoleFür
role="button"Custom-Buttons
role="dialog"Modal-Dialogs
role="tablist" + tab + tabpanelTab-UI
role="menu" + menuitemApplication-Menüs
role="combobox"Autocomplete-Inputs
role="tree"Tree-Views
role="alert"Error-Messages
role="status"Non-critical Status-Updates
role="navigation"Navigation-Regions
role="main"Main-Content

Häufige ARIA-Properties

PropertyUse
aria-labelAccessible Name
aria-labelledbyReference Element, das das names
aria-describedbyReference längere Description
aria-hidden="true"Vor Assistive-Tech verstecken
aria-haspopupElement triggert Popup
aria-controlsElement controlled anderes
aria-currentCurrent Item in einem Set

Häufige ARIA-States

StateUse
aria-expandedDisclosure open?
aria-selectedTab/Option selected?
aria-checkedCheckbox/Radio-State
aria-disabledElement disabled?
aria-pressedToggle-Button-State
aria-busyElement wird updated
aria-invalidForm-Field invalid

Live-Regions: Dynamic-Updates announcen

<div aria-live="polite" aria-atomic="true">
  {{ savedMessage }}
</div>

<div role="alert">Error: connection lost</div>

Real-world Beispiel: Accessible Tabs

<div role="tablist" aria-label="Account sections">
  <button role="tab" aria-selected="true" aria-controls="profile-panel" id="profile-tab">
    Profile
  </button>
</div>
<div role="tabpanel" id="profile-panel" aria-labelledby="profile-tab">
  Profile content
</div>

ARIA Best Practices

  • Native HTML first nutzen.
  • Native Semantics nicht ändern.
  • Alle interactive ARIA müssen keyboard-accessible sein.
  • Focusable Elements nicht hiden.
  • Visible Labels providen.
  • Mit Screen-Reader testen.
  • APG-Patterns folgen.
  • States updaten when UI changed.

Häufige ARIA-Fallstricke

  • Wrong ARIA over right HTML.
  • aria-hidden on focusable Elements.
  • Stale States.
  • Overuse von role="application".
  • Live-Regions firen zu oft.
  • Missing Keyboard-Support.
  • aria-label konflikt mit visible Text.

FAQ: ARIA

Sollte ich ARIA auf jedem Element nutzen?

Nein — nur wenn native HTML die Semantics nicht expressed.

Was ist die "First Rule of ARIA"?

"Nutze ARIA nicht" — wenn native HTML reicht, nutze das.

Hilft ARIA SEO?

Indirekt.

Was ist WAI-ARIA APG?

Authoring Practices Guide.

Kann ich ARIA auf SVG nutzen?

Ja.

Was ist aria-current?

Markiert das Current-Item in einem Set.

Wie teste ich ARIA?

Automated Tools + Manual Screen-Reader-Testing.

ARIA + Accessibility mit LoadFocus testen

LoadFocus läuft Lighthouse-Audits aus 25+ Regionen. Registrieren bei loadfocus.com/signup.

Wie schnell ist Ihre Website?

Steigern Sie ihre Geschwindigkeit und SEO nahtlos mit unserem kostenlosen Geschwindigkeitstest.

Kostenloser Websitespeed-Test

Analysieren Sie die Ladegeschwindigkeit Ihrer Website und verbessern Sie ihre Leistung mit unserem kostenlosen Seitengeschwindigkeits-Checker.

×