CSS3新特性:渐变(Gradients)
CSS3 渐变(gradients)可以让你在两个或多个指定的颜色之间显示平稳的过渡。
以前,你必须使用图像来实现这些效果。但是,通过使用 CSS3
渐变(gradients),你可以减少下载的事件和宽带的使用。此外,渐变效果的元素在放大时看起来效果更好,因为渐变(gradient)是由浏览器生成的。
CSS3 定义了两种类型的渐变(gradients):
- 线性渐变(Linear Gradients)
- 向下/向上/向左/向右/对角方向
- 径向渐变(Radial Gradients)
- 由它们的中心定义
线性渐变
- <angle>
-
角度(Degree),单位deg(读作‘度’),一个圆共360度,90deg = 100grad = 0.25turn ≈ 1.570796326794897rad
在transform中rotate的deg表示顺指针旋转角度,而渐变中的deg指水平线和渐变线之间的角度,逆时针方向计算。换句话说,0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。 - <side-or-corner>
-
to [left | right] || [top | bottom]
表示以下组合left, right, top, bottom, left top, left bottom, right top, right bottom.
注意:如果webkit浏览器不加to,会现实异常 - <color-stop>
-
<color> [ <percentage> | <length> ]
颜色值+空格+百分比或长度值。例如:red 100px。表示渐变的长度
使用方向控制
线性渐变——从上到下(默认)
#exp1 {
background-image: linear-gradient(red, yellow);
}
线性渐变——从左到右
#exp2 {
background-image: linear-gradient(to right, red, yellow);
}
线性渐变——从左上到右下(默认)
#exp3 {
background-image: linear-gradient(to bottom right, red, yellow);
}
使用角度控制
线性渐变——通过控制角度,实现从左上到右下
#exp4 {
background-image: linear-gradient(135deg, red, yellow);
}
可见光谱
#exp5 {
height: 100px;
width: 100%;
background-image: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);
}
重复的线性渐变
#exp6 {
background-image: repeating-linear-gradient(red, yellow 10%);
}
径向渐变
- <shape>
-
主要用来定义径向渐变的形状。其主要包括两个值“circle”和“ellipse”
- circle
- 如果<size>和<length>大小相等,那么径向渐变是一个圆形,也就是用来指定圆形的径向渐变
- ellipse
- 如果<size>和<length>大小不相等,那么径向渐变是一个椭圆形,也就是用来指定椭圆形的径向渐变。
- <size>
-
主要用来确定径向渐变的结束形状大小。如果省略了,其默认值为“farthest-corner”。可以给其显式的设置一些关键词
- closest-side
- 指定径向渐变的半径长度为从圆心到离圆心最近的边
- closest-corner
- 指定径向渐变的半径长度为从圆心到离圆心最近的角
- farthest-side
- 指定径向渐变的半径长度为从圆心到离圆心最远的边
- farthest-corner
- 指定径向渐变的半径长度为从圆心到离圆心最远的角
- <position>
-
主要用来定义径向渐变的圆心位置(浏览器的坐标定义方式,都是以左上角为圆点,横坐标纵坐标分别向右向下递增)。此值类似于CSS中background-position属性,用于确定元素渐变的中心位置。如果这个参数省略了,其默认值为“center”。
- <length>
- 用长度值指定径向渐变圆心的横坐标或纵坐标。可以为负值。
- <percentage>
- 用百分比指定径向渐变圆心的横坐标或纵坐标。可以为负值。
- left
- 设置左边为径向渐变圆心的横坐标值。
- center
- 设置中间为径向渐变圆心的横坐标值或纵坐标。
- right
- 设置右边为径向渐变圆心的横坐标值。
- top
- 设置顶部为径向渐变圆心的纵标值。
- bottom
- 设置底部为径向渐变圆心的纵标值。
实例1——最简单参数,长宽半径根据容器变化
#exp7 {
background-image: radial-gradient(red, yellow);
}
实例2——指定形状
#exp8 {
background-image: radial-gradient(circle, red, yellow);
}
实例3——用数值代替circle
#exp9 {
background-image: radial-gradient(50px, red, yellow);
}
实例4——增加position
#exp10 {
background-image: radial-gradient(50px at 50px 50px, red, yellow);
}
实例5——展示5种预定义位置
left, right, top, bottom, center
实力6——展示4中预定义大小
#exp16 {
background-image: radial-gradient(closest-side at 150px 50px, red, yellow);
}
#exp17 {
background-image: radial-gradient(closest-corner at 150px 50px, red, yellow);
}
#exp18 {
background-image: radial-gradient(farthest-side at 150px 50px, red, yellow);
}
#exp19 {
background-image: radial-gradient(farthest-corner at 150px 50px, red, yellow);
}
** 注意,size是有两个值的,上例中都用了一个值,所以长宽半径都遵循相同的规律
重复径向渐变
#exp20 {
height: 200px;
width: 200px;
border-radius: 50%;
background-image: repeating-radial-gradient(red, yellow 20px);
}