元素的渐变

2023-10-16 20:55:01 浏览数 (2)

一、渐变的概念

渐变就是多种颜色平缓变化的一种显示效果

渐变的主要因素是色标。色标是一种颜色及其出现位置的组合。一个渐变是由多个色标组成(至少两个)。

渐变种类:线性渐变、径向渐变、重复渐变

1、线性渐变

线性渐变:以直线的方向来填充渐变色,如下图

2、径向渐变:指以圆形的方式来填充渐变色。填充方向以圆心为中心,延半径向外渐变

3、重复渐变

将线性渐变或径向渐变,重复几次实现渐变填充

二、线性渐变

1、基础线性渐变:需要设置两个或两个以上的颜色,颜色之间使用“,”分隔,颜色会平均分配,根据设置颜色的顺序进行渐变

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 300px;
            height: 300px;
            background: linear-gradient(red, black);
        }
    </style>
</head>
<body>
    <div class="box"></div>
</body>
</html>

效果

上述的例子是基础线性渐变的例子,其实就是进阶渐变的默认模式,设置两个颜色,默认从起点色标渐变到终点色标

2、进阶线性渐变

我们可以通过进阶线性渐变来更加细粒度的控制渐变,格式如下

代码语言:javascript复制
background: linear-gradient(color1 percent/pixel,color2 percent/pixel);

先修改background属性如下

代码语言:javascript复制
background: linear-gradient(red 70%, black 100%)

效果图

可以发现从0~70%都是纯色的红色,从70%到100%是红色到黑色的渐变

接下来把background设置成如下值

代码语言:javascript复制
background: linear-gradient(red 70%, black 70%);

效果

linear-gradient(color1 degree1, color2 degree2)

对上述的参数进行下解释

color1:起点色标值

degree1:从0%到degree1的部分都用color1填充,取值可以是百分比或具体的像素值

color2:结束色标值

degree2:从degree2到100%的部分都用color2填充,跟color1没有有重叠的部分进行渐变,也就是degree1到degree2部分进行渐变,取值可以是百分比或具体的像素值

例如:background: linear-gradient(red 70%, black 100%);表示从070%是红色,从100%开始是黑色,从700%是红到黑的渐变色

3、设置渐变方向

另外还可以设置线性渐变方向,默认从上到下,设置参数在起点颜色前面传递参数

代码语言:javascript复制
background: line-gradient(to left top, red 150px, black 300px);

上述的css属性会设置一个从右下角到左上角的线性渐变,颜色从红到黑0150px是纯红色,150px300px是红色到黑色的渐变色,从300px到最后是纯黑色

也可以通过第一个参数设置角度,同样可以实现渐变方向,顺时针为正数,逆时针为负数

代码语言:javascript复制
background: line-gradient(45deg, red 150px, black 300px);

上述属性设置是设置一个顺时针旋转45度后的线性渐变效果,效果如下

4、设置多个颜色

代码语言:javascript复制
background: linear-gradient(color1 percent/pixel,color2 percent/pixel,color3 percent/pixel,...);

通过设置线性渐变可以实现一些特殊的效果,比如信封的边框效果

html代码

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 500px;
            height: 500px;
            border: 10px solid transparent;
            background: linear-gradient(#fff,#fff) padding-box,
            repeating-linear-gradient(
                -45deg,
                red 0, 
                red 10px,
                transparent 10px,
                transparent 20px,
                blue 20px,
                blue 30px,
                transparent 30px,
                transparent 40px);
        }
    </style>
</head>
<body>
    <div class="box">

    </div>
</body>
</html>

效果

二、径向渐变

径向渐变-由他们的中心定义,同样是修改background-image属性,只不过值为rradial-gradient()命令。

radial-grident()命令的语法格式如下:radial-gradient([半径长 at 圆心位置], 色标1, 色标2, …)。

其中,半径长是一个数值,单位px,表示渐变扩散的范围大小。位置,表示渐变中心点的坐标

基础径向渐变:需设置两个及两个以上的颜色,颜色之间用","间隔,颜色会平均分配,根据设置颜色的顺序,进行渐变

下面通过例子来了解一下

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box{
            width: 300px;
            height: 300px;
            background-image: radial-gradient(red, black);
        }
    </style>
</head>
<body>
    <div class="box">
    </div>
</body>
</html>

效果

我们可以看到默认是以元素的中心点为圆心,元素宽的一半为半径

接下来我们调整一下参数来看看显示效果有什么变化

调整圆心点

代码语言:javascript复制
background-image: radial-gradient(150px at top left, red, black);

效果

半径长还可以设置一些常量:closest-side/farthest-side/closest-corner/farthest-corner

closest-side:半径长度为从圆心到离圆心最近的边

farthest-size:半径长度为从圆心到离圆心最远的边

closest-corner:半径长度为从圆心到离圆心最近的角

farthest-corner:半径长度为从圆心到离圆心最远的角

我们可以通过例子加深一下印象

代码语言:javascript复制
background-image: radial-gradient(closest-side at 60% 30%, red, black);

效果

也可以给径向渐变设置多种颜色,例如

代码语言:javascript复制
background-image: radial-gradient(400px at top left, blue 0%, yellow 50%, red 100%);

效果

三、应用场景

这种功能的使用场景我个人感觉实际使用的地方比较少,大家有个认识,后续如果有需要的时候再回来查看。

0 人点赞