CSS混合模式为什么在背景图上不生效?
我在做一个卡片hover效果,想用mix-blend-mode: multiply让文字和背景图混合,但完全没反应。背景是用background-image设置的,文字是普通span。查了文档说要同层元素才行?那是不是必须把背景图改成img标签才能用混合模式啊?
试过给父容器加isolation: isolate也没用,控制台也没报错,就是看起来跟没加一样。下面是我的代码:
.card {
background-image: url('bg.jpg');
position: relative;
}
.card span {
mix-blend-mode: multiply;
color: white;
}
解决方案:把背景图变成独立元素
用伪元素把背景图抽离出来:
或者直接用 img 标签:
核心要点就是:参与混合的元素必须是独立的 DOM 元素,不能一个是元素的背景属性。isolation: isolate 那是用来创建新的层叠上下文的,对这个场景没用。
搞定代码: