当前位置: 首页 > news >正文

使用CSS+SVG实现加载动画

使用CSS+SVG实现加载动画

效果展示

在这里插入图片描述

CSS知识点

  • SVG元素使用
  • SVG相关CSS属性运用

整体页面布局

<section><div class="box"><div class="loader"><svg><circle cx="40" cy="40" r="40"></circle></svg></div></div><div class="box"><div class="loader"><svg><circle cx="40" cy="40" r="40"></circle></svg></div></div><div class="box"><div class="loader"><svg><circle cx="40" cy="40" r="40"></circle></svg></div></div>
</section>

说明:这里定义了三个 box 元素,其中两个 box 主要是实现阴影效果。

定义场景样式和相关动画

section {display: flex;justify-content: center;align-items: center;min-height: 100vh;background: #072631;animation: animateBg 10s linear infinite;
}
/* 背景颜色改变动画 */
@keyframes animateBg {0% {filter: hue-rotate(0deg);}100% {filter: hue-rotate(360deg);}
}

定义 svgcircle 元素样式

svg {position: relative;width: 90px;height: 90px;z-index: 1000;
}
svg circle {width: 100%;height: 100%;fill: none;stroke-width: 10;stroke: #25e6ff;stroke-linecap: round;transform: translate(5px, 5px);stroke-dasharray: 250;stroke-dashoffset: 249;
}

完成上述代码后效果如下:
在这里插入图片描述

svgcircle 元素添加动画

svg {animation: fixAnimation 2s ease-in-out infinite;
}
/* SVG元素主要是负责 */
@keyframes fixAnimation {0% {transform: rotateY(0deg);}50% {transform: rotateY(0deg);}50.00000001%,100% {transform: rotateY(181deg);}
}
svg circle {animation: animate 2s ease-in-out infinite;
}
/* 实现加载动画,动画实现的时候开始和结束进度设置为对称,这样动画执行的时候会比较平滑 */
@keyframes animate {0%,2% {stroke-dashoffset: 249;}50% {stroke-dashoffset: 125;}99%,100% {stroke-dashoffset: 249;}
}

实现上述效果后如下:

在这里插入图片描述

对三个 box 元素进行样式处理

.box {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);width: 150px;display: flex;justify-content: center;/* 倒影效果 */-webkit-box-reflect: below -80px linear-gradient(transparent, #0004);
}
.box:nth-child(2) {filter: blur(10px);
}.box:nth-child(3) {filter: blur(20px);
}

实现上述效果后,基本可以考到最终效果动画,但是后续还有一些动画需要处理。

加载动画进行旋转

.loader {animation: positionX 2s linear infinite;
}@keyframes positionX {0% {transform: rotate(180deg) translateX(-40px);}100% {transform: rotate(180deg) translateX(40px);}
}

完整代码下载

完整代码下载

http://www.lryc.cn/news/459471.html

相关文章:

  • 物联网(IoT)的未来发展:智能互联时代的到来
  • 斯坦福 CS229 I 机器学习 I 构建大型语言模型 (LLMs)
  • Java->排序
  • linux 大小写转换
  • Linux——传输层协议
  • centos系列,yum部署jenkins2.479.1,2024年长期支持版本
  • 正则表达式-“三剑客”(grep、sed、awk)
  • 数智时代的新航向:The Open Group 2024生态系统架构·可持续发展年度大会邀您共筑AI数字新时代
  • TensorFlow 的核心概念
  • SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(动态新增、修改等操作)
  • Matlab详细学习教程 MATLAB使用教程与知识点总结
  • 【ELKB】Kibana使用
  • ChatGPT免费使用:人工智能在现代社会中的作用
  • 腾讯音乐:从 Elasticsearch 到 Apache Doris 内容库升级,统一搜索分析引擎,成本直降 80%
  • CubeMX的FreeRTOS学习
  • C语言初始:数据类型和变量
  • Linux shellcheck工具
  • FLINK SQL时间属性
  • android——Groovy gralde 脚本迁移到DSL
  • 工程项目管理中的最常见概念!蓝燕云总结!
  • PostgreSQL AUTO INCREMENT
  • 24-10-13-读书笔记(二十五)-《一只特立独行的猪》([中] 王小波)用一生来学习艺术
  • Java—继承性与多态性
  • 打通华为认证实验考试“痛点”:备考指南全解析
  • 【软考】子系统划分
  • 【Python】selenium获取鼠标在网页上的位置,并定位到网页位置模拟点击的方法
  • 【C++ 真题】B2078 含 k 个 3 的数
  • 蓝桥杯省赛真题——冶炼金属
  • 【Mac苹果电脑安装】DBeaverEE for Mac 数据库管理工具软件教程【保姆级教程】
  • 数据仓库中的维度建模:深入理解与案例分析