banner
banner
banner
NEWS LETTER

CSS-渐变篇

Scroll down

前提

  • 属于background的背景方式之一
  • 语法:background: 渐变函数;
  • 渐变可以使用关键字作为起始位置,但在小程序中关键字无效
    渐变

线性渐变linear-gradient()

  • 场景:条纹背景
  • 语法:linear-gradient(角度,起始颜色, 终止颜色)
  • 多个渐变,可以用百分比,确定每个颜色从那个位置开始过渡
    • 如:linear-gradient(red 0%, orange 25%, blue 50%, black 90%);
  • 如果每个颜色都有起始和结束,则形成条纹(色块分明),起始0%和结束100%可以忽略不写
    • 如:linear-gradient(to right, red 20%, orange 20% 40%, yellow 40% 60%, green 60% 80%, blue 80%);

重复线性渐变repeating-linear-gradient()

  • 语法跟linear-gradient()一样,但是最后一个颜色要给一个长度,如果没有长度,默认长度0-100%,不会重复渐变。
  • 只要末尾有长度,就会无限循环直到容器被填满
  • 只有末尾有值:(0%-最后一个颜色的值)的重复渐变
    • 示例:repeating-linear-gradient(45deg, white, grey 25%);
  • 每个颜色都带值: (第一个颜色的值-最后一个颜色的值)的重复渐变
    • 示例:repeating-linear-gradient(45deg, white 10%, red 15%, grey 20%); 代表每10-20%是一个渐变轮回
  • 每个颜色都带区间值,条纹:(第一个颜色的最小区间值-最后一个颜色的最大区间值)的重复渐变
    • 示例:repeating-linear-gradient(45deg, grey -10% 0%, white 0% 5%, green 5% 10%); 代表每-10%-10%是一个渐变轮回,且色块分明,没有渐变过渡效果

径向渐变radial-gradient() - 由原点一圈一圈往外形成

  • 语法:radial-gradient(渐变位置, 渐变结束位置, 中间的颜色, 结束的颜色)
  • 渐变位置:有circle 和 ellipse两种形状
    • 关键字:
      • 如:radial-gradient(circle at center, red, blue)
    • 不写,默认:
      • 如:center:radial-gradient(circle, red, blue)
    • 关键字+范围:限制第一个颜色的大小(包括渐变)
      • 如:radial-gradient(circle 50px at center, red, blue);代表中间红色只有50px
    • 椭圆比圆多一个范围值,其他写法一样:
      • 如:radial-gradient(ellipse 50px 20px at center, red, blue)
  • 渐变结束形状:
    • farthest-corner: 默认,最远角
    • farthest-side: 与容器距离渐变中心点最远的一边或最远的垂直和水平边相切
    • closest-side: 与容器距离渐变中心点最近的一边(圆)或最近的垂直和水平边(椭圆)相切。
    • closest-corner: 最近角
  • 颜色带一个值的,渐变范围在值间,0%和100%默认可以忽略不写
    • 如:radial-gradient(cyan, transparent 20%, salmon 40%); 从中间开始三种颜色0-20是cyan,20-40是transparent,40-100是salmon
  • 每个值固定的区间范围,色块分明
    • 如:radial-gradient(cyan 0% 10%, transparent 20% 40%, salmon 40% 80%, blue);

重复径向渐变repeating-radial-gradient()

  • 语法与径向渐变一样,但一定要有范围,不管是在位置上还是在跟着颜色在末尾处,只选取其中的最大值重复渐变
  • 不加位置,只使用颜色,渐变相交
    • 如:repeating-radial-gradient(black, white 10px);
  • 加了位置,和每个颜色带范围,从位置开始0%-最大值一轮回
    • 如:repeating-radial-gradient(ellipse farthest-corner at 20% 20%, red, black 5%, blue 5%, green 10%);
  • 区间范围,色块分明
    • 如:background: repeating-radial-gradient(ellipse farthest-corner at 20% 20%, red 0 5%, green 5% 10%);

圆锥渐变conic-gradient() – 从中间向外放射直线所形成的面

  • 场景:用来创建环形,扇形,充电等形状的渐变
  • 语法:conic-gradient(<起始角度>, <颜色值1> <起始位置>, <颜色值2> <结束位置>,…);
  • 普遍应用
    • conic-gradient(color1, color2, color3)
  • 颜色分明,带区间范围
    • conic-gradient(color1 0% 30%, color2 30% 60%)
    • conic-gradient(color1 30%, color2 30% 100%)
  • 带一个值,在值附近会有过渡渐变
    • conic-gradient(color1 30%, color2 70%)
  • 动态效果:360旋转这个图形
  • 想要实现动态充电效果百分比,最主要是动态修改区间范围颜色值的第一个范围

重复圆锥渐变repeating-conic-gradient()

  • 语法与圆锥渐变一样,重复直到把容器填满
  • 重复渐变使用区间范围的第二中写法不会重复,因为容器默认0%-100%

用重复圆锥渐变实现一个充电环形底

  • 底部的条纹:使用重复圆锥渐变
  • 中间白色部分:用绝对定位叠加
  • 进度条: 定位一个跟条纹圆形一样大小的圆,置于中间,然后定时改变圆锥渐变的变量
    条纹充电效果图
    js
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <style>
    .bottom {
    position: relative;
    width: 200px;
    height: 200px;
    border-radius: 200px;
    background: repeating-conic-gradient(#fff 0 3deg, #000 3deg 6deg);
    z-index:20;
    }
    .center {
    position: absolute;
    top:0;
    left:0;
    width: 200px;
    height: 200px;
    border-radius: 200px;
    z-index:30;
    }
    .top {
    position: absolute;
    top:10px;
    left: 10px;
    width:180px;
    height:180px;
    border-radius: 180px;
    background: white;
    z-index: 50;
    }
    </style>
    <body>
    <div class="bottom"></div>
    <div class="center" id="center"></div>
    <div class="top"></div>
    <script>
    let cnt = 0
    let center = document.getElementById('center')
    let timer = setInterval(() => {
    if (center > 100) clearInterval(timer)
    center.style.background = `conic-gradient(green ${cnt}%, transparent ${cnt}% 100%)`
    cnt++
    }, 100)
    </script>
    </body>
其他文章
cover
SVG基础
  • 25/03/10
  • 12:01
  • 可视化
cover
echartGL
  • 25/03/05
  • 14:05
  • 可视化
目录导航 置顶
  1. 1. 前提
  2. 2. 线性渐变linear-gradient()
    1. 2.1. 重复线性渐变repeating-linear-gradient()
  3. 3. 径向渐变radial-gradient() - 由原点一圈一圈往外形成
    1. 3.1. 重复径向渐变repeating-radial-gradient()
  4. 4. 圆锥渐变conic-gradient() – 从中间向外放射直线所形成的面
    1. 4.1. 重复圆锥渐变repeating-conic-gradient()
    2. 4.2. 用重复圆锥渐变实现一个充电环形底
请输入关键词进行搜索