一、CSS3渐变简介
CSS3渐变是什么?渐变是两种或多种颜色之间的平滑过渡。CSS3 渐变可以让你在两个或多个指定的颜色之间显示平稳的过渡。
CSS3 定义了两种类型的渐变:
- 线性渐变(Linear Gradients)- 向下/向上/向左/向右/对角方向
- 径向渐变(Radial Gradients)- 由它们的中心定义
二、什么是色标
在创建渐变的过程中,可以指定多个中间颜色值,这个值称为色标。每个色标包含一种颜色和一个位置,浏览器从每个色标的颜色淡出到下一个,以创建平滑的渐变。
三、CSS3线性渐变
在线性渐变过程中,颜色沿着一条直线过度:从左侧到右侧,从右侧到左侧,从顶部到底部,从底部到顶部或沿任意轴。
CSS3制作渐变效果,首先指定一个渐变的方向、起始颜色、结束颜色。具有这三个参数就可以制作一个简单、普通的渐变效果。
如果制作一个复杂的渐变效果,就需要在同一个渐变方向增添多个色标。具备这些渐变参数(至少三个),各浏览器就会绘制与渐变线垂直的颜色结来填充整个容器。
为了创建一个线性渐变,你必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以设置一个起点和一个方向(或一个角度)。
CSS3线性渐变语法及参数
线性渐变 - 从上到下(默认情况下)
语法:background: linear-gradient(direction, color-stop1, color-stop2, ...);
示例1:预定义方向
示例图:
示例代码:
CSS3线性渐变
从上到下(默认情况下)
从左到右
对角
示例2:使用角度
如果你想要在渐变的方向上做更多的控制,你可以定义一个角度,而不用预定义方向(to bottom、to top、to right、to left、to bottom right,等等)。
角度是指水平线和渐变线之间的角度,逆时针方向计算。换句话说,0deg 将创建一个从下到上的渐变,90deg 将创建一个从左到右的渐变。
语法:background: linear-gradient(angle, color-stop1, color-stop2);
示例图:
示例代码:
CSS3线性渐变
0 deg
90 deg
180 deg
-90 deg
示例3:使用多个颜色结点
示例图1:
示例代码1:
CSS3线性渐变
使用多颜色结点
示例图2:
示例代码2:
CSS3线性渐变
3 个颜色结点(均匀分布)
3 个颜色结点(不均匀分布)
示例4:使用透明度(transparent)
CSS3 渐变也支持透明度(transparent),可用于创建减弱变淡的效果。
为了添加透明度,我们使用 rgba() 函数来定义颜色结点。rgba() 函数中的最后一个参数可以是从 0 到 1 的值,它定义了颜色的透明度:0 表示完全透明,1 表示完全不透明。
示例图:
示例代码:
CSS3线性渐变
线性渐变 - 透明度
四、CSS3径向渐变
CSS3径向渐变是圆形或椭圆形渐变。颜色不再沿着一条直线轴变化,而是从一个起点朝所有方向混合。径向渐变由它的中心定义。
为了创建一个径向渐变,你也必须至少定义两种颜色结点。颜色结点即你想要呈现平稳过渡的颜色。同时,你也可以指定渐变的中心、形状(圆形或椭圆形)、大小。默认情况下,渐变的中心是 center(表示在中心点),渐变的形状是 ellipse(表示椭圆形),渐变的大小是 farthest-corner(表示到最远的角落)。
CSS3径向渐变的语法及参数
语法:background: radial-gradient(center, shape size, start-color, ..., last-color);
渐变的中心位置取值:
:用长度值指定径向渐变圆心的横坐标或纵坐标,可以为负值 :用百分比指定径向渐变圆心的横坐标或纵坐标,可以为负值 - top:设置顶部为径向渐变圆心的纵坐标值
- right:设置右边为径向渐变圆心的横坐标值
- bottom:设置底部为径向渐变圆心的纵坐标值
- left:设置左边为径向渐变圆心的横坐标值
- center:设置中间为径向渐变圆心的横坐标值或纵坐标值(默认值)
定义径向渐变的形状
- circle:指定圆形的径向渐变
- ellipse:指定椭圆形的径向渐变
指定径向渐变的形状大小
- closest-side:指定径向渐变的半径长度为从圆心到离圆心最近的边
- closest-corder:指定径向渐变的半径长度为从圆心到离圆心最近的角
- farthest-side:指定径向渐变的半径长度为从圆心到离圆心最远的边
- farthest-corner:指定径向渐变的半径长度为从圆心到离圆心最远的角
示例图1:
示例代码1:
CSS3线性渐变
颜色结点均匀分布
颜色结点不均匀分布
示例图2:
示例代码2:
CSS3线性渐变
椭圆形 Ellipse
圆形 Circle
示例图3:
示例代码3:
CSS3线性渐变
closest-side
closest-corner
farthest-side
farthest-corner
五、CSS3重复渐变
CSS3通过repeating-linear-gradient和repeating-radial-gradient可以直接实现重复的渐变效果。
示例效果图:
示例代码:
CSS3线性渐变
重复线性渐变
重复径向渐变
示例效果:笔记本效果
示例代码:
CSS3线性渐变
六、综合案例
使用CSS3渐变制作纹理效果。
示例图:
示例代码:
CSS3渐变纹理效果