Jinuss's blog Jinuss's blog
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

东流

前端可视化
首页
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript高级程序设计》
    • 《Vue》
    • 《React》
    • 《Git》
    • JS设计模式总结
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • HTML

  • CSS

    • CSS教程和技巧收藏
    • flex布局语法
    • flex布局案例-基础
    • flex布局案例-骰子
    • flex布局案例-圣杯布局
    • flex布局案例-网格布局
    • flex布局案例-输入框布局
    • CSS3之transition过渡
    • CSS3之animation动画
    • CSS自定义设置滚动条样式
    • 「布局技巧」图片未加载前自动撑开元素高度
    • 文字在一行或多行时超出显示省略号
    • 从box-sizing属性入手,了解盒子模型
    • 水平垂直居中的几种方式-案例
    • 如何根据系统主题自动响应CSS深色模式
    • CSS-function汇总
    • 网格布局中的动画
    • CSS属性background-position-y实现动画
    • CSS实现github右上角图标
    • CSS3实现购物车动画效果
    • css-functions-属性函数
    • css-functions-图形函数
    • CSS3换装达人原理
    • iconfont图标字体库介绍
    • css关键字currentColor
    • css伪类选择器系列一
    • css伪类选择器系列二
    • 动态修改iconfont图标配色
    • 使用CSS3实现loading效果
      • CSS滚动驱动动画
      • CSS实现图片3D立体效果
      • iconfont中svg图片颜色动态修改第二弹
    • 浏览器

    • 页面
    • CSS
    东流
    2024-10-21
    目录

    使用CSS3实现loading效果

    # 效果展示

    # 具体实现

    示例完全是使用 html+CSS3 实现,主要是用到了 CSS3 的animate和animate-delay属性。

    html 代码如下:

    <div class="container">
      <span style="--i:0"></span>
      <span style="--i:1"></span>
      <span style="--i:2"></span>
      <span style="--i:3"></span>
      <span style="--i:4"></span>
      <span style="--i:5"></span>
      <span style="--i:6"></span>
      <span style="--i:7"></span>
      <span style="--i:8"></span>
      <span style="--i:9"></span>
      <span style="--i:10"></span>
      <span style="--i:11"></span>
      <span style="--i:12"></span>
      <span style="--i:13"></span>
      <span style="--i:14"></span>
      <span style="--i:15"></span>
      <span style="--i:16"></span>
      <span style="--i:17"></span>
      <span style="--i:18"></span>
      <span style="--i:19"></span>
      <span style="--i:20"></span>
      <span style="--i:21"></span>
      <span style="--i:22"></span>
      <span style="--i:23"></span>
      <span style="--i:24"></span>
      <span style="--i:25"></span>
      <span style="--i:26"></span>
      <span style="--i:27"></span>
      <span style="--i:28"></span>
      <span style="--i:29"></span>
      <span style="--i:30"></span>
      <span style="--i:31"></span>
      <span style="--i:32"></span>
      <span style="--i:33"></span>
      <span style="--i:34"></span>
      <span style="--i:35"></span>
      <span style="--i:36"></span>
      <span style="--i:37"></span>
      <span style="--i:38"></span>
      <span style="--i:39"></span>
      <span style="--i:40"></span>
      <span style="--i:41"></span>
      <span style="--i:42"></span>
      <span style="--i:43"></span>
      <span style="--i:44"></span>
      <span style="--i:45"></span>
      <span style="--i:46"></span>
      <span style="--i:47"></span>
      <span style="--i:48"></span>
      <span style="--i:49"></span>
    </div>
    
    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
    44
    45
    46
    47
    48
    49
    50
    51
    52

    代码有点冗余,写了 50 个span元素,当然可以使用 javascript 去循环生成,再插入到 DOM中。这段代码就是给每个span元素绑定了--i值,每个span元素就是效果中的变色部分,之所以用--i时方便在设置span元素样式时使用var(--i)变量来给span动态设置样式。

    CSS3 代码如下:

    <style>
      span {
        display: inline-flex;
        width: 32px;
        height: 6px;
        background-color: #2c4766;
        border-radius: 8px;
        position: absolute;
        left: 0;
        transform-origin: 128px;
        transform: rotate(calc(var(--i) * (360deg / 50)));
        animation: animateBlink 1s linear infinite; /*执行一秒,匀速执行,循环*/
        animation-delay: calc(
          (var(--i) * (1s / 50))
        ); /*设置动画的延迟执行时间,这样就可以看到渐变的效果*/
      }
    
      @keyframes animateBlink {
        0% {
          background-color: #0ef;
        }
        25% {
          background-color: #2c4766;
        }
      }
    </style>
    
    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

    这段代码总共做了两件事,设置span的旋转角度和定义animateBlink动画并绑定。

    旋转 span

    通过--i变量设置每个span元素的旋转角度,均匀分布在一个环上。

    设置中心点

    transform-origin: [<x-position>] [<y-position>] [<z-position>];
    
    1

    效果如下

    动画

    这段代码就是定义了一个animateBlink动画, 循环匀速执行动画,动画完全执行一轮时间持续 1s。

    编辑 (opens new window)
    上次更新: 2024/10/21, 07:28:09
    动态修改iconfont图标配色
    CSS滚动驱动动画

    ← 动态修改iconfont图标配色 CSS滚动驱动动画→

    最近更新
    01
    GeoJSON
    05-08
    02
    Circle
    04-15
    03
    CircleMarker
    04-15
    更多文章>
    Theme by Vdoing | Copyright © 2024-2025 东流 | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式