<dialog>
Das <dialog>-Element erstellt ein Dialogfenster direkt in HTML, ohne externe Bibliothek und ohne ein <div> mit CSS manuell ein- und auszublenden. Es unterstützt modale Dialoge (mit Backdrop, die den Rest der Seite blockieren) und nicht-modale Dialoge (die neben dem restlichen Inhalt offen bleiben). Der Browser kümmert sich um Fokus-Management, ESC-Taste und die korrekte Reihenfolge im Accessibility-Tree.
Steckbrief <dialog>
- Kategorie
- Einbettung & Widgets
- Art
- Interaktiv
- Attribute
- 1
- Beispiele
- 1
- Browser
- 5 von 5
- 0 von 5
- Stand
- 03.07.2026
Grundlagen
Vor <dialog> haben Entwickler Modals komplett selbst gebaut: Ein <div> als Overlay, ein weiteres als Dialog-Container, JavaScript für das Öffnen/Schließen, manuelle Fokus-Verwaltung, ESC-Listener und aria-modal-Attribute. <dialog> ersetzt all das durch ein einziges HTML-Element mit einer kleinen API.
<dialog>ist standardmäßig unsichtbar (display: none)showModal()öffnet den Dialog als modales Fenster mit Backdrop und Fokus-Trapshow()öffnet den Dialog als nicht-modales Fenster ohne Backdropclose()schließt den Dialog und gibt optional einen Rückgabewert (dialog.returnValue)- Das
open-Attribut zeigt an, ob der Dialog sichtbar ist. Setz es aber nicht manuell, sondern verwende die Methoden - ESC schließt modale Dialoge automatisch
- Das
::backdrop-Pseudo-Element erlaubt das Styling des halbtransparenten Hintergrunds - Formulare mit
method="dialog"schließen den Dialog beim Absenden automatisch
Syntax
index.html
Grundsyntax
<button id="open-btn">Dialog öffnen</button>
<dialog id="my-dialog">
<h2>Willkommen!</h2>
<p>Das ist ein modaler Dialog.
Klicke auf Schließen oder drücke ESC.</p>
<button id="close-btn">Schließen</button>
</dialog>
<script>
document.getElementById("open-btn")
.addEventListener("click", () => {
document.getElementById("my-dialog").showModal();
});
document.getElementById("close-btn")
.addEventListener("click", () => {
document.getElementById("my-dialog").close();
});
</script>