overlay CSS property
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die overlay CSS-Eigenschaft gibt an, ob ein Element, das in der Top-Schicht (zum Beispiel ein angezeigtes Popover oder modales <dialog>-Element) erscheint, tatsächlich in der Top-Schicht gerendert wird. Diese Eigenschaft ist nur in einer Liste von transition-property-Werten relevant und nur, wenn allow-discrete als transition-behavior gesetzt ist.
Es ist wichtig zu beachten, dass overlay nur vom Browser gesetzt werden kann — Autorstile können den overlay-Wert eines Elements nicht ändern. Sie können jedoch overlay zur Liste der Übergangseigenschaften eines Elements hinzufügen. Dies bewirkt, dass die Entfernung von der Top-Schicht verzögert wird, damit es animiert werden kann, anstatt sofort zu verschwinden.
Hinweis:
Wenn Sie overlay übergangsweise verwenden, müssen Sie transition-behavior: allow-discrete auf den Übergang setzen, damit es animiert wird. overlay-Animationen unterscheiden sich von normalen diskreten Animationen, da der sichtbare (d.h. auto) Zustand für die gesamte Dauer des Übergangs immer angezeigt wird, unabhängig davon, ob es der Start- oder Endzustand ist.
Syntax
/* Keyword values */
overlay: auto;
overlay: none;
/* Global values */
overlay: inherit;
overlay: initial;
overlay: revert;
overlay: revert-layer;
overlay: unset;
Werte
Diese Eigenschaft wird als einer der folgenden Schlüsselwortwerte angegeben:
Formale Definition
| Anfangswert | none |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | Discrete behavior except when animating to or from none is visible for the entire duration |
Formale Syntax
overlay =
none |
auto
Beispiele
>Übergang eines Popovers
In diesem Beispiel wird ein Popover animiert, während es von versteckt zu sichtbar übergeht und wieder zurück.
HTML
Das HTML enthält ein <div>-Element, das mithilfe des popover-Attributs als Popover deklariert ist, und ein <button>-Element, das durch das popovertarget-Attribut als Steuerung für die Popover-Anzeige festgelegt ist.
<button popovertarget="mypopover">Show the popover</button>
<div popover="auto" id="mypopover">I'm a Popover! I should animate.</div>
CSS
Die overlay-Eigenschaft ist nur in der Liste der übergangenen Eigenschaften vorhanden. Da overlay eine durch den Benutzeragenten kontrollierte Eigenschaft ist, wird sie nicht in den Vorübergangs- oder Nachübergangszuständen deklariert.
html {
font-family: "Helvetica", "Arial", sans-serif;
}
[popover]:popover-open {
opacity: 1;
transform: scaleX(1);
}
[popover] {
font-size: 1.2rem;
padding: 10px;
/* Final state of the exit animation */
opacity: 0;
transform: scaleX(0);
transition:
opacity 0.7s,
transform 0.7s,
overlay 0.7s allow-discrete,
display 0.7s allow-discrete;
/* Equivalent to
transition: all 0.7s allow-discrete; */
}
/* Needs to be included after the previous [popover]:popover-open
rule to take effect, as the specificity is the same */
@starting-style {
[popover]:popover-open {
opacity: 0;
transform: scaleX(0);
}
}
/* Transition for the popover's backdrop */
[popover]::backdrop {
background-color: transparent;
transition:
display 0.7s allow-discrete,
overlay 0.7s allow-discrete,
background-color 0.7s;
/* Equivalent to
transition: all 0.7s allow-discrete; */
}
[popover]:popover-open::backdrop {
background-color: rgb(0 0 0 / 25%);
}
/* Nesting selectors (&) cannot represent pseudo-elements, so this
starting-style rule cannot be nested. */
@starting-style {
[popover]:popover-open::backdrop {
background-color: transparent;
}
}
Die zwei Eigenschaften, die wir animieren möchten, sind opacity und transform: wir möchten, dass das Popover beim Ein- und Ausblenden während des Wachstums und Schrumpfens in horizontaler Richtung verblasst. Wir setzen einen Startzustand dieser Eigenschaften auf den Standardversteckzustand des Popovers (ausgewählt über [popover]) und einen Endzustand auf den offenen Zustand des Popovers (ausgewählt über die :popover-open-Pseudoklasse). Dann setzen wir eine transition-Eigenschaft, um zwischen den beiden zu animieren.
Da das animierte Element beim Anzeigen in die Top-Schicht befördert und beim Verstecken aus der Top-Schicht entfernt wird, wird overlay zur Liste der übergangenen Elemente hinzugefügt. Dies stellt sicher, dass die Entfernung des Elements aus der Top-Schicht verzögert wird, bis die Animation beendet ist. Das macht bei einfachen Animationen wie dieser keinen großen Unterschied, aber in komplexeren Fällen kann das Auslassen dieses Schritts dazu führen, dass das Element zu schnell aus dem Overlay entfernt wird, was bedeutet, dass die Animation nicht geschmeidig oder effektiv ist. Beachten Sie, dass der Wert transition-behavior: allow-discrete ebenfalls im Kurzschreibweise-Set festgelegt ist, um diskrete Übergänge zu ermöglichen.
Die folgenden Schritte sind ebenfalls erforderlich, um die Animation in beide Richtungen zum Laufen zu bringen:
- Ein Startzustand für die Animation wird innerhalb der
@starting-style-At-Regel festgelegt. Dies ist notwendig, um unerwartetes Verhalten zu vermeiden. Standardmäßig werden Übergänge nicht bei den ersten Stilaktualisierungen von Elementen ausgelöst oder wenn derdisplay-Typ vonnonein einen anderen Typ geändert wird.@starting-styleerlaubt es Ihnen, dieses Standardverhalten auf eine spezifische, kontrollierte Weise zu überschreiben. Ohne dies würde die Eintrittsanimation nicht erfolgen, und das Popover würde einfach erscheinen. displaywird ebenfalls zur Liste der übergangenen Elemente hinzugefügt, damit das animierte Element während sowohl der Eintritts- als auch der Austrittsanimation sichtbar ist (aufdisplay: blockgesetzt). Ohne dies wäre die Austrittsanimation nicht sichtbar; tatsächlich würde das Popover einfach verschwinden. Auch hier isttransition-behavior: allow-discretein diesem Fall erforderlich, damit die Animation erfolgen kann.
Sie werden feststellen, dass wir auch eine Übergangsanimation auf das ::backdrop aufgenommen haben, das hinter dem Popover erscheint, wenn es geöffnet wird, um eine schöne Verdunkelungsanimation zu bieten. [popover]:popover-open::backdrop ist notwendig, um das Backdrop auszuwählen, wenn das Popover geöffnet ist.
Ergebnis
Der Code rendert wie folgt:
Hinweis:
Da Popover bei jedem Anzeigen von display: none zu display: block wechseln, wechseln sie bei jedem Eintrittsübergang von ihren @starting-style-Stilen zu ihren [popover]:popover-open-Stilen. Wenn das Popover geschlossen wird, wechselt es von seinem [popover]:popover-open-Zustand in den Standard-[popover]-Zustand.
Es ist möglich, dass der Stilübergang beim Eintritt und Austritt in solchen Fällen unterschiedlich ist. Sehen Sie unser Beispiel Demonstration of when starting styles are used für einen Beweis dafür.
Spezifikationen
| Spezifikation |
|---|
| CSS Positioned Layout Module Level 4> # overlay> |
Browser-Kompatibilität
Siehe auch
- CSS-Übergänge Modul
@starting-styletransition-behavior- Vier neue CSS-Features für flüssige Ein- und Austrittsanimationen auf developer.chrome.com (2023)