直接上代码:
HTML部分
html
<div id="app">
<div class="loaderContainer">
<div class="loaderContainer__icon"></div>
<p class="loaderContainer__text">加载中...</p>
</div>
</div>
CSS部分
css
html,
body,
#app {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 100%;
}
.loaderContainer {
display: flex;
flex-direction: column;
align-items: center;
.loaderContainer__icon {
width: 42px;
height: 42px;
color: #0057ff;
border-radius: 50%;
border: 3px solid #0057ff;
border-top-color: #ffffff;
animation: spin 1s infinite linear;
background-color: transparent;
}
.loaderContainer__text {
margin-top: 10px;
font-size: 14px;
color: #0057ff;
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
核心思想:
1,使用一个div,设置宽高相等、再设置border-radius为50%,形成一个圆;
2,通过border给圆的边框设置宽度和颜色,并通过border-top-color设置和当前背景色一致,实现有缺口的视觉效果。
3,将圆的background-color设置为transparent透明,形成一个空心的圆环。
4,定义spin动画,使圆环旋转,实现加载的视觉效果