又一个css3 loading 打转的圆
2018-12-16 本文已影响17人
kerush
前端入坑纪 52
上回写过一篇《一直打转的圆圈》的css3 loading 效果,用的是障眼法.
今天来分享真正的环形圆圈来做, 其实是border啦,哈哈
好,详解如下!
OK,first things first! github项目地址
![](https://img.haomeiwen.com/i4732938/b28c17819d2037e2.png)
HTML 结构
<div class="circle"></div>
就是只用一个div, 任性不, O(∩_∩)O哈哈~
CSS 结构
body{
background-color: aliceblue;
}
.circle{
border: 8px solid rgba(218, 141, 218, 0.5);
border-radius: 50%;
position: relative;
width: 0;
height: 0;
padding: 25%;
margin:22% auto;
}
.circle::after{
content: "";
display: block;
border-radius: 50%;
width: 100%;
height: 100%;
position:absolute;
top: -8px;
left: -8px;
border: 8px solid;
border-color: transparent;
border-left-color:yellow;
animation:roller 2s infinite linear;
}
@keyframes roller {
0%{
transform:rotateZ(0)
}
100%{
transform:rotateZ(360deg)
}
}
简单阐述下原理:
1.首先div.circle, 用padding撑开成正方形,然后用border-radius:50%变成圆形.
2.同样把div.circle::after这个伪元素也做成圆形.
3.使用绝对定位,让两个圆重叠, 只给边框加不同颜色,以此区别.
4.给伪元素添加animation的动画, 大功告成!
Ps: 由于是用border来模拟环形,所以这个效果的缺陷就是圆弧的长度只能限制在1/4, 2/4, 3/4圆
好了,到此,本文告一段落!感谢您的阅读!祝你身体健康,阖家幸福!
打开支付宝首页搜 625097528 领红包,领到大红包的小伙伴赶紧使用哦!
![](https://img.haomeiwen.com/i4732938/7e559449514cec66.jpg)