在网页设计中,有时候会需要用到渐变效果,渐变可以创建出类似于彩虹的视觉图案效果,在没有CSS3之前,为了显示一个渐变需要专门制作一个图片,这种不法不但不灵活还增加请求数,而CSS3可以轻松实现网页渐变效果,用于做渐变背景、渐变导航、配合CSS3动画做特效等。在CSS3中,Gradient(渐变)分为linear-gradient(线性渐变)和radial-gradient(径向渐变)。CSS颜色线性渐变的语法在各种浏览器里的实现稍微有些不同,但最后是统一标准的:
CSS颜色线性渐变的语法:
- background-image: linear-gradient(<point> || <angle>,]? <stop>, <stop> [, <stop>]*)
第一个参数是渐变起始点或角。第二个参数是一种颜色停止点(color stops)。至少需要两种颜色(起点和终点),你可以添加任意种颜色来增加颜色渐变的丰富程度。对颜色停止点的定义可以是一种颜色,或一种颜色加一个百分比:
- /* color-stop(percentage/amount, color) */
- color-stop(0.20, red)
因为CSS渐变色(Gradients)技术是CSS3里比较新的技术,属于高级的CSS功能,于是每种浏览器对这种技术的实现都添加了一些自己的特色。例如以WebKIt为渲染引擎的谷歌浏览器,就对它实现了多种语法。下面的这段代码基本包括了所有自顶向下颜色渐变的所有情况:
- #example1 {
- /* 底色 */
- background-color: #063053;
- /* chrome 2+, safari 4+; multiple color stops */
- background-image:-webkit-gradient(linear, left bottombottom, left top, color-stop(0.32, #063053), color-stop(0.66, #395873), color-stop(0.83, #5c7c99));
- /* chrome 10+, safari 5.1+ */
- background-image: -webkit-linear-gradient(#063053, #395873, #5c7c99);
- /* firefox; multiple color stops */
- background-image: -moz-linear-gradient(top,#063053, #395873, #5c7c99);
- /* ie 6+ */
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');
- /* ie8 + */
- -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873')";
- /* ie10 */
- background-image: -ms-linear-gradient(#063053, #395873, #5c7c99);
- /* opera 11.1 */
- background-image: -o-linear-gradient(#063053, #395873, #5c7c99);
- /* 标准写法 */
- background-image: linear-gradient(#063053, #395873, #5c7c99);
注意,我们首先设定了一个背景色。这个颜色是在万一用户使用的浏览器不支持CSS渐变色(Gradients)技术时使用的颜色。CSS渐变色(Gradients)技术里还支持带有角度的渐变方向,而不仅仅只有直上直下或直左直右。我们可以用下面的语法实现它:
- #example2 {
- /* fallback */
- background-color:#063053;
- /* chrome 2+, safari 4+; multiple color stops */
- background-image:-webkit-gradient(linear, left bottombottom, rightright top, color-stop(0.32, #063053), color-stop(0.66, #395873), color-stop(0.83, #5c7c99));
- /* chrome 10+, safari 5.1+ */
- background-image:-webkit-linear-gradient(45deg, #063053, #395873, #5c7c99);
- /* firefox; multiple color stops */
- background-image:-moz-linear-gradient(45deg, #063053, #395873, #5c7c99);
- /* ie10 */
- background-image: -ms-linear-gradient(45deg, #063053 0%, #395873 100%);
- /* opera 11.1 */
- background-image: -o-linear-gradient(45deg, #063053, #395873);
- /* The "standard" */
- background-image: linear-gradient(45deg, #063053, #395873);
- }
我们可以做的更复杂些….一个色彩缤纷的CSS颜色渐变?下面我们来做一个彩虹:
- /* example 3 - linear rainbow */
- #example3 {
- /* fallback */
- background-color:#063053;
- /* chrome 2+, safari 4+; multiple color stops */
- background-image:-webkit-gradient(linear, left bottombottom, left top, color-stop(0.20, red), color-stop(0.40, green), color-stop(0.6, blue), color-stop(0.8, purple), color-stop(1, orange));
- /* chrome 10+, safari 5.1+ */
- background-image:-webkit-linear-gradient(red, green, blue, purple, orange);
- /* firefox; multiple color stops */
- background-image:-moz-linear-gradient(top, red, green, blue, purple, orange);
- /* ie10 */
- background-image: -ms-linear-gradient(red, green, blue, purple, orange);
- /* opera 11.1 */
- background-image: -o-linear-gradient(red, green, blue, purple, orange);
- /* The "standard" */
- background-image: linear-gradient(red, green, blue, purple, orange);
- }
关于IE对CSS颜色渐变技术的支持做一些说明:在早期IE是使用filter和-ms-filter语法实现渐变色,而最新版的IE里改为了-ms-linear-gradient语法。我们可以使用CSS里条件判断语句来解决这个问题:
- <!--[if lt IE 10]>
- <style>
- .gradientElement {
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');
- -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873')";
- }
- </style>
- <![endif]-->
上篇是关于CSS3颜色渐变语法的一些简单总结,下篇将分开详细为大家进行分享CSS颜色渐变的使用及相关案例。敬请关注。