DEV Community

Marco
Marco

Posted on • Originally published at blog.disane.dev

Bessere Dialoge in HTML mit <dialog> 💬

Erfahre, wie das Tag in HTML modale Dialoge vereinfacht und warum es besser ist als frühere Techniken. 💬


Das <dialog> Tag ist eine relativ neue Einführung in HTML, die die Art und Weise revolutioniert, wie wir modale Dialoge und Benutzerinteraktionen auf Webseiten gestalten und verwalten. In diesem Artikel werden wir untersuchen, wie das <dialog> Tag funktioniert, wie es vorher gemacht wurde und warum diese neue Methode so vorteilhaft ist.

: The Dialog element - HTML: HyperText Markup Language | MDNPreview imageThe HTML element represents a modal or non-modal dialog box or other interactive component, such as a dismissible alert, inspector, or subwindow.

Was ist das <dialog> Tag? 📝

Das <dialog> Tag wurde entwickelt, um eine native Methode zur Erstellung von modalen Dialogen in HTML bereitzustellen. Modale Dialoge sind Popup-Fenster, die den Fokus auf sich ziehen und die Interaktion mit dem Rest der Seite verhindern, bis sie geschlossen werden. Dies ist besonders nützlich für Benutzerinteraktionen wie Bestätigungen, Warnungen oder Formulare.

Das Beste ist, dass es in allen modernen Browsern unterstützt wird:

Dialog element | Can I use... Support tables for HTML5, CSS3, etcPreview image

Grundstruktur eines <dialog> Tags

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Dialog</title>
    <style>
        dialog {
            border: none;
            border-radius: 8px;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            padding: 20px;
            width: 300px;
        }
        dialog::backdrop {
            background-color: rgba(0, 0, 0, 0.5);
        }
        #closeDialog {
            background-color: #f44336;
            border: none;
            color: white;
            padding: 10px 20px;
            text-align: center;
            text-decoration: none;
            display: inline-block;
            font-size: 16px;
            margin: 4px 2px;
            cursor: pointer;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <button id="openDialog">Open Dialog</button>
    <dialog id="myDialog">
        <p>This is a modern dialog</p>
        <button id="closeDialog">close</button>
    </dialog>

    <script>
        const dialog = document.getElementById('myDialog');
        const openDialogButton = document.getElementById('openDialog');
        const closeDialogButton = document.getElementById('closeDialog');

        openDialogButton.addEventListener('click', () => {
            dialog.showModal();
        });

        closeDialogButton.addEventListener('click', () => {
            dialog.close();
        });

        // Automatisches Schließen des Dialogs nach 10 Sekunden
        setTimeout(() => {
            dialog.close();
        }, 10000);
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

In diesem Beispiel öffnet der Button "Öffne Dialog" das Dialogfeld, und der Button "Schließen" schließt es. Zusätzlich wird der Dialog automatisch nach 3 Sekunden geöffnet und nach 10 Sekunden geschlossen. Das CSS sorgt für eine ansprechende Gestaltung des Dialogs und einen halbtransparenten Hintergrund (Backdrop).

Automatisches Öffnen

Das open Attribut hält den Dialog von dem Moment an offen, wenn Du die Seite öffnest. Indem Du das open Attribut zum <dialog> Tag hinzufügst, bleibt der Dialog automatisch geöffnet, ohne dass eine Benutzerinteraktion erforderlich ist. Dies kann nützlich sein, wenn Du eine Nachricht oder eine wichtige Information sofort beim Laden der Seite anzeigen möchtest.

<dialog id="myDialog" open>
    <p>Das ist ein dauerhaft geöffneter Dialog.</p>
    <button id="closeDialog">Schließen</button>
</dialog>

Enter fullscreen mode Exit fullscreen mode

In diesem Beispiel bleibt der Dialog direkt nach dem Laden der Seite geöffnet, da das open Attribut verwendet wird.

Styling des Backdrops 🎨

Das <dialog> Tag verfügt über ein spezielles ::backdrop Pseudoelement, mit dem das Aussehen des Hintergrunds (Backdrop) gestaltet werden kann. Der Backdrop ist der halbtransparente Bereich, der angezeigt wird, wenn der Dialog geöffnet ist, und verhindert, dass der Benutzer mit anderen Teilen der Seite interagiert.

dialog::backdrop {
    background-color: rgba(0, 0, 0, 0.5);
}

Enter fullscreen mode Exit fullscreen mode

Mit dem ::backdrop Pseudoelement kannst Du verschiedene Stile anwenden, wie zum Beispiel die Farbe, die Transparenz oder sogar komplexere visuelle Effekte, um den modalen Dialog hervorzuheben und den Fokus auf ihn zu lenken.

Vorherige Implementierungstechniken 📜

Bevor das <dialog> Tag eingeführt wurde, mussten Entwickler auf verschiedene Workarounds zurückgreifen, um modale Dialoge zu erstellen. Zu den gängigsten Methoden gehörten:

  • JavaScript-Bibliotheken: Bibliotheken wie jQuery UI oder Bootstrap boten Lösungen für modale Dialoge.
  • Eigenentwickelte Lösungen: Entwickler erstellten benutzerdefinierte Modale mit HTML, CSS und JavaScript.

Beispiel mit jQuery UI

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>jQuery UI Dialog Beispiel</title>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
</head>
<body>
    <button id="openDialog">Öffne Dialog</button>
    <div id="myDialog" title="Modaler Dialog">
        <p>Das ist ein modaler Dialog mit jQuery UI.</p>
    </div>

    <script>
        $(document).ready(function() {
            $('#myDialog').dialog({
                autoOpen: false,
                modal: true
            });

            $('#openDialog').click(function() {
                $('#myDialog').dialog('open');
            });
        });
    </script>
</body>
</html>

Enter fullscreen mode Exit fullscreen mode

Hier sehen wir ein Beispiel mit jQuery UI, das eine zusätzliche Abhängigkeit und mehr Code erfordert, um denselben Effekt zu erzielen.

Vorteile des <dialog> Tags 🎉

Das <dialog> Tag bietet mehrere Vorteile gegenüber den älteren Techniken:

Einfachheit und Lesbarkeit

Das <dialog> Tag ist einfach zu verwenden und erfordert weniger Code, was die Lesbarkeit und Wartbarkeit verbessert. Es ist eine native HTML-Lösung, die keine externen Bibliotheken oder umfangreiche CSS- und JavaScript-Codebasis benötigt.

Bessere Integration und Barrierefreiheit ♿

Da das <dialog> Tag nativ im Browser implementiert ist, bietet es bessere Unterstützung für Barrierefreiheit. Screenreader und andere Hilfstechnologien können besser mit nativen HTML-Elementen umgehen, was die Benutzererfahrung für Menschen mit Behinderungen verbessert.

Performance und Ladezeiten 🚀

Durch die Reduzierung externer Abhängigkeiten verbessert das <dialog> Tag die Performance der Webseite. Weniger externe Bibliotheken bedeuten schnellere Ladezeiten und weniger Overhead.

Fazit 💡

Das <dialog> Tag ist eine leistungsstarke Ergänzung zu HTML, die die Erstellung und Verwaltung von modalen Dialogen erheblich vereinfacht. Durch die Verwendung dieses Tags können Entwickler auf einfache und effiziente Weise interaktive und barrierefreie Benutzererlebnisse schaffen. Wenn Du also das nächste Mal einen modalen Dialog benötigst, denke daran, wie das <dialog> Tag Dir das Leben erleichtern kann.

Wir hoffen, dass dieser Artikel Dir geholfen hat, die Vorteile und Anwendungen des <dialog> Tags besser zu verstehen. Wenn Du Fragen oder Anmerkungen hast, nutze gerne die Kommentarfunktion unter diesem Artikel.


If you like my posts, it would be nice if you follow my Blog for more tech stuff.

Top comments (0)