前言
今天看到一个很有意思的 CSS3 属性:mix-blend-mode,其中 mix 和 blend 的中文意译均为混合,那么这个属性的作用直译过来就是混合模式,原谅我孤陋寡闻,工作这么久没有见过这个属性。
文字智能适配背景颜色
这个效果就是在黑色背景中显示白色文字,在白色背景中显示黑色文字,而且是自动的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33<style>
.main {
width: 600px;
height: 200px;
background: linear-gradient(45deg, #000 0, #000 50%, #fff 50%);
position: relative;
margin: 100px auto;
}
.main::before {
content: '白雾茫茫丶';
position: absolute;
font-size: 50px;
width: 100%;
height: 100%;
top: 40%;
left: 20%;
color: #fff;
mix-blend-mode: difference;
animation: move 3s infinite linear alternate;
}
@keyframes move {
0% {
transform: translateX(20%);
}
100% {
transform: translateX(-20%);
}
}
</style>
<div class="main"></div>
我们可以发现,代码非常简单,关键是这个属性:mix-blend-mode: difference这是为什么呢?
经过一番资料查阅,设置了这个属性后,它是这样计算的:1
2
3
4
5
6
7
8
9黑底白字:
当前颜色: 255 255 255
父元素: 0 0 0
混合后的颜色:255 255 255
白底黑字:
当前颜色: 255 255 255
父元素: 255 255 255
混合后的颜色: 0 0 0由此可以得出结论:混合后的颜色 = 当前颜色 - 父元素背景色
实现文字镂空效果
1 | <style> |
mix-blend-mode 其他属性
属性值 | 描述 |
---|---|
normal | 默认值,没有混合效果 |
multiply | 正片叠底 |
screen | 滤色 |
overlay | 叠加 |
darken | 变暗 |
lighten | 变亮 |
color-dodge | 颜色减淡 |
color-burn | 颜色加深 |
hard-light | 强光 |
soft-light | 柔光 |
difference | 差值 |
exclusion | 排除 |
hue | 色相 |
color | 颜色 |
saturation | 饱和度 |
luminosity | 亮度 |
其它属性的效果,有兴趣的伙伴可以研究一下!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Cyan!
评论
您无需删除空行,直接评论以获取最佳展示效果