实现文件渐变的方法有两种
效果如下
-webkit-background-clip W3C支持的属性说明
但是并没有text 属性,所以这个只能在chrome上看到效果,在其他浏览器没有实现,它的兼容性就有很大的问题了
-webkit-background-clip: text 用文本剪辑背景,用渐变背景作为颜色填充文本。
缺点:webkit 内核浏览器特有
效果如下
使用:mask-image
缺点:webkit 内核浏览器特有
采用 svg 方式
实现原理:程序首先算出字体所在容器的高度N,然后清空容器内容,并添加N个span,每个span内容都为原容器的文字,每个span的颜色根据渐变色进行计算,而且其中的文字定位都相比之前一个span的文字向上偏移一个像素。CSS中可以看到,每个span的高度都为1。这样,我们就通过N各不同颜色的1px的span把字体“拼”出来了,然后加上“高光/阴影”就搞定。
目前,对CSS3支持日趋完善,实现兼容性的渐变背景效果是完全可以的,让背景渐变与背景图片共存的方法很简单,主要要注意的是图片要 保持“最小单元”的准则,选择正确的浏览器,该问题就能得到解决,下面介绍一下具体的解决方法。1、图片渐变切图时一定要以最小为准则,例如在做垂直方向的纯颜色的渐变时,尝试使用1个像素的竖直图片作为渐变背景“最小单元”。另外,要注意css3虽然支持很多的浏览器的兼容,但是目前不支持Opera浏览器。
2、如果兼容程度允许的话,纯色渐变背景可以使用css3的渐变样式,如{background: linear-gradient(left top, red , blue)},如此一来能够减少切图量,还可以加快网页加载速度,缺点是使用主流浏览器的话,就必须要添加前缀。
3、注意对于webkit核心的浏览器,如Chrome/Safari浏览器,在这些浏览器下要做到渐变背景,也需要使用CSS3 渐变方法,css-gradient,具体就是-webkit-gradient,使用语Firefox浏览器业是有一点差异的
/*上下线性渐变(兼容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)/*适用于所有新版本浏览器*/