加载loading动画

2023-05-16

提起加载(loading)效果,想必大家都不会陌生,在目前的移动端、PC端、各类app均广泛使用,使用loading动画能显著提升用户的交互体检,尤其是在页面加载速度比较的慢的情况下,loading动画的作用就更加突出了。实现一个个性化的加载动画效果,并不难,其主要原理是使用css3动画属性-animation、结合transform属性即可。本章节结合代码简单记录一下加载动画的实现过程

1.基础版loading效果,实现效果如图

这类加载动画有一个明显的特点-绕着中心点做旋转运动,针对这类加载动画,我们可以使用静态图片、文字或者svg标签等,通过动画关键帧实现元素旋转效果即可 ,具体实现效果见代码

<!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>
        .container {
            display: flex;
            justify-content: space-around;
            align-items: center;
            width: 600px;
            height: 200px;
        }

        .loading-box {
            width: 100px;
            height: 100px;
            background-size: 100% 100%;
            animation: loading 2s linear infinite;
        }

        @keyframes loading {
            0% {
                transform: rotate(0);
            }

            100% {
                transform: rotate(1turn);
            }
        }

        .container>div:nth-child(1) {
            background-image: url('./images/loading1.png');
        }

        .container>div:nth-child(2) {
            background-image: url('./images/loading2.png');
        }

        .container>div:nth-child(3) {
            background-image: url('./images/loading3.png');
        }

        .container>div:nth-child(4) {
            background-image: url('./images/loading4.png');
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="loading-box"></div>
        <div class="loading-box"></div>
        <div class="loading-box"></div>
        <div class="loading-box"></div>
    </div>
</body>

</html>

2.增强版loading动画,实现效果如图

 这类动画是由数个点组成一个圆圈、圆圈实现有序的缩放,看上去有一种绕中心点旋转的效果。其实现过程见下图:

实现过程可分为6步:

  •  提供一个元素做为动画的容器,在元素内部添加12个矩形框,使用定位的方式将矩形框固定在指定位置,得到图1
  • 设置矩形框的旋转中心为左中位置,依次将矩形框旋转指定角度,12个矩形框(每个矩形框旋转角度在前一个的基础上增加30度),得到图2
  • 在矩形框内添加小圆点,并且让小圆点占据矩形框的末端位置,得到图3
  • 为每一个小圆点添加一个动画帧,让每一个小圆点的动画开始时间有序延迟一丢丢,animation-delay可设置为负数-表示动画已执行多长时间,得到图4
  • 去掉矩形框边框,即可得到一个加载的loading动画D,得到图5
  • 通过给小球添加一个滤镜效果,可以实现小球在运动过程中颜色变化的效果(此时小球的背景色不能是纯白色或纯黑色),得到图6

实现代码如下:

<!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>
        .container {
            position: relative;
            width: 200px;
            height: 200px;
        }

        .container>div {
            position: absolute;
            left: 50%;
            top: 50%;
            margin-top: -10px;
            width: 50%;
            height: 20px;
            transform-origin: left center;
        }

        .container>div::after {
            content: "";
            position: absolute;
            right: 0;
            top: 0;
            width: 20px;
            height: 20px;
            border-radius: 50%;
            background-color: red;
            /* background-color: #000; */
            transform: var(--scale);
            animation: dotscale 1.2s linear infinite;
            animation-delay: var(--animation-delay);
        }

        .container>div:nth-child(1) {
            transform: rotate(0deg);
            --animation-delay: 0s;
        }

        .container>div:nth-child(2) {
            transform: rotate(30deg);
            --animation-delay: -0.1s;
        }

        .container>div:nth-child(3) {
            transform: rotate(60deg);
            --animation-delay: -0.2s;
        }

        .container>div:nth-child(4) {
            transform: rotate(90deg);
            --animation-delay: -0.3s;
        }

        .container>div:nth-child(5) {
            transform: rotate(120deg);
            --animation-delay: -0.4s;
        }

        .container>div:nth-child(6) {
            transform: rotate(150deg);
            --animation-delay: -0.5s;
        }

        .container>div:nth-child(7) {
            transform: rotate(180deg);
            --animation-delay: -0.6s;
        }

        .container>div:nth-child(8) {
            transform: rotate(210deg);
            --animation-delay: -0.7s;
        }

        .container>div:nth-child(9) {
            transform: rotate(240deg);
            --animation-delay: -0.8s;
        }

        .container>div:nth-child(10) {
            transform: rotate(270deg);
            --animation-delay: -0.9s;
        }

        .container>div:nth-child(11) {
            transform: rotate(300deg);
            --animation-delay: -1s;
        }

        .container>div:nth-child(12) {
            transform: rotate(330deg);
            --animation-delay: -1.1s;
        }

        @keyframes dotscale {
            0% {
                transform: scale(1);
                filter: hue-rotate(0deg);
            }

            100% {
                transform: scale(0);
                filter: hue-rotate(360deg);
            }
        }
    </style>
</head>

<body>
    <div class="container">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        <div></div>
    </div>
</body>

</html>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加载loading动画 的相关文章

  • 机器学习笔记: 时间序列 分解 STL

    1 前言 STL Seasonal and Trend decomposition using Loess 是以LOSS 作为平滑方式的时间序列分解 LOSS可以参考机器学习笔记 xff1a 局部加权回归 LOESS UQI LIUWJ的博

随机推荐

  • C++11 auto遍历

    C 43 43 11这次的更新带来了令很多C 43 43 程序员期待已久的for range循环 xff0c 每次看到javascript xff0c lua里的for range xff0c 心想要是C 43 43 能有多好 xff0c
  • C++ 文件的读写(fin && fout)

    如何让键盘输入字符保存在 txt文件中 如何让我们自己在键盘上输入的字符不仅仅在屏幕上显示 xff0c 而且还能保存在特定路径的文件中 xff0c 这让简单枯燥的控制台命令程序变得略有趣 首先 xff0c 先看看cin和cout对象 xff
  • 基本矩阵、本质矩阵和单应矩阵

    两幅视图存在两个关系 xff1a 第一种 xff0c 通过对极几何一幅图像上的点可以确定另外一幅图像上的一条直线 xff1b 另外一种 xff0c 通过上一种映射 xff0c 一幅图像上的点可以确定另外一幅图像上的一个点 xff0c 这个点
  • 矩阵零空间

    矩阵A的零空间就Ax 61 0的解的集合 零空间的求法 xff1a 对矩阵A进行消元求得主变量和自由变量 xff1b 给自由变量赋值得到特解 xff1b 对特解进行线性组合得到零空间 假设矩阵如下 xff1a 对矩阵A进行高斯消元得到上三角
  • VIO学习总结

    VIO xff08 visual inertial odometry xff09 即视觉惯性里程计 xff0c 有时也叫视觉惯性系统 xff08 VINS xff0c visual inertial system xff09 xff0c 是
  • 单应性(Homography)变换

    我们已经得到了像素坐标系和世界坐标系下的坐标映射关系 xff1a 其中 xff0c u v表示像素坐标系中的坐标 xff0c s表示尺度因子 xff0c fx fy u0 v0 xff08 由于制造误差产生的两个坐标轴偏斜参数 xff0c
  • senmantic slam mapping

    basicStructure hpp common h 定义一些常用的结构体 以及各种可能用到的头文件 xff0c 放在一起方便include 相机内参模型 增加了畸变参数 xff0c common headers h各种可能用到的头文件
  • Ubuntu 20.04 VNC 安装与设置

    原链接 VNC是一个远程桌面协议 按照本文的说明进行操作可以实现用VNC对Ubuntu 20 04进行远程控制 一般的VNC安装方式在主机没有插显示器的时候是无法使用的 下面的操作可以在主机有显示器和没有显示器时都能够正常工作 首先安装x1
  • opencv中类型转换问题

    记录一下最近困惑我的问题 方便以后查阅 在学习立体匹配算法中BM算法时 xff0c 出现在了关于类型转换的问题 xff1a disp convertTo disp8u CV 8U 255 numberOfDisparities 16 不知道
  • 最大似然估计MLE与贝叶斯估计

    最大似然估计 Maximum Likehood Estimation MLE 最大似然估计的核心思想是 xff1a 找到参数 的一个估计值 xff0c 使得当前样本出现的可能性最大 用当年博主老板的一句话来说就是 xff1a 谁大像谁 xf
  • 大疆Livox_mid 40雷达初体验

    为了解决无人车上镭神雷达FOV小而导致的车前3m内无法看到锥形桶问题 东家给公司邮寄了一台大疆的mid40雷达 不得不说 颜值真的高 光看颜值 就甩镭神几条街 昨天重新配置镭神的激光雷达 官方给的配置软件 真的是 用的我心碎啊 算了 不提了
  • 地铁供电系统的构成

    地铁供电系统一般划分为以下几部分 xff1a 外部电源 xff1b 主变电所 xff1b 牵引供电系统 xff1b 动力照明系统和杂散电流腐蚀防护系统 xff1b 电力监控系统 外部电源地铁供电系统的外部电源就是地铁供电系统主变电所供电的外
  • C++ Vector常用函数

    C 43 43 Vector常用函数 begin 函数 原型 xff1a iterator begin const iterator begin 功能 xff1a 返回一个当前vector容器中起始元素的迭代器 end 函数 原型 xff1
  • STM32使用ADC获取内部温度传感器数据输出(直接读取/DMA两种方式实现)

    STM32使用ADC获取内部温度传感器数据输出 xff08 直接读取 DMA两种方式实现 xff09 前言一 内部温度传感器的使用 xff1f 二 代码操作讲解1 直接读取2 DMA处理 总结 前言 STM32F1系列 xff08 本代码基
  • fp32/fp64精度,4/8字节16进制转float/double十进制

    1 IEEE 754 32位单精度浮点数 xff08 4字节 xff09 1 1 32位单精度浮点数 其中 xff0c 32位16进制数包括1位符号位 SIGN xff0c 8位指数位 EXPONENT 和 23位尾数位 MANTISSA
  • SVG绘制圆环进度条

    在我们的大屏可视化项目中 xff0c 经常会用到各种各样的图表 与传统的表格展示 枯燥的文字阐述相比 xff0c 图表展示则使用户看起来更加直观 数据的展示则更加一目了然 本文基于svg绘图技术结合前端技术栈vue xff0c 以工作中常用
  • Canvas绘制地图

    在我们的大屏可视化项目中 xff0c 地图数据可视化是最常见功能 地图数据可视化目前的实现方案有很多 xff0c 其中最具有代表性的莫过于使用echarts xff0c 引入一个js文件 xff0c 再加上一些简单的配置 xff0c 这样一
  • 滚动动画(跑马灯动画)的几种实现方式

    在大屏可视化应用中 xff0c 滚动动效 xff08 跑马灯效果 xff09 也是常见的一种数据展现方式 xff0c 本章节针对字幕滚动和列表滚动效果做一个小小的总结 xff0c 结合vue框架 xff0c 具体展示效果如下 xff0c 从
  • 如何在Ubuntu上安装CUDA

    原链接 在Ubuntu上安装CUDA一直是比较麻烦的事情 由于不同版本的CUDA对显卡驱动有着不同的需求 而在有些电脑上安装最新的Nvidia闭源显卡驱动会导致无法进入图形界面 CUDA中也自带了Nvidia的显卡驱动 xff0c 但是如果
  • 加载loading动画

    提起加载 xff08 loading xff09 效果 xff0c 想必大家都不会陌生 xff0c 在目前的移动端 PC端 各类app均广泛使用 xff0c 使用loading动画能显著提升用户的交互体检 xff0c 尤其是在页面加载速度比