CSS 实现七彩圆环loading动画

news2024/11/15 17:17:43

前言

👏CSS 实现七彩圆环loading动画,速速来Get吧~

🥇文末分享源代码。记得点赞+关注+收藏!

1.实现效果

在这里插入图片描述

2.实现步骤

  • 定义父容器宽度为–w,每个圆环之间的gap间距为–gap,圆环的border边框宽为–border;
:root {
 --border: 5px;
 --gap: 30px;
 --w: 200px;
}
  • 如何绘制一个半圆环?
  • 定义一个div元素,假设宽为200px,高为200px/2(即为宽度的一半),圆角,设置border边框

在这里插入图片描述

div{
	width: 200px;
	height: 100px;
	border: 5px solid #e94545;
	border-radius: 50%;
}
  • 修改border-radius为50% 50% 0 0/100% 100% 0 0

在这里插入图片描述

 + border-radius: 50% 50% 0 0/100% 100% 0 0;
 + border-radius: 50%;
  • 去掉底部边框,就可以得到一个半圆环了

在这里插入图片描述

 + border-bottom: none;
  • 在父容器内定义七个半圆环,为每个圆环添加自定义变量,–c表示当前圆环的边框颜色,–i表示当前圆环的索引位置(从0开始,依次+1)
 <section>
  <div class="loader-item" style="--c: #e94545; --i: 0"></div>
  <div class="loader-item" style="--c: #eb8f34; --i: 1"></div>
  <div class="loader-item" style="--c: #eecf69; --i: 2"></div>
  <div class="loader-item" style="--c: #215221; --i: 3"></div>
  <div class="loader-item" style="--c: #87bb80; --i: 4"></div>
  <div class="loader-item" style="--c: #87ceeb; --i: 5"></div>
  <div class="loader-item" style="--c: #c393eb; --i: 6"></div>
</section>
section {
  width: var(--w);
  height: var(--w);
  position: relative;
}
  • 为每个半圆环添加样式,基于父容器absolute定位,水平居中,left为50% - 宽度的一半
  • 第一个圆环的宽度为–w,每个圆环的高度都为宽度的一半

在这里插入图片描述

  • 每个圆环间的gap为–gap,所以第二个圆环的宽度为w-gap*2

在这里插入图片描述

  • 第三个半圆环的宽度为w-gap22

在这里插入图片描述

  • 可以得到,每个圆环的宽度为calc(var(–w) - var(–gap) * 2 * var(–i)),i为当前圆环的索引位置(从0开始,依次+1)

在这里插入图片描述

.loader-item {
	--width: calc(var(--w) - var(--gap) * 2 * var(--i));
	width: var(--width);
	height: calc(var(--width) / 2);
	border: var(--border) solid var(--c);
	border-radius: 50% 50% 0 0/100% 100% 0 0;
	border-bottom: none;
	position: absolute;
    left: calc(50% - var(--width) / 2);
 }
  • 为每个半圆环设置top,第一个圆环为0,第二个为gap,第三个为gap*2,可得到top为 calc(var(–gap) * var(–i))

在这里插入图片描述

.loader-item{
 + top: calc(var(--gap) * var(--i));
}
  • 为每个圆环添加旋转动画,哎嘛呀,这转的也太不和谐了

在这里插入图片描述

.loader-item{
 + animation: rotate 2s cubic-bezier(0.11, 0.85, 0.22, 1.3) infinite;
}
@keyframes rotate {
	0%,
	25% {
	  transform: rotate(0deg);
	}
	100% {
	  transform: rotate(360deg);
	}
}
  • 添加transform-origin,设置为 50% 100%,这才对了,和谐多了

在这里插入图片描述

.loader-item{
 + transform-origin: 50% 100%;
}
  • 设置动画延迟,第一个圆环延迟-0ms,第二个延迟-60ms,第三个延迟-120ms,即calc(-60ms *
    var(–i)),i为当前圆环的索引位置(从0开始,依次+1)

在这里插入图片描述

.loader-item{
 + animation-delay: calc(-60ms * var(--i));
}
  • 父容器添加hover事件,当hover时候,将每个圆环的亮度提示,并暂停动画,就完成了啦~

在这里插入图片描述

 section:hover .loader-item {
  filter: brightness(1.5);
  animation-play-state: paused;
 }
  • 每个半圆环,添加0.5的transition过渡效果
.loader-item{
 + transition: all 0.5s;
}

3.实现代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title></title>
  </head>
  <link rel="stylesheet" href="../common.css" />
  <style>
    :root {
      --border: 5px;
      --gap: 15px;
      --w: 200px;
    }
    section {
      width: var(--w);
      height: var(--w);
      position: relative;
    }
    .loader-item {
      --width: calc(var(--w) - var(--gap) * 2 * var(--i));
      width: var(--width);
      height: calc(var(--width) / 2);
      border: var(--border) solid var(--c);
      border-radius: 50% 50% 0 0/100% 100% 0 0;
      border-bottom: none;
      position: absolute;
      left: calc(50% - var(--width) / 2);
      top: calc(var(--gap) * var(--i));
      transform-origin: 50% 100%;
      animation: rotate 2s cubic-bezier(0.11, 0.85, 0.22, 1.3) infinite;
      animation-delay: calc(-60ms * var(--i));
      transition: all 0.5s;
    }
    section:hover .loader-item {
      filter: brightness(1.5);
      animation-play-state: paused;
    }
    @keyframes rotate {
      0%,
      25% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
  </style>
  <body>
    <section>
      <div class="loader-item" style="--c: #e94545; --i: 0"></div>
      <div class="loader-item" style="--c: #eb8f34; --i: 1"></div>
      <div class="loader-item" style="--c: #eecf69; --i: 2"></div>
      <div class="loader-item" style="--c: #215221; --i: 3"></div>
      <div class="loader-item" style="--c: #87bb80; --i: 4"></div>
      <div class="loader-item" style="--c: #87ceeb; --i: 5"></div>
      <div class="loader-item" style="--c: #c393eb; --i: 6"></div>
    </section>
  </body>
</html>

4.写在最后🍒

看完本文如果觉得对你有一丢丢帮助,记得点赞+关注+收藏鸭 🍕
更多相关内容,关注🍥苏苏的bug,🍡苏苏的github,🍪苏苏的码云~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

7个从Windows计算机上恢复Word文档的方法

你是否有受到Windows上损坏或丢失的Word文件的困扰&#xff1f;好吧&#xff0c;你并不孤单&#xff01; 文件损坏是 Word 文档的常见问题。此外&#xff0c;人们不小心删除了文件或忘记保存最新版本。 由于Word文件通常包含您在个人或职业生涯中所需的重要数据&#xff0c;因…

JavaWeb:Maven创建Web项目

1.1 Web项目结构 Web项目的结构分为&#xff1a;开发中的项目和开发完可以部署的Web项目&#xff0c;这两种项目的结构是不一样的&#xff0c;我们一个个来介绍下&#xff1a; Maven Web项目结构&#xff1a;开发中的项目 开发完成部署的Web项目 开发项目通过执行Maven打包…

python为你画虎迎新年,结束旧年迎新景

前言 2022年是农历壬寅虎年&#xff0c;虎作为十二生肖是家喻户晓的 据学者考证&#xff0c;其应当起源于楚文化中对虎的图腾崇拜&#xff0c;象征力量与威严。 虎者&#xff0c;百兽之王&#xff0c;是威猛的象征&#xff0c;为镇宅辟邪之灵物。 虎在民间习俗中被尊崇为瑞兽…

高斯分布下的线性判别函数简介

协方差矩阵的性质 实对称矩阵&#xff08;第iii元素和第jjj元素的耦合与第jjj元素和第iii元素的耦合相等&#xff09;Eigenvalues & eigenvecters (本征值, 本征向量) ΣϕiλiϕiΦ[ϕ1ϕ2⋯ϕd]Λdiag⁡[λ1,λ2,⋯,λd]\Sigma \phi_i\lambda_i \phi_i \quad \Phi\left[…

oracle安装完成后,只能在本地链接

Oracle搭建好了之后&#xff0c;发现只能在服务器本机链接oracle&#xff0c;其他客户端无法链接&#xff0c;这是因为监听地址是本地localhost&#xff0c;重建监听即可 lsnrctl status 查看监听的名称 lsnrctl stop 停止监听&#xff0c;并关闭数据库 sqlplus / as sysdba…

基于人工神经网络的空压机负荷预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

爱站权重怎么查询?怎么做爱站号权重高一些?

这一篇又是网站权重查询和提高权重的分享&#xff0c;爱站权重怎样查询&#xff1f;怎么提高爱站权重&#xff1f; 大家一起来看看嘿。 爱站权重怎样查询&#xff1f; 第一步&#xff1a;打开iis7站长之家seo批量检测&#xff0c;在左上方的框框里面输入需要的域名/网站地址…

数据结构-二叉树详解

目录 一.二叉树 1.概念及结构 2.特殊的二叉树 3.性质与解题 4.存储结构 二.顺序结构与堆 1.堆的概念及结构 2.堆的创建 3.堆的插入 4.堆的删除 5.堆的具体实现 6.堆的应用&#xff1a;堆排序和OPK问题 三.链式二叉树 1.前序/中序/后序遍历 2.层序遍历 3.结点个数…

effective C++读书笔记2

目录 了解C默认编写并调用的函数 若不想使用编译器自动生成的函数&#xff0c;就要明确拒绝 为多态基类声明virtual析构函数 不要让异常逃离析构函数 绝不在构造和析构过程中调用virtual函数 在operator处理自我赋值 复制对象时不要忘记其每一个成分 这是effective C第二章…

Java高效率复习-SpringMVC[SpringMVC]

SpringMVC的简介 表述层前端页面Servlet 入门案例-创建SpringMVC 创建Maven工程 创建Maven工程后&#xff0c;pom文件的打工方式是war包&#xff0c;表示web应用打包方式。 正确的web.xml文件创建路径 src\main\webapp\WEB-INF\web.xml添加依赖 spring-web:5.3.1是SpringM…

java 多线程编程

Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更小的资源开销。 这里定义和线程相关的另一个…

用户手册编写的终极指南

用户手册对于寻求了解产品和流程的用户来说是非常重要的。有时&#xff0c;它们甚至是一个公司向客户销售其产品的法律要求。 客户往往会在联系你的客户支持团队之前查阅你的用户手册&#xff0c;所以你的手册有可能为你节省支持成本。 在你的用户手册上投入大量时间和精力是…

PHP---表单传值

目录 一、表单传值的概念 二、表单传值的方式 &#xff08;1&#xff09;GET和POST的区别 &#xff08;2&#xff09;GET方式 &#xff08;3&#xff09;POST方式 三、接受表单数据 四、处理复选框的注意点 (1)单选框的数据处理 &#xff08;2&#xff09;复选框的数据…

机器学习100天(二十一):021 分类模型评价指标-ROC曲线和AUC

机器学习100天!今天讲的是:分类模型评价指标-ROC曲线和AUC 《机器学习100天》完整目录:目录 首先基于混淆矩阵,介绍两个新的概念:真正例率(TPR)和假正例率(FPR)。真正例率是预测为正且实际为正的样本的占所有正例样本的比例。TPR 越大,预测的正类中实际正类越多。计…

跳板攻击原理及如何追踪定位攻击者主机(下)

跳板攻击溯源中&#xff0c;我们需要先确定本地网络中是否存在攻击者的跳板。具体可参考&#xff08;跳板攻击原理及如何追踪定位攻击者主机&#xff08;上&#xff09;&#xff09; 那么在本地网络中发现跳板后&#xff0c;又要如何追踪定位攻击者主机&#xff1f; 这种情况…

【苹果相册推】增加家庭对方下载 zookeeper-3.4.12.tar.gz #编削配置装备摆设 vim conf/zoo.cfg

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

串口助手(简洁版)上位机软件零基础教程( C# + visual studio2019)

最近在开发一个项目&#xff0c;需要串口通信&#xff0c;所以学习怎么自己做一个串口通信助手 1.工程的建立 打开vs软件 -》 左上角 “文件”选项 -》 新建 -》 项目 &#xff0c;弹出对话框如下&#xff1a; 点击visual c# 选项卡 -》 1. 选择 Windows 桌面 -》 2.选择Windo…

互联网全面回暖?2023年主线任务:搞钱

2022年尾声将近&#xff0c;不知道大家最近有没有感受到一股「春风」&#xff0c;防疫政策不断放开&#xff0c;上下班地铁渐渐恢复了往日的繁忙和拥挤&#xff0c;经济正在加速复苏...... 作为职场人&#xff0c;大家最关心的问题就是&#xff0c;2023年就业形势是否会回暖&a…

CAN工具 - ValueCAN - 基础介绍

CAN/CANFD通讯广泛存在于整个车载网络中&#xff0c;几乎每一块软硬件的开发都需要用到CAN工具&#xff0c;除了我们所熟知的CANoe之外&#xff0c;今天我们来介绍一下另外一个CAN工具ValueCAN&#xff0c;这个工具个人认为应该在PCAN之上CANoe之下&#xff08;好用程度&#x…

Two Coupled Rejection Metrics Can Tell Adversarial Examples Apart

实现鲁棒性的一种补充方式是引入拒绝选项&#xff0c;允许模型不返回对不确定输入的预测&#xff0c;其中confidence是常用的确定性代理。 与此例程一起&#xff0c;我们发现置信度和校正置信度&#xff08;R-Con&#xff09;可以形成两个耦合的拒绝度量&#xff0c;这可以证明…