DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费积分!
background-blend-mode
属性定义了元素的 background-image
如何与其 background-color
混合。
.container {
background-image: url('image.jpg');
background-color: red;
background-blend-mode: screen;
}
在上面的演示中,左侧的默认 background-image
没有设置混合模式,因此图像会覆盖 background-color
。 然而,在右侧,混合模式修改了 background-image
与下面的红色 background-color
混合。 但请注意,文本颜色 未 受此附加属性的影响。
值
initial
:默认值,无混合。inherit
:继承父元素的混合模式。<blend-mode>
:一个值,将根据其background-color
更改 background-image。
值可以设置为以下任何值(在下面的演示中,
background-color
为红色)
链接多个混合模式
每个背景层只能有一个混合模式,但是如果我们使用多个线性渐变,那么每个渐变都可以有自己的混合模式,这会带来有趣的显示效果。
这是通过按您想要影响的背景层顺序列出这些值来实现的。
.container {
background:
linear-gradient(purple 0%, red 90%),
linear-gradient(to right, purple 0%, yellow 90%),
url('image.jpg') 30px,
url('image.jpg') 20px;
background-blend-mode: screen, difference, lighten;
}
第一个线性渐变具有 screen
混合模式,然后是第二个线性渐变,其具有 difference
混合模式,以及第一个背景图像,其应用了 lighten
混合模式。
演示
这是一个工作示例,说明这些值根据 background-color
的解释方式。
浏览器支持
这些浏览器支持数据来自 Caniuse,其中包含更多详细信息。 数字表示浏览器从该版本开始支持该功能。
桌面
Chrome | Firefox | IE | Edge | Safari |
---|---|---|---|---|
35 | 30 | 否 | 79 | 10.1 |
移动/平板电脑
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
127 | 127 | 127 | 10.3 |
有没有办法在 IE 中实现这一点?
有没有办法在 IE 中实现这一点?
或者一个适用于所有 IE 版本的解决方案?到目前为止,我还没有找到解决方案,微软不想支持 blend-mode。这样一来,我们就无法使用 blend-mode。我找到了使用 JavaScript 的解决方案,大多数解决方案在 IE 11 和 Edge 中都存在问题,并且颜色在浏览器中不同。
Rene
我找到了 Matt Slack 给出的唯一且最好的解决方案
http://collectiveidea.com/blog/archives/2016/06/02/fun-with-svg-css-background-blend-mode-fallback
我没有使用 JavaScript 部分(除了功能检测之外),因为我能够通过我的 CMS 模板将图像路径直接包含到 SVG 中
唯一需要花一些时间才能弄清楚的是
<base href="">
的用法,它会干扰filter="url(#myFilter)"
属性。在这种情况下,我必须将路径添加到当前页面filter="url(/mypage.html#myFilter)"
。这是 Matt 的 js 版本 +
<base>
标签 (http://codepen.io/localhorst/pen/QGEMmE)