目录

Css3渐变

CSS3渐变

渐变分为线性渐变径向渐变,所谓渐变就是几种颜色之间的平稳过渡。在创建渐变的过程中,可以指定多个中间颜色值,这个值称为色标。每个色标包含一种颜色和一个位置,浏览器从每个色标的颜色淡出到下一个,以创建平滑的渐变。

CSS3渐变可以应用于任何使用背景图片的地方。这意味着在CSS样式中,渐变相当于背景图片,在理论上可在任何使用url() 值的地方采用,比如最常见的background-image、list-style-type以及前面介绍的CSS3的图像边框属性border-image。但直到目前为止,仅在背景图片中得到最完美的支持。

线性渐变

线性渐变,首先需要指定一个渐变的方向、渐变的起始颜色、渐变的结束颜色。具有这三个参数就可以制作一个最简单、最普通的渐变效果。如果你需要制作一个复杂的多色渐变效果,就需要在同一个渐变方向增添多个色标。具备这些渐变参数(至少三个),各浏览器就会绘制与渐变线垂直的颜色结来填充整个容器。浏览器渲染出来的效果就类似于制作软件设计出来的渐变图像,从一种颜色到另一种颜色的平滑淡出,沿所指的线性渐变方向实现颜色渐变效果。

线性渐变的语法和参数

线性渐变的语法相对于其他的CSS3属性的语法而言要复杂的多。早期的语法在各浏览器内核下其语法尽不相同,特别是在Webkit内核之下还分新旧两种版本。接下来我们先从各浏览器下的语法入手,开始介绍CSS3的线性渐变语法。

1、 Webkit引擎的CSS3线性渐变语法与属性参数

Webkit是第一个支持CSS3渐变的浏览器引擎,不过其语法也相对其他浏览器引擎复杂,还分为新旧两个版本。

Webkit引擎老式语法

-webkit-gradien(<type>,<point>[,<radius>]?,<point>[,<radius>]?[,<stop>]*)	

Webkit引擎新式语法

-webkit-linear-gradient([<point>||<angle>,]?<stop>,<stop>[,<stop>]*)

Webkit引擎渐变属性参数

-webkit-gradient是webkit引擎对渐变的实现一共有五个参数。

  1. 第一个参数表示渐变类型(type),可以是线性渐变linear或者径向渐变radial。
  2. 第二个参数和第三个参数,都是一对值,分别表示渐变的起点位置和终点位置。这对值可以用坐标形式表示,也可以用关键值表示,比如left top(左上角)和left bottom(左下角)。
  3. 第四个和第五个参数,分别是两个color-stop函数(色标)。color-stop函数接受两个参数,第一个表示渐变的位置,0表示起点,0.5为中点,1为结束点;第二个表示该点的颜色。

如下图所示:

2、 Gecko引擎的CSS3的线性渐变语法与属性参数

Gecko引擎的浏览器Firefox在3.6版本就开始支持CSS3的线性渐变属性。Gecko引擎与Webkit引擎的新版本渐变设计时用法基本相同,只是使用的私有前缀不同。

Gecko引擎的渐变语法

-moz-linear-gradient([<point>||<angle>,]?<stop>,<stop>[,<stop>]*)

Gecko引擎的渐变属性参数

在Gecko引擎的渐变中共有三个参数

  1. 第一个数数表示线性渐变的方向,例如:top是从上到下、left是从左到右。如果定义成left top,那就是从左上角到右下角。
  2. 第二个和第三个参数分别是起点颜色和终点颜色。你还可以在它们之间插入更多的参数,表示多种颜色的渐变。

如图所示:

3、 Presto引擎的CSS3线性渐变语法与属性参数

Presto引擎的Opera浏览器在11.6版本开始就支持CSS3的线性渐变。在Presto引擎浏览器中CSS3线性渐变的使用语法和Gecko引擎浏览器中的线性渐变的语法非常类似,唯一不同的就是在Presto引擎浏览器中需要使用其自己的私有前缀为“-o-”。

Presto引擎的线性渐变语法

-o-linear-gradient([<point>||<angle>,]?<stop>,<stop>[,<stop>]*)

Presto引擎的线性渐变的属性参数

-o-linear-gradient也具有三个参数

  1. 第一个参数表示线性渐变的方向,top表示从上到下,left表示从左到右,如果定义成left top表示从左上角到右下角。
  2. 第二个和第三个参数分别是起点颜色和结束颜色。还可以在它们之间插入更多的参数,表示多种颜色的渐变。

如图所示:

4、 Trident引擎的CSS3线性渐变语法与属性参数

Trident引擎的浏览器主要有IE,早期版本的IE浏览器是不支持CSS3线性渐变的属性,不过在其IE10开始支持了这个属性。在这里我们主要针对IE10+浏览器的CSS3线性渐变进行简单的介绍。

Trident引擎的CSS3线性渐变语法

-ms-linear-gradient([<point>||<angle>,]?<stop>,<stop>[,<stop>]*)

Trident引擎的CSS3线性渐变属性参数

-ms-linear-gradient属性参数和-moz-linear-gradient以及-o-linear-gradient的属性参数是一样的,这里就不在进行重复性的介绍。

5、 W3C标准线性渐变语法与属性参数

W3C组织于2012年04月发布了CSS3线性渐变的CR版本(候选人推荐版本)。这一次发布的CSS3渐变属性有着很大的变化,使用语法较前面的版本要简单多,容易理解的多。最让大家感到高兴的是,到写本文的时候,所有现代浏览器都支持W3C的标准语法,包括曾经令人讨厌的IE浏览器,也在IE10中支持了标准语法。

W3C标准线性渐变语法

linear-gradient([[<angle> | to <side-or-corner> ],]?<color-stop>[,<color-stop>]+)

W3C标准线性渐变属性参数

W3C标准线性渐性语法包括三个主要属性参数:第一个参数指定了渐变的方向,同时决定了渐变颜色的停止位置。这个参数值可以省略,当省略不写的时候其取值为“to bottom”。在决定渐变的方向主要有两种方法:

  1. <angle>:通过角度来确定渐变的方向。0度表示渐变方向从下向上,90度表示渐变方向从左向右。如果取值为下值,其角度按顺时针方向旋转。
  2. 关键词:通过关键词来确定渐变的方向。比如“to top”、“to right”、“to bottom”和“to left”。这些关键词对应的角度值为“0deg”、“90deg”、“180deg”和“270deg”。除了使用“to top”、“top left”之外,还可以使用“top left”左上角到右下角、“top right”左上角到右下解等。
  3. 第二个和第三个参数,表示颜色的起始点和结束点。大家可以在从中插入更多的颜色值。

线性渐变的基本用法

颜色从上到下:

.box{
		width: 200px;
		height: 200px;
		text-align: center;
		color: #000;
		line-height: 200px;
		border: 1px solid black;
		margin: 20px auto;
}
.toBottom{
		background-image: -webkit-gradient(linear, left top, left bottom, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 0 0, 0 100%, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(top, yellow, blue);
		background-image: -webkit-linear-gradient(270deg, yellow, blue);
		background-image: linear-gradient(to bottom, yellow, blue);
		background-image: linear-gradient(180deg, yellow, blue);
}

颜色从下到上:

.toTop{
		background-image: -webkit-gradient(linear, left bottom, left top, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 0 100%, 0 0, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(bottom, yellow, blue);
		background-image: -webkit-linear-gradient(90deg, yellow, blue);
		background-image: linear-gradient(to top, yellow, blue);
		background-image: linear-gradient(0deg, yellow, blue);
}

颜色从左到右:

.toRight{
		background-image: -webkit-gradient(linear, left top, right top, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 0 0, 100% 0, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(left, yellow, blue);
		background-image: -webkit-linear-gradient(0deg, yellow, blue);
		background-image: -webkit-linear-gradient(360deg, yellow, blue);
		background-image: linear-gradient(to right, yellow, blue);
		background-image: linear-gradient(90deg, yellow, blue);
}

颜色从右到左:

.toLeft{
		background-image: -webkit-gradient(linear, right top, left top, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 100% 0, 0 0, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(right, yellow, blue);
		background-image: -webkit-linear-gradient(180deg, yellow, blue);
		background-image: linear-gradient(to left, yellow, blue);
		background-image: linear-gradient(270deg, yellow, blue);
}

颜色从左下角到右上角:

.toRightTop{
		background-image: -webkit-gradient(linear, left bottom, right top, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 0 100%, 100% 0, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(left bottom, yellow, blue);
		background-image: -webkit-linear-gradient(45deg, yellow, blue);
		background-image: linear-gradient(to right top, yellow, blue);
		background-image: linear-gradient(45deg, yellow, blue);
}

颜色从左上角到右下角:

.toRightBottom{
		background-image: -webkit-gradient(linear, left top, right bottom, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 0 0, 100% 100%, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(left top, yellow, blue);
		background-image: -webkit-linear-gradient(315deg, yellow, blue);
		background-image: linear-gradient(to right bottom, yellow, blue);
		background-image: linear-gradient(135deg, yellow, blue);
}

颜色从右下角到左上角:

.toLeftTop{
		background-image: -webkit-gradient(linear, right bottom, left top, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 100% 100%, 0 0, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(right bottom, yellow, blue);
		background-image: -webkit-linear-gradient(135deg, yellow, blue);
		background-image: linear-gradient(to left top, yellow, blue);
		background-image: linear-gradient(315deg, yellow, blue);
}

颜色从右上角到左下角:

.toLeftBottom{
		background-image: -webkit-gradient(linear, right top, left bottom, from(yellow), to(blue));
		background-image: -webkit-gradient(linear, 100% 0, 0 100%, from(yellow), to(blue));
		background-image: -webkit-linear-gradient(right top, yellow, blue);
		background-image: -webkit-linear-gradient(225deg, yellow, blue);
		background-image: linear-gradient(to left bottom, yellow, blue);
		background-image: linear-gradient(225deg, yellow, blue);
}

更多颜色:

.moreColor{
		background-image: linear-gradient(to right, yellow, blue, red, green);
		width: 300px
}

颜色比例:

.gredientScale{
		background-image: linear-gradient(to right, yellow 10%, blue 30%, red 80%, green 100%);
		width: 300px
}

来源:

http://www.w3cplus.com/css3/new-css3-linear-gradient.html

http://blog.csdn.net/h15882065951/article/details/60139494

http://www.jcodecraeer.com/a/cssjiqiaoyuguifan/2012/0811/341.html

径向渐变

CSS3径向渐变是圆形或椭圆形渐变。颜色不再沿着一条直线轴变化,而是从一个起点朝所有方向混合。但相对线性渐变要比径向渐变复杂的多。

.radialWebkitGradient{
		background-image: -webkit-gradient(radial, center center,0,center center, 143, from(yellow), color-stop(33%,blue), color-stop(65%,red), to(green));
}
.radialGradient{
		background-image: -webkit-radial-gradient( yellow, blue, red, green);
		background-image: radial-gradient( yellow, blue, red, green);
}

如果对径向渐变有兴趣,可以查看下面的文档:

http://www.w3cplus.com/css3/new-css3-radial-gradient.html

Loading Disqus comments...