今天看到一个加载动画的效果,感觉不错也是仿写了一下。最后效果如图
html的结构也很简单
<div class="load">
<span>Loading....</span>
</div>
这里说一下,一开始我是用了三个div只设置上边框并调整位置实现了这个效果。后来也是参考了B站一个up的方法,使用伪元素通过css的方式添加空内容,给上边框,如图
.load::before,.load::after{
content: '';
position: absolute;
width: 200px;
height:200px;
border-radius: 50%;
}
这里有基础的同学应该会想到我们解决高度塌陷和外边距重叠也是用的这种方法。
也是感慨自己经验不足,还需要多加练习,灵活运用所学知识。
下面是css部分的源码,经验不足可能不够精简,可以自行优化。
* {
margin: 0;
padding: 0;
}
body{
height: 100vh;
display:flex ;
justify-content: center;
align-items:center ;
background-color: rgba(33, 31, 161, 0.788);
}
@keyframes a1{
/* from{
transform: rotate (0deg);
} */
to{
transform: rotate(360deg);
}
}
@keyframes a2 {
to{
transform: rotate(-360deg);
}
}
.load{
width: 200px;
height:200px;
box-sizing: border-box;
/* margin: 200px auto; */
border-top: 10px solid red;
border-radius: 50%;
position: absolute;
animation: a1 infinite 2s linear;
}
.load::before,.load::after{
content: '';
position: absolute;
width: 200px;
height:200px;
border-radius: 50%;
}
.load::before{
transform: rotate(120deg);
border-top: 10px solid aqua;
left: 1px;
top: -10px;
}
.load::after{
transform: rotate(240deg);
border-top: 10px green solid;
left: -3px;
top: -10px;
}
span{
position: absolute;
top: 65px;
left: 15px;
font-family: 'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif;
font-size: x-large;
animation: a2 infinite 2s linear;
}