切换·Esc 返回

动画Animation

视觉效果与操作状态
用多个阶段编排一段完整动作

动画通过关键帧控制加载、入场和连续状态等多阶段变化。简单的悬停和选中反馈通常用过渡 Transition就够了;循环或大幅运动要克制,并尊重减少动态效果设置。

0%50%100%@keyframes 定义节点,浏览器补齐中间

什么时候用

  • 加载类循环进度条 Progress骨架屏 Skeleton 的呼吸与转动
    加载中,请稍候…
  • 关键帧编排:把一段完整动作拆成节点,浏览器补齐中间
    0%50%100%
    把动作拆成关键帧,浏览器补齐中间
  • 入场编排:多个元素用 delay 依次出场,有节奏感
    123
  • 状态切换用过渡 Transition,自主播放的多阶段动作再用动画
    悬停变色transition
    加载呼吸animation
    状态切换 vs 自主播放,各司其职

什么时候不用

  • 循环动画滥用:满屏都在动,晃眼又廉价
  • 简单悬停效果不必使用关键帧,过渡就能完成
    悬停变色@keyframes
    一个 hover 也写关键帧,大材小用
  • 忘了 fill-mode: forwards:播完跳回第一帧,前功尽弃
    忘了 fill-mode: forwards,播完跳回第一帧
  • 响应 prefers-reduced-motion,减少用户不需要的动画
    减弱动态效果
    用户开了减弱,动画照播不误
组成结构 · Anatomy
0%100%2sease-in-outinfinite ⟳
1关键帧Keyframes动作的节点,中间帧由浏览器补齐
2时长Duration完整播一遍要多久
3速度曲线Timing每一帧之间的快慢,见缓动
4播放次数Iteration1 次入场,infinite 循环
常见变体 · Variants
一次性Once
入场编排,播完停在末帧
无限循环Infinite
加载、呼吸等持续状态
交替往返Alternate
摆动闪烁这类往复动作
典型使用场景
骨架屏呼吸循环
@keyframes 呼吸:透明度 0.4 ↔ 1 循环,告诉用户“正在加载”
加载指示器旋转
AI 助手
正在生成回复,大约需要 5 秒…
animation: rotate 0.8s infinite,一直转到数据回来
页面入场编排
访问量
12,480
▲ 8.2%
新用户
326
▲ 3.1%
转化率
4.6%
▼ 0.4%
delay 0msdelay 100msdelay 200ms
animation-delay 依次入场,页面有节奏地“亮”起来
一次性强调闪烁
小狐狸 回复了你:这个动效太顺滑了!
机器人助理 赞了你的文章
1 小时前
背景高亮闪一次 停在末帧,不循环