实现图片的透明度渐变效果,效果如下:
先说下我的实现,并没有用什么黑科技,而是通过两层图层堆叠的方式来做的。下面一层就是单纯的 svg 图片,上面覆盖了一层遮罩,并设置遮罩的背景色为蓝色到透明色的从左到右渐变。这样,看上去就是一个图片从右到左渐渐变得透明的效果。
这是我比较粗暴的方法,后来在网上看到一种更加优雅的方式:
大体上差不多,重点是 CSS 的 background-image 属性可以设置多张图片,用逗号隔开 。因为我不知道这个属性有这个能力才会额外加了个渐变透明图层来实现效果。
/*上下线性渐变(兼容IE10及以上)*/background:-webkit-linear-gradient(#fff,#000)/*兼容webkit内核,比如Chrome*/
background:-moz-linear-gradient(#fff,#000)/*兼容老火狐浏览器*/
background:-o-linear-gradient(#fff,#000)/*兼容老欧朋Opera浏览器*/
background:linear-gradient(#fff,#000)/*适用于所有新版本浏览器*/
/*左右线性渐变(兼容IE10及以上,第一个值是left或right)*/
background:-webkit-linear-gradient(left,#fff,#000)/*兼容webkit内核,比如Chrome*/
background:-moz-linear-gradient(left,#fff,#000)/*兼容老火狐浏览器*/
background:-o-linear-gradient(left,#fff,#000)/*兼容老欧朋Opera浏览器*/
background:linear-gradient(left,#fff,#000)/*适用于所有新版本浏览器*/
/*兼容IE6-9渐变(只适用于线性渐变,参数enabled:true表示激活滤镜,false表示不激活;gradientType:0表示上下渐变,1表示左右渐变;startColorStr:起始渐变值,可以是#ffffff形式也可以是#ffffffff形式,此形式前两位表示透明度;endColorStr:结束渐变值,可以是#000000形式也可以是#ff000000形式,此形式前两位表示透明度。)*/
filter:progid:DXImageTransform.Microsoft.Gradient(enabled='true',gradientType=0,startColorStr='#ffffff',endColorStr='#000000')
/*径向渐变(兼容IE10及以上)*/
background:-webkit-radial-gradient(#f00,#0f0,#00f)/*兼容webkit内核,比如Chrome*/
background:-moz-radial-gradient(#f00,#0f0,#00f)/*兼容老火狐浏览器*/
background:-o-radial-gradient(#f00,#0f0,#00f)/*兼容老欧朋Opera浏览器*/
background:radial-gradient(#f00,#0f0,#00f)/*适用于所有新版本浏览器*/