在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、需求描述 某元素,希望 如果是纯色背景或者是CSS渐变背景,很好处理,使用 但是,如果是 如果是个内联的 我估计很多人会想到使用 .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; } 实时效果如下(如果没有效果请访问原文 作者张鑫旭 ): by-zhangxinxu 但是这个方法太啰嗦,成本太高(创建了大量的层叠上下文、尺寸是不是需要调整),无法大规模使用。 有没有什么好的实现方法呢? 试试使用 二、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%); } 就会有下图所示的效果。
上面案例使用的是 <dfn id="ltimage-combination"> <image-combination> </dfn> = cross-fade( <image>, <image>, <percentage> ) 其中 关于 示意截图如下: 虽然 实现原理很简单,第1张图使用透明图片,第2张图使用目标图片就可以了。 举个例子: 某背景图在黑暗模式下太亮了,希望调整下背景图的明暗度,使用 .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; } 效果如下: 是不是很简单,是不是比伪元素实现要靠谱的多,对应的demo访问 这里 。
因此,使用 三、移动端兼容性极佳
因此,在移动端可以放心使用,至于PC端,不需要考虑IE浏览器的项目也是可以放心使用的,就算需要考虑IE也没毛病,不过就是背景图还是完全不透明而已,视觉体验稍微低了一点而已。 这世界上没有所谓的没有用的CSS属性,只是没有遇到合适的场景而已;就像依然单身的诸位,只是还没有遇到合适的那个他/她而已。 另外, 到此这篇关于使用CSS cross-fade()实现背景图像半透明效果的示例代码的文章就介绍到这了,更多相关CSS cross-fade()背景图像半透明内容请搜索极客世界以前的文章或继续浏览下面的相关文章,希望大家以后多多支持极客世界! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论