::backdrop CSS pseudo-element
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2022 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Das ::backdrop CSS Pseudo-Element ist eine Box in der Größe des Ansichtsfensters, die unmittelbar unterhalb jedes Elements dargestellt wird, das in der Top-Ebene präsentiert wird.
Probieren Sie es aus
button {
font-size: 1.2rem;
padding: 5px 15px;
}
dialog::backdrop {
background-color: salmon;
}
<button id="showDialogBtn">Show a dialog</button>
<dialog id="favDialog">
<form method="dialog">
<p>The background shown outside of this dialog is a backdrop.</p>
<button id="confirmBtn">Close the dialog</button>
</form>
</dialog>
const showDialogBtn = document.getElementById("showDialogBtn");
const favDialog = document.getElementById("favDialog");
showDialogBtn.addEventListener("click", () => favDialog.showModal());
Syntax
::backdrop {
/* ... */
}
Beschreibung
Rückseiten erscheinen in den folgenden Fällen:
- Elemente, die mit der Fullscreen API Methode
Element.requestFullscreen()im Vollbildmodus angezeigt werden. <dialog>-Elemente, die über einen Aufruf vonHTMLDialogElement.showModal()in der oberen Ebene im Top-Layer angezeigt werden.- Popover-Elemente, die über einen Aufruf von
HTMLElement.showPopover()im Top-Layer angezeigt werden.
Wenn mehrere Elemente in die obere Ebene gesetzt werden, hat jedes ein eigenes ::backdrop-Pseudo-Element.
/* Backdrop is only displayed when dialog is opened with dialog.showModal() */
dialog::backdrop {
background: rgb(255 0 0 / 25%);
}
Elemente werden in einem Last-in/First-out (LIFO)-Stack in der oberen Ebene platziert. Das ::backdrop-Pseudo-Element ermöglicht es, alles, was sich unter einem oberen Ebenenelement befindet, zu verbergen, zu stylen oder vollständig zu verstecken.
::backdrop wird weder von noch auf andere Elemente vererbt. Es gibt keine Einschränkungen bezüglich der Eigenschaften, die auf dieses Pseudo-Element angewendet werden können.
Beispiele
Das Hintergrundbild eines modalen Dialogs stylen
In diesem Beispiel verwenden wir das ::backdrop-Pseudo-Element, um das Hintergrundbild zu stylen, das verwendet wird, wenn ein modales <dialog> geöffnet ist.
HTML
Wir fügen einen <button> ein, der bei Klick das enthaltene <dialog> öffnet. Wenn das <dialog> geöffnet wird, geben wir dem Button, der das Dialogfeld schließt, den Fokus:
<dialog>
<button autofocus>Close</button>
<p>This modal dialog has a beautiful backdrop!</p>
</dialog>
<button>Show the dialog</button>
CSS
Wir fügen dem Hintergrund einen Hintergrund hinzu und erstellen einen farbenfrohen Donut mit CSS-Verläufen:
::backdrop {
background-image:
radial-gradient(
circle,
white 0 5vw,
transparent 5vw 20vw,
white 20vw 22.5vw,
#eeeeee 22.5vw
),
conic-gradient(
#272b66 0 50grad,
#2d559f 50grad 100grad,
#9ac147 100grad 150grad,
#639b47 150grad 200grad,
#e1e23b 200grad 250grad,
#f7941e 250grad 300grad,
#662a6c 300grad 350grad,
#9a1d34 350grad 400grad,
#43a1cd 100grad 150grad,
#ba3e2e
);
}
JavaScript
Das Dialogfeld wird modal mit der Methode .showModal() geöffnet und mit der Methode .close() geschlossen.
const dialog = document.querySelector("dialog");
const showButton = document.querySelector("dialog + button");
const closeButton = document.querySelector("dialog button");
// "Show the dialog" button opens the dialog modally
showButton.addEventListener("click", () => {
dialog.showModal();
});
// "Close" button closes the dialog
closeButton.addEventListener("click", () => {
dialog.close();
});
Ergebnisse
Spezifikationen
| Spezifikation |
|---|
| CSS Positioned Layout Module Level 4 # backdrop |
Browser-Kompatibilität
Siehe auch
:fullscreenPseudo-Klasse<dialog>HTML-Element- Fullscreen API
popoverglobales HTML-Attribut- Popover API