通常loading动画都是使用图片,其实简单的loading动画用css就可以完全做到。
先上代码
html
<div class="loading">
<div class="left"></div>
<div class="right"></div>
</div>
复制代码
css
.loading {
width: 100px;
height: 100px;
position: fixed;
display: flex;
border-radius: 50%;
overflow: hidden;
-webkit-mask: radial-gradient(transparent 55%, #000 55%);
animation: rotate 1s linear infinite;
}
.left {
width: 50%;
height: 100%;
background: linear-gradient(rgb(2, 211, 248), rgba(2, 211, 248, .5))
}
.right {
width: 50%;
height: 100%;
background: linear-gradient(rgba(0, 0, 0, 0), rgba(2, 211, 248, .5));
}
@keyframes rotate {
0% {
transform: rotateZ(0);
}
100% {
transform: rotateZ(360deg);
}
}
复制代码
最终效果
原理也很简单,就是利用css3渐变和mask遮罩,来制作这个效果。
首先使用线性渐变linear-gradient,左边半块从上到下,透明度1渐变到0.5,右边半块从上到下,透明度0渐变到0.5,大致是下面这个样子
利用这个原理,我们可以制作更多有趣的loading动画。
稍微改变一下,就会有各种效果
// .left
background: linear-gradient(rgb(255, 255, 255), rgb(0, 0, 0));
// .right
background: linear-gradient(rgb(255, 255, 255), rgb(0, 0, 0));
复制代码
// .left
background: linear-gradient(rgb(255, 0, 0), rgb(0, 255, 0) 33%, rgb(0, 255, 255) 66%, rgb(0, 0, 255) 100%);
// .right
background: linear-gradient(rgb(255, 0, 0), rgb(255, 0, 255) 50%, rgb(0, 0, 255), 100%);
复制代码
更多有趣的效果,需要自己去探索。