本文最后更新于:2024-11-02T17:08:04+08:00
前言
本文收录于CSS系列文章中,欢迎阅读指正
接上篇文章,本文继续分享CSS函数中的渐变函数
基本概念
线性渐变,linear-gradient()
创建由两个或更多颜色组成的直线渐变效果。颜色沿一条直线平滑过渡,可以指定渐变的方向(如角度,左右等)。
径向渐变,radial-gradient()
创建由两个或更多颜色组成的径向渐变效果。颜色从一个点向外圆形扩散,可以设置不同的形状和大小。
圆锥渐变,conic-gradient()
色彩沿圆锥形平滑过渡,通常用于创建像饼图这样的效果,角度是从圆心开始计算的。
重复线性渐变,repeating-linear-gradient()
是linear-gradient()的拓展,渐变是重复的,可以设置渐变的大小和重复的间隔。
重复径向渐变,repeating-radial-gradient()
是radial-gradient()的拓展,渐变是重复的,同样可以设置渐变的大小和重复的间隔。
重复圆锥渐变,repeating-conic-gradient()
是 conic-gradient() 的重复版本,可以用来创建更复杂的角度重复模式。
使用一个例子来展示一下上述渐变的基本用法
参数详解
linear-gradient
基本用法
线性渐变默认方向是从上到下,至少传入两种颜色,参数可以是关键字、hex值、rgb()、rgba()、hsl()、hsla()等
位置
线性渐变的第一个参数支持传入,表示渐变线的起始点位置;可以指定单个方向,如:to top、to bottom、to left 和 to right,或者一个指定水平位置(left 或 right),另一个指定竖直位置(top 或 bottom),如:toleft top、tobottom right等
角度
和方向参数一样,线性渐变支持使用角度“>参数,表示渐变线的方向的角度。上述的to top、to bottom、to left 和 to right 分别等价于 0deg、180deg、270deg 和 90deg
色标
色标指的是渐变色带中特定颜色的位置。每个颜色可以跟一个位置值(百分比或具体长度),表示颜色应开始过渡的点。语法是linear-gradient( |)
上述代码表示红色的色标在渐变轴线的位置是根据窗口判断的,在8vw位置,绿色在高度85%的位置,这之间的颜色会平滑过渡。
代码中的渐变色阶会根据窗口大小改变位置
插值
默认情况下,渐变会平滑地从一种颜色过渡到另一种颜色。那么在哪一个位置开始过渡就由插值决定,它定义了渐变色应在两个色标之间的哪个点到达颜色过渡的中点。和色标不同,色标是指颜色占比,而插值是渐变的位置。语法是在两个颜色直接输入对应的长度,如:linear-gradient(, |,)
硬线
硬线可以使渐变中两种颜色之间没有平滑过渡,而是有一个明确的颜色界限。通过设置连续两个颜色停靠点到相同位置来实现
叠加
在一个线性渐变中,可以叠加多个颜色。每个颜色可以单独指定位置,这意味着可以控制颜色过渡的开始和结束位置。将颜色设置成透明或者设置透明度可以显示多层渐变
radial-gradient
基本用法
径向渐变的颜色是以圆形或椭圆形方式向外过渡,至少传入两种颜色,参数同线性渐变
位置
与线性渐变相似,可以使用关键字、百分比或者绝对长度、长度和百分比值,语法参照position写法。
关键字用法:关键字用法通常使用at关键字后跟一个点的坐标来设置渐变线的中心点的位置,其中上(top)、右(right)、下(bottom)、左(left)、中(center)代表元素盒子的边缘或两个边缘之间的中心线
长度值:使用css长度表示位置,第一个值是水平位置,第二个值是垂直位置
- 组合关键字和长度值:使用关键字和长度值来指定渐变的位置,使用at 位置长度来表示对应的位置
形状
渐变的结束形状可以通过参数改变。值可以是circle(圆形,渐变的形状是一个半径不变的正圆)或ellipse(椭圆,渐变形状是轴对称椭圆),默认椭圆
大小
渐变的大小由关键词(closest-side(最近的边)、farthest-side(最远的边)、closest-corner(最近的角)或farthest-corner(最远的角))或长度值(%,px,vw等)定义
关键字
closest-side:渐变结束形状如果是圆形,与容器距离渐变中心点最近的一边相切,如果是椭圆,则与距离渐变中心点最近的垂直和水平边相切。
closest-corner:渐变结束形状与容器距离渐变中心点最近的一个角相交。
farthest-side:类似于closest-side,但是结束形状与容器距离渐变中心点最远的一边(或最远的垂直和水平边)相切。
farthest-corner:默认值,渐变的结束形状与容器距离渐变中心点最远的一个角相交。
- 长度值
长度尺寸参数定义了渐变中心到渐变边缘的距离,这个距离就是渐变的半径,不足部分会使用最外层填充,相对的,超出部分使用内部颜色的填充。
色标,插值,硬线和叠加
同线性渐变,下面使用径向渐变实现一个简单的调色卡
conic-gradient
基本用法
conic渐变是创建一个角度渐变,通常被理解为锥形渐变。这种渐变在一个圆形的轨道上形成,与圆的中心点为中心,围绕中心点360度旋转。
角度
与线性渐变角度参数一样,只不过锥形渐变需要在from关键字之后,以角度作为其值,定义顺时针方向的渐变旋转。参数参照- CSS:层叠样式表 | MDN”> - CSS:层叠样式表 | MDN对角度参数的具体用法。
deg角度。一个完整的圆是360deg。例:0deg,90deg,14.23deg
上述代码表示在45度起点,在45度的基础上再转180度到终点
grad百分度。一个完整的圆是400grad。例:0grad,100grad,38.8grad
效果同上
rad弧度。一个完整的圆是2π弧度,约等于6.2832rad。1rad是180/π度。例:0rad,1.0708rad,6.2832rad
效果同上(有误差)
turn圈数。一个完整的圆是1turn。例:0turn,0.25turn,1.2turn
效果同上
位置
同径向渐变
色标,插值,硬线和叠加
由于锥形渐变没有长度的概念(除了中心点的位置需要用到长度度量),它只使用角度来表示渐变程度,所以色标,插值,硬线和叠加的基本使用单位也是上文提到的角度概念。
色标
*
插值
*
硬线
*
叠加
repeating-***-gradient
repeating-***-gradient是创建重复的渐变,也就是将一个渐变样式重复填满整个元素。
重复渐变的使用方式与普通渐变的色标相同,只不过是使用周期重复的渐变将默认的颜色覆盖了,怎么理解这句话?
打个比方,我们使用线性渐变实现一个10%颜色的色标效果:
上述代码中的10%只是控制了黑色什么时候开始,并没有控制结束,于是默认给渐变后面的颜色加上了黑色,重复渐变就是将这个默认的未指定的颜色修改成周期重复的渐变。可以参考背景图片的repeat属性来理解
下面我们使用这个重复渐变实现一个百叶窗,只需在上述代码中增加repeating-前缀即可
重复的径向渐变实现一个飞镖靶子
重复的锥形渐变实现一个抽奖圆盘
总结
本文主要针对CSS渐变函数做了一个深入的介绍,其中渐变函数包含线性渐变linear-gradient()、径向渐变radial-gradient()、圆锥渐变conic-gradient()、重复线性渐变repeating-linear-gradient()、重复径向渐变repeating-radial-gradient()、重复圆锥渐变repeating-conic-gradient()这六类。这几种函数参数的用法也是各有千秋,通过调整角度,位置,色标等属性来实现各类渐变效果,希望文章能帮到你。
文章的最后,感谢你看到了这里,如果觉得本篇或者这个系列写的不错,还望三连支持一下,你的支持就是我创作的动力,谢谢!
相关代码
myCode: 基于js的一些小案例或者项目 - Gitee.com
参考
使用 CSS 渐变 - CSS:层叠样式表 | MDN
linear-gradient()
radial-gradient()
conic-gradient()
repeating-linear-gradient()
repeating-radial-gradient()
repeating-conic-gradient()(en-US)