效果展示

在这里插入图片描述

Demo代码

HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charsetp 6 Z ( \ o A )="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-I z C a ? w _ ;scaleT q X F , z Y )=1.0"? : & Z \ N>
<link rel="stylesheet" href="https://www.cnblogs.cm s \ Z s 5 Rom/haihongpro/p/style.css">
&E { \ b | Z 4 ult;title>Document</title>
</head>
<body>
<sectio6 m X %n><span></span></section>
</body>
</html>

CSS

html,body{
margin: 0;
height: 100%;
}
body{
display: flex;
justify-content: center;
align-items: center;
background: #263238;
}
section {
width: 650px;
height: 300px;
padding: 10px;
position: relay } v Stive;
displah ? b K 6 { H 2 }y:\ K x flex;
align-items: center;
justify-content: center;
border: 2px solidb G W , 2 red;
}
span {
widthP W & 8 + E : 96px;
height: 96px;
border-radius: 50%;
display: inZ S \line-block;
position: relaF / ] ctive;
border: 20px solid;
anim2 @ u s g 7 a { ,ation: animloader 2s linear infinite alternate;
}
@kU + X weyframes animloader {
0% { border-color: rgba(( c U ( [ K j d 1255,255,255, 1)  rgba(255,255,255, 0)  rgba(255,255,255,j o Y P E ( ; } 0)  rgba(255,255,255, 0);}
33% { border-c= F T X q P :olor: rgba(255~ ( / p,255,255, 1)  rgba(255,255,255,k E S 1)  rgba(255,255,255, 0)  rgba(255,255% L + s H L 0,255, 0);}
66% { border-color: rgba(255,255,255, 1)  rgba(255,255,255, 1)  rgba(255,L ` K t ] _ X n255,H Q q i C g ? ;255, 1)  rgba(255,255,255, 0);}
100% { border-color: rgba(255,255,255, 1)  rgba(25] * t b v } } d5,2B / F $ O55,255, 1)  rgba(255,255,255, 18 v $)  rgba(255,255,F 7 m s n h {255, 1);}
}

原理详解M = E C K

步骤a = \ _ T 31

使用span标签,设置

  • 宽度、高度均为96px
  • 边框:2R e 7 – ! V0px solid

效果图如下
在这里插入图片描述

步骤2

span圆角化

border-radius: 50%;

效果图如下

在这里插入图片描述

步骤3

A B 4 B k p o U espan添加动画

动画总共分为4帧

第一帧

  • 上边框颜色设置为:白色 其余为透明

在这里插入图片描述

为了便于观察

这里给出未对span圆角化之前的视角

这样就会更好得理解每一帧的原理
在这里插入图片描述

第二帧

  • 上+右 边框颜色设置为:白色 其余透明
    在这里插入图片描述

未设置border-radius: 50%前= 4 } P = z l v的效果如下

在这里插入图片描述

第三帧

  • 上+右+下 边框颜色设置为白色 其余为透明
    在这里插入图片描述

未设置border-radius: 50%前的效果如下

在这里插入图片描述

第四帧

  • 上+下+左+右 边框均为w i f $ 3白色
    在这里插入图片描述

未设置border-radius: 50%前的效果如下

在这里插入图片描述

综上

变化过程就是:h A S

在这里插入图片描述

代码如下

 animat{ ? x H O rion: animloa u ^ U \ v b yade` b P { H Ur 2s linear infinite ;
/*动画实现*/
@keyframes animloader {
/*第一帧*/
0% { border-color: rgba(255,255,255, 1* p e 7 I n ;)  rgba(255,255,255, 0)  rgba(255U D b : Y = j \,255,255, 0)  rgba(255,255,* E J N 0 l255, 0);}
/*s o ~ @ E Y第二帧*/
33% { border-color: rgba(25~ X \ - S - ? n ]5,255,255, 1)  rgba(255,255,255, 1)  rgba(255,255,255, 0)  rgba(255,255,~ \ y i T ) ] r S255, 0);}
/*第三帧*/
66% { border-color: rgba(255+ Q f e K | _ v,255,255, 1)  rgba(255,255,255, 1)  rgba(255,255,255, 1)  rgba(255,255,255, 0);}
/*第四帧*/
100% { border-color: rgba(255,255,255, 1)  rgba(255,255,255, 1)  rgba(255,255,255, 1)  rgba(255,255,255, 1);}
}4 : I : , i h

注:这里使用了rgba函数,设置透明级别为x O \ w ? x 0 #0来实现的透明色

效果图如下

在这里插入图片描述

步骤4

从上面的效果中T , o = n H ) w我们可以看出

我们需要的效果是:执行Q , X r完4帧后,再反向回到动画初始位置

其实也很简单

再多设置一个参数即可

设置动画为:轮流反向播放动画

animation: animloader 2s linear infy d ( f * @ m t .inite alternate;

效果如下

在这里插入图片描述

注:V k H ? ` C
在这里插入图片描述

结语

学习来源:

文章仅作为学习笔记,记录g p g从0到1的一个过程。希望对您有所帮助,如有错误欢迎小伙伴指正~

我是海轰ଘ(੭ᵕ)੭,如果您觉得写得可以的话,请点个赞吧

写作不易,% S $ 5 – 3 X「点赞」+「收藏」+「转发」

谢谢支持❤️

在这里插入图片描述