Css动画实例教程(part 1)

461 阅读1分钟

假设我想想做下图这样的动画

观察动画得出结论

  1. 透明度在变化(opacity)
  2. 上下位置在变化(transform)
  3. 三个圆点动画存在“时差”(animation-delay)
  4. 动画不断循环,且如丝般顺滑(alternate)

初始化

  1. 定义三个div
<div class="bouncing-loader">
  <div></div>
  <div></div>
  <div></div>
</div>
  1. 初始化状态
.bouncing-loader {
  display: flex;
  justify-content: center;
}
.bouncing-loader > div {
  width: 1rem;
  height: 1rem;
  margin: 3rem 0.2rem;
  background: #8385aa;
  border-radius: 50%;
}

此时三个球球长这样

定义动画关键帧

告诉元素该怎么动!

@keyframes  keyname{
 from{
  }
  to {
    opacity: 0.1;
    transform: translate3d(0, -1rem, 0);
  }
}

2、使用定义好的动画关键帧

  1. 使用定义好的动画关键帧,设置动画时间,动起来!
.bouncing-loader > div {
  width: 1rem;
  height: 1rem;
  margin: 3rem 0.2rem;
  background: #8385aa;
  border-radius: 50%;
  animation: bouncing-loader 0.6s;
}

注意:看到不断在循环是因为动图在循环播放实际动画只动了一次

  1. 差点啥?

  animation: bouncing-loader 0.6s infinite alternate;

  1. 最后加入时差

第二个慢点,第三个再慢点

.bouncing-loader > div:nth-child(2) {
  animation-delay: 0.2s;
}
.bouncing-loader > div:nth-child(3) {
  animation-delay: 0.4s;
}