animation实现loading

63 阅读1分钟

视频地址:点此查看

上期我们浅学了一下cssanimation

这个视频我们使用animation属性做一个loading效果

首先看一下这段代码

.spinner{
  width: 60px;
  height: 60px;
  position: relative;
  margin: 100px auto;
}
.spinner div{
  background-color: #67cf22;
  border-radius: 50%;
  position: absolute;
  top: 0px;
  left: 0px;
  right:0px;
  bottom: 0px;
}

<div class="spinner">
  <div></div>
  <div></div>
</div>

这段代码很简单

一个父div里面两个子div

父div设置成60像素正方形

并且相对定位

让他在页面水平居中

然后给子设置绝对定位铺满父级

是一个绿色的圆形

效果是这样的

接下来我们要让它动起来

首先需要定义动画规则

@keyframes loading{
  0%,100% {transform: scale(0);}
  50% {transform: scale(1);}
}

我们定义了一个名为loading的动画规则

然后将这个动画规则作用于子div上

animation: loading 2.0s infinite ease-in-out;

设置完成这段动画需要2秒

动画周期循环

动画速度由低速开始和结束

这个时候我们可以发现他已经可以动起来了

但是发现没有层次感

毕竟我们两个子级

这样就没有体现出来两个子级的效果

我们为第二个子元素设置一个动画延迟

.spinner div:nth-child(2){
  animation-delay: -1s;
}

这样看起来好像是正常了

然后我们给子元素设置个透明度(opacity)就一目了然了

opacity: .6;

最后希望这个视频能对你有所帮助