Cho*_*tom 9 css3 background-blend-mode
如何在元素上设置mix-blend-mode,但不是它的子元素?将子项设置为默认值normal似乎不起作用:
如何避免mix-blend-mode影响儿童的解决方案:
mix-blend-mode它;inner为您的内容在子元素内创建元素。让它的位置绝对,并把它放在其他元素之上;html
<div class="bkdg">
<div class="blend">
<div class="inner">
<h1>Header</h1>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
有人评论说整个块都渲染有效果,这就是你遇到问题的原因。我可以通过从块中删除 h1、绝对位置和 z 索引 1 来完成您想要做的事情。这是一个 jsfiddle 来显示效果。
html
<div class="bkdg">
<h1>Header</h1>
<div class="blend">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
https://jsfiddle.net/jckot1pu/