在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文欢迎分享与聚合,全文转载就不必了,尊重版权,圈子就这么大,若急用可以联系授权。 一、可能都知道的 首先,讲两点大家可能都知道的知识点: 1. 2.应用 接下来,讲下大家可能并不知道的知识点,这也是很多人搞不清楚为什么 二、可能不知道的 1. 背景顺序影响混合效果 混合效果和 例如下面2个元素: <div class="ball"></div> <div class="ball2"></div> 设置背景混合模式为叠加,但是两个元素的背景图像的顺序是相反的,代码如下所示: .ball { width: 200px; height: 200px; border-radius: 50%; background: linear-gradient(deeppink, deeppink), linear-gradient(deepskyblue, deepskyblue); /* 应用叠加混合模式 */ background-blend-mode: overlay; } .ball2 { width: 200px; height: 200px; border-radius: 50%; background: linear-gradient(deepskyblue, deepskyblue), linear-gradient(deeppink, deeppink); /* 应用叠加混合模式 */ background-blend-mode: overlay; } 结果下图所示, 2. 混合效果是多个混合属性同时作用的结果 很多开发人员并不清楚, .ball { background: linear-gradient(deeppink, deeppink), linear-gradient(deepskyblue, deepskyblue); background-blend-mode: overlay; } 实际上等同于: .ball { background: linear-gradient(deeppink, deeppink), linear-gradient(deepskyblue, deepskyblue); background-blend-mode: overlay overlay; } 也就是, 换言之,实际上,每个背景图像都有一个自己的混合模式值,这是和 我们通过一个案例演示下 <div class="box"></div> .box { width: 200px; height: 200px; background: linear-gradient(to right bottom, deeppink 50%, transparent 50%), linear-gradient(to top right, deeppink 50%, transparent 50%), darkblue; background-blend-mode: multiply, screen; position: relative; } /* 中间原始的deeppink色值 */ .box::before { content: ''; position: absolute; width: 33%; height: 33%; inset: 0; margin: auto; background-color: deeppink; } 此时 其中: 中间标注了序号①的正方形区域没有应用任何混合模式,颜色就是
于是,最终的色值表现是上层的 由于下层的 以上就是 三、background-blend-mode与渐变图标的实现 最后再看看看,为何大多数人没办法使用 例如,现在有1个颜色很深的删除小图标,理论上,我们可以使用 .icon-delete { background: linear-gradient(deepskyblue, deeppink), url(delete.png), white; background-blend-mode: lighten; } 乍一看,似乎逻辑上无懈可击,渐变和白底黑色的图标进行变亮混合,怎么想黑色图标也应该变成渐变色啊,很遗憾,最终的渐变并不是渐变色,而是纯白色,为什么会有这样的结果呢? 那是因为这里的 .icon-delete { background: linear-gradient(deepskyblue, deeppink), url(delete.png), white; /* 实际上的计算值 */ background-blend-mode: lighten lighten; } 也就是删除图标 知道了问题所在,也就知道了该如何解决了,很简单,让 .icon-delete { background: linear-gradient(deepskyblue, deeppink), url(delete.png), white; /* PNG图标的混合模式单独设成darken */ background-blend-mode: lighten darken; } 或者是: .icon-delete { background: linear-gradient(deepskyblue, deeppink), url(delete.png), white; /* PNG图标的混合模式单独设成normal */ background-blend-mode: lighten normal; } 推荐使用 当然,渐变图标效果最好的实现方法肯定是 CSS 四、background-blend-mode的补全规则 当 如果 .example { background: linear-gradient(deepskyblue, deeppink), white; background-blend-mode: lighten, darken; } 等同于: .example { background: linear-gradient(deepskyblue, deeppink), white; background-blend-mode: lighten; } 如果 .example { background: linear-gradient(deepskyblue, deeppink), linear-gradient(deepskyblue, deeppink), linear-gradient(deepskyblue, deeppink), white; background-blend-mode: lighten, darken; } 等同于: .example { background: linear-gradient(deepskyblue, deeppink), linear-gradient(deepskyblue, deeppink), linear-gradient(deepskyblue, deeppink), white; background-blend-mode: lighten, darken, lighten; } 也就是 五、结语 CSS
原因在于: 1.真实世界的照片图像很少作为 2. 因此,目前 具体就不展开,非本文主要内容。 本文地址: https://www.zhangxinxu.com/wordpress/?p=9499 到此这篇关于深入理解CSS background-blend-mode的作用机制的文章就介绍到这了,更多相关CSS background-blend-mode的作用内容请搜索极客世界以前的文章或继续浏览下面的相关文章,希望大家以后多多支持极客世界! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论