Native Interaktion: das popover-Attribut
Ein Popover: ganz ohne JavaScript, ganz ohne z-index
Abschnitt betitelt „Ein Popover: ganz ohne JavaScript, ganz ohne z-index“Jedes HTML-Element kann mit dem popover-Attribut zu einem Popover werden - einem Element, das über allem anderen schwebt, ohne dass ihr euch um z-index oder position kümmern müsst:
<button popovertarget="menu">Menü öffnen</button>
<div id="menu" popover> <p>Ich schwebe über der ganzen Seite!</p></div>popoverauf dem<div>macht es zu einem Popover - standardmäßig unsichtbarpopovertarget="menu"auf dem<button>verbindet die beiden über dieid- ein Klick öffnet/schließt das Popover- Kein JavaScript, kein
z-index, kein eigener Backdrop-Trick nötig
Automatisches Schließen: popover="auto"
Abschnitt betitelt „Automatisches Schließen: popover="auto"“<div id="menu" popover="auto">...</div><!-- entspricht: <div id="menu" popover>...</div> -->autoist der Standardwert - auch wenn ihr nurpopoverohne Wert schreibt- Ein Klick außerhalb des Popovers schließt es automatisch (“Light Dismiss”), genau wie ein natives Browser-Dropdown
- Die Esc-Taste schließt es ebenfalls automatisch
- Öffnet ihr ein zweites
auto-Popover, schließt sich das erste von selbst
Manuelles Schließen: popover="manual"
Abschnitt betitelt „Manuelles Schließen: popover="manual"“<div id="toast" popover="manual">Gespeichert!</div>manualschließt sich nicht automatisch bei Klick außerhalb oder Esc- Ihr steuert das Öffnen/Schließen komplett selbst, z.B. über
popovertargetactionoder JavaScript - Praktisch für Dinge, die eine Weile sichtbar bleiben sollen, z.B. eine Toast-Benachrichtigung
Öffnen, Schließen, Umschalten: popovertargetaction
Abschnitt betitelt „Öffnen, Schließen, Umschalten: popovertargetaction“<button popovertarget="menu" popovertargetaction="show">Öffnen</button><button popovertarget="menu" popovertargetaction="hide">Schließen</button><button popovertarget="menu">Umschalten</button> <!-- toggle ist Standard -->| Wert | Verhalten |
|---|---|
toggle (Standard) | öffnet, wenn geschlossen; schließt, wenn offen |
show | öffnet nur (macht nichts, wenn schon offen) |
hide | schließt nur |
Styling: :popover-open und ::backdrop
Abschnitt betitelt „Styling: :popover-open und ::backdrop“#menu { border: none; border-radius: 8px; padding: 16px; box-shadow: 0 4px 12px rgb(0 0 0 / 0.15);}
#menu:popover-open { /* Styles, die nur gelten, während das Popover offen ist */}:popover-openist eine Pseudo-Klasse, die nur trifft, während das Popover sichtbar ist - genau wie:focusoder:hoveraus dem Selektoren-Kapitel, nur eben für den Popover-Zustand- Popover mit
autobekommen ebenfalls einen::backdrop, den ihr wie beim<dialog>-Element stylen könnt
Praxisbeispiel: ein Dropdown-Menü
Abschnitt betitelt „Praxisbeispiel: ein Dropdown-Menü“<button popovertarget="user-menu">Mein Konto ▾</button>
<ul id="user-menu" popover> <li><a href="/profil">Profil</a></li> <li><a href="/einstellungen">Einstellungen</a></li> <li><a href="/logout">Abmelden</a></li></ul>#user-menu { list-style: none; margin: 0; padding: 8px; border: 1px solid #e5e7eb; border-radius: 8px;}beantwortet: 0 / 0 (0%)
richtig: 0 / 0 (0%)