DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!
Die CSS-Eigenschaft isolation wird verwendet, um zu verhindern, dass sich Elemente mit ihren Hintergründen mischen.
.module {
isolation: isolate;
}
Sie wird am häufigsten verwendet, wenn mix-blend-mode auf einem anderen Element deklariert wurde. Die Anwendung von isolation auf das Element schützt dieses Element, sodass es nicht den mix-blend-mode erbt, der auf andere Elemente angewendet wird, die sich dahinter befinden könnten.
Mit anderen Worten, wenn mix-blend-mode überlappenden Elementen sagt, dass sie sich miteinander mischen sollen, dann schafft isolation eine Ausnahme für die Elemente, auf die sie angewendet wird. Es ist wie eine Möglichkeit, mix-blend-mode auszuschalten, aber von einem übergeordneten Element aus, anstatt das Element mit der Mischung direkt auswählen zu müssen.
Werte
isolate: Tut genau das, was es sagt. Es schützt das Element davor, sich mit anderen Elementen im Hintergrund zu mischen.auto: Setzt die Isolation zurück und erlaubt dem Element, sich mit seinem Hintergrund zu mischen.
Siehe den Pen Isolation Cha-Cha-Cha von CSS-Tricks (@css-tricks) auf CodePen.
Ein Anwendungsfall
Maria Antonietta Perna hat für SitePoint geschrieben und eine Demo erstellt, die den Punkt besonders gut verdeutlicht. Wir haben diese Grafik erstellt, um ihre Demo zu erklären.

Siehe den Pen Text/Bild-Mischung mit mix-blend-mode von SitePoint (@SitePoint) auf CodePen.
Wo es nicht funktioniert
Man könnte erwarten, dass isolation Elemente isoliert, wenn background-blend-mode verwendet wird, aber das ist nicht der Fall. Hintergrundelemente sind von Natur aus bereits isoliert, da sie sich nicht mit dem Inhalt hinter ihnen mischen.
Ein weiterer Punkt, an dem isolation scheinbar ungültig wird, ist, wenn es in Verbindung mit translate auf demselben Element verwendet wird. Dies könnte Ihnen begegnen, wenn Sie versuchen, ein Element sowohl vertikal als auch horizontal mit absolute Positionierung und translate zu zentrieren.
.module {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
isolation: isolate;
}
Die Verwendung von translate scheint das Element von sich aus zu isolieren, ohne die Verwendung von isolation.
Verwandt
Weitere Informationen
- W3C-Spezifikation
- isolation auf MDN
- isolation auf Codrops
- SitePoint: Ein genauerer Blick auf die CSS-Eigenschaft mix-blend-mode
Browserunterstützung für isolate
| Chrome | Safari | Firefox | Opera | IE/Edge | Android | iOS |
|---|---|---|---|---|---|---|
| 41 | 7.1 | 36 | 30 | Nein | 41 | 8.4 |
Can I Use… Browserunterstützung für mix-blend-mode
Diese Browserunterstützungsdaten stammen von Caniuse, wo es weitere Details gibt. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 41 | 32 | Nein | 79 | TP |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 18.0 |
tyutru
Ich frage mich, wie wir diese Eigenschaft verwenden können, um die Opazität bei bestimmten Kindern zu deaktivieren. Zum Beispiel, wenn man einem
divinnerhalb dieses Markupdiv > span*2eineopacity: 0.1gibt und eines dieserspanvon Transparenz befreit.Sogar ein gedrehtes Elternteil mit
transform: rotate()oder viele andere Beispiele. Ich konnte dies nur bei der Eigenschaftmix-blend-modein Aktion sehen, nicht bei etwas anderem, das einen weiteren Stack-Kontext erzeugt.Kann die
isolation-Eigenschaft solche Dinge tun?Nur zur Info, das Auskommentieren der Isolationsregel im Pen tut bei mir derzeit in Chrome nichts, vielleicht ein CodePen-Bug. Ich habe es zum Laufen gebracht, indem ich das Hintergrundbild des Bodys auf ein neues div gesetzt habe, das den Rest des HTML umschließt.
Im Maria-Anwendungsfall-Beispiel, ich glaube, ich habe verpasst, warum der
<h1>sich nach der Isolation immer noch mischt. Lag es an der absoluten Positionierung?