渐变可以创建类似于彩虹的效果,低版本的浏览器不得不使开发者用图片来实现,CSS3 将会轻松实现网页渐变效果,CSS 渐变新类型的 <image> 的 CSS3 图片模块添加。使用 CSS 渐变可以显示两个或多个指定的颜色之间的平滑过渡。
这可以让您避免使用这些效果的图像,从而减少下载时间和带宽使用率。此外因为是由浏览器产生的效果,渐变对象更好看放大时,你可以调整你的布局更加灵活,浏览器都支持两种类型的渐变:线性,线性渐变功能定义,径向,定义为径向渐变。
要创建一个线性渐变,设置一个起点,沿着它的方向(角度)渐变效果。你还可以定义颜色停止。颜色站你想要的颜色的 Gecko 渲染之间的平稳过渡,你必须指定其中至少两个,但可以指定创建更复杂的渐变效果。
这里开始中心(水平)和顶部(垂直)的线性渐变,并开始蓝色,白色过渡。
- background: -prefix-linear-gradient(top, blue, white);
- background: linear-gradient(to bottom, blue, white);
改变运行的方向从左至右:
- background: -prefix-linear-gradient(left, blue, white);
- background: linear-gradient(to right, blue, white);
可以使渐变对角线的指定水平和垂直起始位置运行。例如:
- background: -prefix-linear-gradient(left top, blue, white);
- background: linear-gradient(to bottom right, blue, white);
如果你不指定一个角度,一种是自动确定的,根据给定的方向上。如果您想更多的控制权的梯度方向,你可以专门设置的角度。例如下面的两个梯度,第一个朝着正确的方向,而第二个有70度的角度。
一个在右边使用CSS是这样的:
- background: linear-gradient(70deg, black, white);
被指定为一个水平线之间的角度和梯度线的角度,会逆时针旋转。换句话说,0度创建一个从底部到顶部的垂直梯度,而90度产生一个左到右的水平梯度:
- background: linear-gradient(<angle>, red, white);
注:一些浏览器实现,前缀,旧草案的规范,其中0度 指向右边,而不是顶端。注意前缀和标准线性梯度混合时的角度值。一个简单的公式要记住的是90 - X = Y,其中x是标准用法,y是非标准,供应商前缀的用法。
颜色停止点沿着渐变线,在该位置,将有一个特定的颜色。可以被指定为线的长度的百分比,或作为绝对长度的位置。您可以指定多种颜色停止,只要你喜欢,为了达到预期的效果。
如果你指定的位置作为一个百分比,0%代表的出发点,而100%表示终点,但是,您可以使用该范围以外的值,如果需要得到你想要的效果。
例如三种颜色,这个例子是指定三种颜色,并且颜色的作用范围不是均等的:
- background: -prefix-linear-gradient(top, blue, white 80%, orange);
- background: linear-gradient(to bottom, blue, white 80%, orange);
需要注意的是第一个和最后的颜色停止不指定一个位置,正因为如此,分别为0%和100%的值被自动分配。中间色站指定的80%的位置,把它朝下方的方式。
例如间隔均匀的色站,下面是一个例子,使用各种各样的颜色,均匀间隔:
- background: -prefix-linear-gradient(left, red, orange, yellow, green, blue);
- background: linear-gradient(to right, red, orange, yellow, green, blue);
请注意,彩色没有指定的位置时,自动间隔均匀。
渐变支持透明度。例如,可以使用当前堆叠多个背景时,创建背景图像上的衰落的影响。例如下面的显示效果:
- background: -prefix-linear-gradient(left, rgba(255,255,255,0), rgba(255,255,255,1)), url(http://foo.com/image.jpg);
- background: linear-gradient(to right, rgba(255,255,255,0), rgba(255,255,255,1)), url(http://foo.com/image.jpg);
背景堆叠与第一个指定的背景之上,每一个连续的背景越远。通过堆叠背景这样,您可以创建非常有创意的效果。
指定径向渐变的使用径向梯度 函数符号。语法是类似于线性渐变,除了可以指定渐变的结束形状(是否应该是圆形或椭圆形),以及它的大小。默认情况下,结束形状是一个椭圆,按相同比例比容器的盒子。
您可以指定颜色停止以同样的方式为线性渐变。渐变线延伸在各个方向上从起始位置,例如间隔均匀的色站,默认情况下,线性渐变,间隔均匀的色站:
- background: radial-gradient(red, yellow, rgb(30, 144, 255));
例如明确间隔的颜色停止,在这里,我们指定的颜色站的具体位置:
- background: radial-gradient(red 5%, yellow 25%, #1E90FF 50%);
这是径向渐变从线性梯度不同的领域之一。你可以提供一个大小定义的大小的圆形或椭圆形的点的值,该值指定。这说明具体的大小常数。
例最近端为椭圆,此椭圆使用的最接近端的大小的值,表示从起点(中心)的距离的大小被设置为最接近的侧封闭框。
- background: radial-gradient(ellipse closest-side, red, yellow 10%, #1E90FF 50%, white);
例如最远的角落省略号,这个例子是前一个相似,不同的是它的大小被指定为最远的角,从起点的距离,从起点封闭箱最远的角落的梯度的大小设置。
- background: radial-gradient(ellipse farthest-corner, red, yellow 10%, #1E90FF 50%, white);
例最近端为界,此示例中使用最接近端,它决定圆的大小的起点(中心)之间的距离最接近的侧。
- background: radial-gradient(circle closest-side, red, yellow 10%, #1E90FF 50%, white);
在这里,圆的半径是框的高度的一半,因为从开始点的顶部和底部边缘的距离相等,接近的左边缘和右边缘。
linear-gradient 和 radial-gradient 属性不支持自动重复的色标。然而 repeating-linear-gradient 和 repeating-radial-gradient 属性都可以提供这种功能。
例如重复线性渐变,这个例子使用 repeating-linear-gradient 创建一个渐变:
- background: repeating-linear-gradient(-45deg, red, red 5px, white 5px, white 10px);
另一个例子,使用重复线性梯度。
- background-color: #000;
- background-image: repeating-linear-gradient(90deg, transparent, transparent 50px,
- rgba(255, 127, 0, 0.25) 50px, rgba(255, 127, 0, 0.25) 56px, transparent 56px, transparent 63px,
- rgba(255, 127, 0, 0.25) 63px, rgba(255, 127, 0, 0.25) 69px, transparent 69px, transparent 116px,
- rgba(255, 206, 0, 0.25) 116px, rgba(255, 206, 0, 0.25) 166px),
- repeating-linear-gradient(0deg, transparent, transparent 50px, rgba(255, 127, 0, 0.25) 50px,
- rgba(255, 127, 0, 0.25) 56px, transparent 56px, transparent 63px, rgba(255, 127, 0, 0.25) 63px,
- rgba(255, 127, 0, 0.25) 69px, transparent 69px, transparent 116px, rgba(255, 206, 0, 0.25) 116px,
- rgba(255, 206, 0, 0.25) 166px),
- repeating-linear-gradient(-45deg, transparent, transparent 5px, rgba(143, 77, 63, 0.25) 5px,
- rgba(143, 77, 63, 0.25) 10px),
- repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(143, 77, 63, 0.25) 5px,
- rgba(143, 77, 63, 0.25) 10px);
例如重复径向渐变,这个例子使用重复径向梯度创建一个渐变:
- background: repeating-radial-gradient(black, black 5px, white 5px, white 10px);