有时我们会看到网站上的一些图片是渐变色的,这些图片有的是ui设计出来的,有的则是直接通过css3制作出来的。下面就讲一下css3实现渐变色的方法,以及在各个浏览器上的兼容性。
CSS3 Gradient分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。而我们今天主要是针对线性渐变来剖析其具体的用法。
下面是代码:.line-color{
width: 200px;
height: 200px;
FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0,
startColorStr=#AC07BD, endColorStr=#f6f6f8); /*IE 6 7 8*/
background: -ms-linear-gradient(top, #AC07BD, #f6f6f8);
/* IE 10 */
background:-moz-linear-gradient(top, #AC07BD, #f6f6f8);/*火狐*/
background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#AC07BD),
to(#f140f8)); /* Safari 4-5, Chrome 1-9*/
background: -webkit-linear-gradient(top, #AC07BD, #f140f8);
/*Safari5.1 Chrome 10+*/
background: -o-linear-gradient(top, #AC07BD, #f140f8);
/*Opera 11.10+*/
linear-gradient(to bottom, hsl(0, 80%, 70%), #bada55);
/* Standard syntax; must be last */
}
代码行4/5 线性渐变在Trident (IE)下的应用(推荐学习:CSS视频教程)
IE依靠滤镜实现渐变。startColorstr表示起点的颜色,endColorstr表示终点颜色。GradientType表示渐变类型,0为缺省值,表示垂直渐变,1表示水平渐变。如图所示:
注:
1. 在实际的项目中,往往会碰到圆角和渐变的组合,如果使用上面的写法,那么在 ie9 下会有 bug(在 ie9 下背景色不能完全切完),解决方法是SVG。
2. 由于 filter 是 ie 的私有属性,所以我们需要针对 ie9 单独处理滤镜效果,代码如下: 代码如下::root {filter:none;}
总结:
综上所述,线性渐变的兼容写法如下:.gradient{
background: #000000;
background: -moz-linear-gradient(top, #000000 0%, #ffffff 100%);
background: -webkit-gradient(linear, left top, left bottom,
color-stop(0%,#000000),color-stop(100%,#ffffff));
background: -webkit-linear-gradient(top, #000000 0%,#ffffff 100%);
background: -o-linear-gradient(top, #000000 0%,#ffffff 100%);
background: -ms-linear-gradient(top, #000000 0%,#ffffff 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#000000',
endColorstr='#ffffff',GradientType=0 );
background: linear-gradient(to bottom, #000000 0%,#ffffff 100%);
}
:root .gradient{filter:none;
}
更多CSS相关技术文章,请访问CSS3答疑栏目进行学习!