CSS3 词条目录
前端Wiki/CSS3/进阶/动画 animation

实战加载动画

加载动画是 animation 最经典的练手场景。做一个「三点跳动」加载器,只靠三个圆点和错开的延迟:

  • 三个点共用同一套跳跃剧本,各自加 animation-delay: 0 / .15s / .3s,错峰形成波浪感。
  • 剧本里同时动 transform(上跳)和 opacity(变淡),由合成器渲染,性能无忧。
  • 容器悬停时 animation-play-state: paused 演示暂停控制。

再叠加一个旋转圆环的思路:一个带透明缺口的圆环无限 rotate,就是「spinner」。两种加载器合起来,覆盖了 delay 错峰与无限旋转两个最常用的动画模式,稍加改造就能用在真实项目的加载状态里。

本节要点错峰动画的核心是各元素不同 animation-delay;translateY + opacity 组合性能最佳;旋转 spinner 用 infinite rotate;暂停用 play-state。
CSS
<style>
  .loader {
    display: inline-flex; gap: 8px;
    padding: 14px;
  }
  .dot {
    width: 12px; height: 12px;
    border-radius: 50%;
    background: #39c5cf;
    animation: jump 0.9s ease-in-out infinite;
  }
  /* 三个点依次延迟,形成波浪 */
  .dot:nth-child(2) { animation-delay: .15s; }
  .dot:nth-child(3) { animation-delay: .3s; }
  @keyframes jump {
    0%, 100% { transform: translateY(0); opacity: .4; }
    50%      { transform: translateY(-12px); opacity: 1; }
  }
  .ring {
    width: 32px; height: 32px;
    border: 4px solid #b2ebf2;
    border-top-color: #39c5cf; /* 缺口高亮 */
    border-radius: 50%;
    animation: spin 1s linear infinite;
  }
  @keyframes spin { to { transform: rotate(360deg); } }
</style>
<div class="loader">
  <span class="dot"></span><span class="dot"></span><span class="dot"></span>
</div>
<div class="ring"></div>