Wie kann ich den Mix-Blend-Modus für ein Element einstellen, aber nicht für Kinder? Einstellen die Kinder auf den Standardwert von normal
scheint nicht zu funktionieren:Mix-Blend-Modus aus Child-Element entfernen
http://jsfiddle.net/uoq916Ln/1/
Wie kann ich den Mix-Blend-Modus für ein Element einstellen, aber nicht für Kinder? Einstellen die Kinder auf den Standardwert von normal
scheint nicht zu funktionieren:Mix-Blend-Modus aus Child-Element entfernen
http://jsfiddle.net/uoq916Ln/1/
jemand bemerkte, dass die der ganze Block mit dem Effekt wiedergegeben wird, und das ist, warum Sie das Problem haben. Ich bin in der Lage zu erreichen, was Sie versuchen, indem Sie die h1 aus dem Block, absolute Position und einen Z-Index von 1 zu entfernen. Hier ist eine Jfiddle, um den Effekt zu zeigen.
html
<div class="bkdg">
<h1>Header</h1>
<div class="blend">
</div>
</div>
css
.blend {
background-color: green;
mix-blend-mode: multiply;
width: 700px;
height: 35px;
}
h1 {
color: white;
position: absolute;
top: -15px; left: 10px;
z-index: 1;
}
Dies ist eine Problemumgehung, und eine gute, aber ist es eine Lösung? – meetalexjohnson
Nun, das ist eine schwierige Frage. Während es erreicht, was Sie wollen, können Sie dies nicht als eine Lösung betrachten und ich kann das verstehen. Aber nach meiner Erfahrung habe ich manchmal festgestellt, dass das CSS-Styling, das Sie wollen, manchmal Sie müssen Dinge in einer Runde tun. – Jpsh
Die Lösung, wie mix-blend-mode
Effekte Kinder zu vermeiden:
mix-blend-mode
darauf an;inner
Element im Inneren des Kindes für Ihren Inhalt. Mache seine Position absolut und lege sie auf andere Elemente.html
<div class="bkdg">
<div class="blend">
<div class="inner">
<h1>Header</h1>
</div>
</div>
</div>
css
.blend {
position: relative; // Make position relative
width: 100%;
height: 100%;
}
.blend::before { // Apply blend mode to this pseudo element
content: '';
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
z-index: 1;
background-color: green;
mix-blend-mode: multiply;
}
.inner { // This is our content, must have absolute position
position: absolute;
z-index: 2;
}
h1 {
color: white;
}
Ich weiß, das vor mehr als zwei Jahren gefragt wurde, aber es könnte in der Zukunft nützlich sein, als es könnte eine bessere Lösung als cre sein pseudo-Elemente.
Es gibt die CSS isolation
Eigenschaft, ob das Kind Element wählen können sollte in seinem übergeordneten Kontext (auto
) oder als Teil eines neuen Kontext wiedergegeben werden, so dass ohne Mischmodus auf sie angewendet (isolate
).
Check out this page für Beispiele
Es ist das gleiche Problem wie mit Opazität. Es ist nicht wirklich, dass die Eigenschaft vererbt wird, es ist, dass der ganze Block mit diesem Effekt gerendert wird. – vals