css3写一个加载动画
先制作一个正方形,让圆点在正方形的最外侧
<style>body {margin: 0;}.loading {width: 200px;height: 200px;background: skyblue;margin: 100px auto 0px;position: relative;}.loading .item {width: 20px;height: 20px;border-radius: 50%;background: pink;position: absolute;/* left:50%是指的左边的点的位置在中间 第一个圆点在最顶部 */left: 50%;top: 0px;margin-left: -10px;/* 基准点 */transform-origin: 10px 100px;}//第二个圆点.loading .item:nth-child(2) {transform: rotate(40deg);}//第三个圆点.loading .item:nth-child(3) {transform: rotate(80deg);}</style><body><div class="loading"><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div><div class="item"></div></div></body>

借助 rotate 让9个圆点在正方形的四周
<style>body {margin: 0;}.loading {width: 200px;height: 200px;background: skyblue;margin: 100px auto 0px;position: relative;}.loading .item {width: 20px;height: 20px;border-radius: 50%;background: pink;position: absolute;/* left:50%是指的左边的点值在中间 第一个圆点在最顶部 */left: 50%;top: 0px;margin-left: -10px;/* 基准点 */transform-origin: 10px 100px;}.loading .item:nth-child(2) {transform: rotate(40deg);}.loading .item:nth-child(3) {transform: rotate(80deg);}/* 以此类推 快速做出其他的圆点 */.loading .item:nth-child(4) {transform: rotate(120deg);}.loading .item:nth-child(5) {transform: rotate(160deg);}.loading .item:nth-child(6) {transform: rotate(200deg);}.loading .item:nth-child(7) {transform: rotate(240deg);}.loading .item:nth-child(8) {transform: rotate(280deg);}.loading .item:nth-child(9) {transform: rotate(320deg);}</style>

优化代码
上面我们给每一个点都设置了旋转的角度。这样觉得很low、都在重复。如果点很多,那不是要累死我们呀。怎么解决这个问题了?我们可以使用css的变量来解决这个问题。我们可以可以使用自定义属性来处理这个问题的。自定义属性是以"--"开头。
使用自定义属性"--" 来优化代码
<style>body {margin: 0;}.loading {width: 200px;height: 200px;background: skyblue;margin: 100px auto 0px;position: relative;}.loading .item {width: 20px;height: 20px;border-radius: 50%;background: pink;position: absolute;/* left:50%是指的左边的点值在中间 第一个圆点在最顶部 */left: 50%;top: 0px;margin-left: -10px;/* 基准点 */transform-origin: 10px 100px;/* calc 函数可以进行运算*/transform: rotate(calc(var(--i)*40deg));}</style><div class="loading"><!-- 自定义属性是通过"--"来命名的 --><div class="item" style="--i:0"></div><div class="item" style="--i:1"></div><div class="item" style="--i:2"></div><div class="item" style="--i:3"></div><div class="item" style="--i:4"></div><div class="item" style="--i:5"></div><div class="item" style="--i:6"></div><div class="item" style="--i:7"></div><div class="item" style="--i:8"></div></div>

让每个一个小圆点间隔一段时间亮起来
<style>body {margin: 0;}.loading {width: 200px;height: 200px;background: pink;margin: 100px auto 0px;position: relative;}.loading .item {width: 20px;height: 20px;border-radius: 50%;background: rgba(255, 255, 255, .2);position: absolute;/* left:50%是指的左边的点值在中间 第一个圆点在最顶部 */left: 50%;top: 0px;margin-left: -10px;/* 基准点 */transform-origin: 10px 100px;/* calc 函数可以进行运算*/transform: rotate(calc(var(--i)*40deg));/* 调用动画 */animation: loading 2s ease infinite;}@keyframes loading {0%,50% {background: rgba(255, 255, 255, .2);}50.5%,100% {background: #fff;}}.loading .item:nth-child(1) {animation-delay: 0s;}.loading .item:nth-child(2) {animation-delay: 0.111s;}.loading .item:nth-child(3) {animation-delay: 0.222s;}/* 以此类推 快速做出其他的圆点 */.loading .item:nth-child(4) {animation-delay: 0.333s;}.loading .item:nth-child(5) {animation-delay: 0.444s;}.loading .item:nth-child(6) {animation-delay: 0.555s;}.loading .item:nth-child(7) {animation-delay: 0.666s;}.loading .item:nth-child(8) {animation-delay: 0.777s;}.loading .item:nth-child(9) {animation-delay: 0.888s;}</style></head><body><div class="loading"><!-- 自定义属性是通过"--"来命名的 --><div class="item" style="--i:0"></div><div class="item" style="--i:1"></div><div class="item" style="--i:2"></div><div class="item" style="--i:3"></div><div class="item" style="--i:4"></div><div class="item" style="--i:5"></div><div class="item" style="--i:6"></div><div class="item" style="--i:7"></div><div class="item" style="--i:8"></div></div></body>

同样优化代码
<style>body {margin: 0;}.loading {width: 200px;height: 200px;background: pink;margin: 100px auto 0px;position: relative;}.loading .item {width: 20px;height: 20px;border-radius: 50%;background: rgba(255, 255, 255, .2);position: absolute;/* left:50%是指的左边的点值在中间 第一个圆点在最顶部 */left: 50%;top: 0px;margin-left: -10px;/* 基准点 */transform-origin: 10px 100px;/* calc 函数可以进行运算*/transform: rotate(calc(var(--i)*40deg));/* 调用动画 */animation: loading 2s ease infinite;animation-delay: calc(var(--i) * 0.11s);}@keyframes loading {0%,50% {background: rgba(255, 255, 255, .2);}50.5%,100% {background: #fff;}}</style></head><body><div class="loading"><!-- 自定义属性是通过"--"来命名的 --><div class="item" style="--i:0"></div><div class="item" style="--i:1"></div><div class="item" style="--i:2"></div><div class="item" style="--i:3"></div><div class="item" style="--i:4"></div><div class="item" style="--i:5"></div><div class="item" style="--i:6"></div><div class="item" style="--i:7"></div><div class="item" style="--i:8"></div></div></body>
css3写一个加载动画的更多相关文章
- 用css3制作旋转加载动画的几种方法
以WebKit为核心的浏览器,例如Safari和Chrome,对html5有着很好的支持,在移动平台中这两个浏览器对应的就是IOS和Android.最近在开发一个移动平台的web app,那么就有机会 ...
- 源码分享-纯CSS3实现齿轮加载动画
纯CSS3实现齿轮加载动画是一款可以用来做Loading动画的CSS3特效代码. 有兴趣的朋友可以下载下来试试:http://www.huiyi8.com/sc/8398.html
- [前端随笔][CSS] 制作一个加载动画 即帖即用
说在前面 描述 [加载中loading...] 的动画图片往往使用GIF来实现,但GIF消耗资源较大,所以使用CSS直接制作更优. 效果传送门1 效果传送门2 关键代码 @keyframes 规则 用 ...
- 原生JS+ CSS3创建loading加载动画;
效果图: js创建loading show = function(){ //loading dom元素 var Div = document.createElement("div" ...
- css3很酷的加载动画多款
在线实例:http://www.admin10000.com/document/3601.html 源码:https://github.com/tobiasahlin/SpinKit
- css3动画特效:纯css3制作win8加载动画特效
Windows 8 完整效果如上图:这个里面可能是css冲突,喜欢的可以自己去体征一下: css特效代码: <style type="text/css"> ...
- 我用 CSS3 实现了一个超炫的 3D 加载动画
今天给大家带来一个非常炫酷的CSS3加载Loading动画,它的特别之处在于,整个Loading动画呈现出了3D的视觉效果.这个Loading加载动画由12个3D圆柱体围成一个椭圆形,同时这12个圆柱 ...
- 几行css3代码实现超炫加载动画
之前为大家分享了css3实现的加载动画.今天为大家带来一款只需几行代码就可以实现超炫的动画加载特效.我们一起看下效果图: 在线预览 源码下载 实现代码: 极简的html代码: <div> ...
- ReactNative学习实践--动画初探之加载动画
学习和实践react已经有一段时间了,在经历了从最初的彷徨到解决痛点时的兴奋,再到不断实践后遭遇问题时的苦闷,确实被这一种新的思维方式和开发模式所折服,react不是万能的,在很多场景下滥用反而会适得 ...
- HTML加载动画实现
在页面加载完成之前或者执行某操作时,先显示要显示的加载动画. 实现原理 先定义一个加载动画元素(最好是纯CSS实现,图片的话可能慢一点),当页面未加载完成之前,先使其"可见",当页 ...
随机推荐
- 边缘AI方案落地问题探讨
摘要:本文介绍了如何兑现边缘AI带来好处的承诺,并针对边缘AI落地和商业闭环发起的开源社区工作. 本文分享自华为云社区<华为云:边缘AI方案落地问题探讨及调研>,作者: 华为云边缘云创新实 ...
- You are not using binary logging
Error Code : 1381You are not using binary logging show variables like '%log_bin%'; 在mysqld配置项下面加上log ...
- Django中安装websocket
完整代码: https://gitee.com/mom925/django-system项目结构: 先安装所需库: pip install channels下面将websocket作为插件一样的只需要 ...
- Q查询进阶操作 ORM查询优化 only与defer select_related与prefetch_related ORM事务 ORM常用字段类型 ORM常用字段参数
目录 Q查询进阶操作 children.append 图书查询功能 ORM查询优化 惰性查询 自动分页 limit only与defer only defer select_related与prefe ...
- Android RxJava 异常时堆栈信息显示不全(不准确),解决方案都在这里了
现象 大家好,我是徐公,今天为大家带来的是 RxJava 的一个血案,一行代码 return null 引发的. 前阵子,组内的同事反馈说 RxJava 在 debug 包 crash 了,捕获到的异 ...
- 基于 SpringBoot+vue的地方美食系统,可作为毕业设计
1 简介 这个项目是基于 SpringBoot和 Vue 开发的地方美食系统,包括系统功能模块,管理员功能模块,用户管理模块,功能齐全,可以作为毕业设计,课程设计等.源码下载下来,进行一些简单的部署, ...
- ElasticSearch 精确查询统计
ElasticSearch 精确查询统计 match_phrase:短语匹配,不分词 GET logback-2022-08/_search { "size": 1, //显示1条 ...
- @Scheduled cron 定时任务表达式含义,及* ?的区别
好多网友对@Scheduled cron表达式含义做了阐述,个人认为很多对于 * ?的说明不够具体也不算准确,借此本文特别对 * ?做一下说明. cron格式:[秒数][分钟][小时][日期][月份] ...
- POJ 3259 Wormholes(bellman_ford、Floyd、SPFA判断负环)
POJ 3259 http://poj.org/problem?id=3259 题意: 农夫 FJ 有 N 块田地[编号 1...n] (1<=N<=500) 田地间有 M 条路径 [双向 ...
- 【每日一题】31.「土」秘法地震 (二维前缀和 / DP)
补题链接:Here 题意就是要找每一个 \(k * k\) 的小正方形里至少有一个1的数量 显然我们可以通过二维前缀和处理出(1, 1) 到 (n, m) 的数量 然后通过枚举处理出答案,具体思想是容 ...