css cross-fade()实现背景图像半透明效果
实现图像半透明的方法挺多,无论是filter滤镜、mask遮罩、opacity透明度设置都可以实现
要用background-image背景图片实现的话,可能第一个就会想到使用::before、::after伪元素实现,例如:
.box { position: relative; z-index: 0; } .box::before { content: ''; position: absolute; left: 0; right: 0; top: 0; bottom: 0; background: url(xxx.jpg) no-repeat center / contain; z-index: -1; opacity: .5; }
其实,还可以使用cross-fade()实现
cross-fade()函数可以让两张图像半透明混合
<div class="cross-fade-image"></div> .cross-fade-image { width: 300px; height: 300px; background: no-repeat center / contain; background-image: -webkit-cross-fade(url(1.jpg), url(2.jpg), 50%); background-image: cross-fade(url(1.jpg), url(2.jpg), 50%); }
语法如下:
<image-combination> = cross-fade( <image>, <image>, <percentage> )
调整下背景图的明暗度,使用cross-fade()
函数实现就是下面这段CSS代码
.dark { /* 兜底,IE和Firefox浏览器 */ background-image: url(2.jpg); --transparent: url(data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==); /* Safari最近版本已经不需要私有前缀了 */ background-image: cross-fade(var(--transparent), url(2.jpg), 40%); /* 如使用自定义属性,-webkit-语句需要放在没有私有前缀语句的下面 */ background-image: -webkit-cross-fade(var(--transparent), url(2.jpg), 40%); background-size: cover; }