Wann Sie das Muster einsetzen
Nutzen Sie einen modalen Dialog für kurze Aufgaben, die jetzt erledigt werden müssen: eine Bestätigung, eine kurze Eingabe. Lange Formulare oder Inhalte, die man neben der Seite lesen will, gehören nicht in einen Dialog.
Das native <dialog> mit showModal() nimmt Ihnen viel ab: Der Rest der Seite wird inaktiv, Escape schließt den Dialog, und der Browser setzt den Fokus in den Dialog. Prüfen Sie trotzdem, ob der Fokus nach dem Schließen auf dem Auslöser landet.
Rollen, Zustände, Eigenschaften
- Natives
<dialog>, geöffnet mitshowModal(). Bei eigenen Lösungen:role="dialog"undaria-modal="true". - Ein Name über
aria-labelledbyauf die Dialog-Überschrift. - Optional
aria-describedbyauf einen kurzen Erklärtext. - Ein sichtbarer Schließen-Button mit zugänglichem Namen, zum Beispiel „Schließen“.
- Beim Öffnen landet der Fokus auf dem ersten sinnvollen Element, beim Schließen auf dem Button, der den Dialog geöffnet hat.
Tastaturbedienung
| Taste | Wirkung |
|---|---|
| Tab / Umschalt+Tab | Bewegt den Fokus zwischen den Elementen im Dialog; die Seite dahinter ist nicht erreichbar. |
| Escape | Schließt den Dialog; der Fokus kehrt zum Auslöser zurück. |
| Enter / Leertaste | Löst den fokussierten Button aus. |
Code
<button type="button" id="open">Abo kündigen</button>
<dialog id="dlg" aria-labelledby="dlg-h">
<h2 id="dlg-h">Abo wirklich kündigen?</h2>
<p>Sie können es jederzeit neu abschließen.</p>
<form method="dialog">
<button value="no">Abbrechen</button>
<button value="yes">Kündigen</button>
</form>
</dialog>
<script type="module">
const dlg = document.getElementById('dlg');
const opener = document.getElementById('open');
opener.addEventListener('click', () => dlg.showModal());
dlg.addEventListener('close', () => opener.focus());
</script>Häufige Fehler
- Fokus bleibt beim Öffnen auf der Seite dahinter: Tastaturnutzer bedienen unsichtbar den Hintergrund.
- Kein Weg hinaus: weder Escape noch ein Schließen-Button mit Namen (nur ein „ד ohne Text).
- Nach dem Schließen springt der Fokus an den Seitenanfang statt zurück zum Auslöser.
- Hintergrund nur optisch abgedunkelt, aber für Screenreader weiter erreichbar (fehlendes
aria-modaloderinert).
Passende WCAG-Kriterien
Quellen
Sind Ihre Komponenten so gebaut?
Der kostenlose Check findet viele Fehler automatisch. Im Audit prüft ein Mensch jede Komponente mit Tastatur und Screenreader.