其他
创建持续循环动画时:用迪士尼12原则和性能规则做出无缝…
适用于加载 spinner、脉冲指示器、环境运动、背景效果等需要无限重复的动画。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
创建持续循环动画时:用迪士尼12原则和性通用
解决思路
- 对永不停止的动画应用迪士尼12条动画原则。
- Squash & Stretch:用细微缩放振荡(0.98–1.02)制造有机呼吸感,避免僵硬机械循环。
- Anticipation:把预备动作构建进循环周期,在极值处短暂停顿后再反向。
- Staging:循环应支持而非主导画面;背景元素保持细微振幅。
- Straight Ahead vs Pose-to-Pose:设计可无缝循环的关键帧姿态,结束帧必须自然流入起始帧。
- Follow Through & Overlapping:多部件循环让各元素处于不同相位;三个点脉冲使用 120° 相位偏移。
- Slow In/Slow Out:对平滑振荡使用 ease-in-out;线性运动会显得机械。
- Arcs:圆周运动遵循真实弧线;spinner 旋转、pendulum 摆动、orbits 绕圈。
- Secondary Action:主旋转叠加次级摆动;spinner 旋转时轻微弹跳。
- Timing:快速循环 500–800ms(spinners、urgent indicators);中等循环 1000–2000ms(pulsing、breathing);慢速循环 2000–4000ms(ambient、background)。
- Exaggeration:循环中尽量少用夸张——重复本身已经足够吸引注意。
- Solid Drawing:循环必须无缝;结束与开始之间任何跳变都会破坏错觉。
- Appeal:循环应令人着迷而非烦人;在 30 秒时测试是否仍然舒适。
- Spinner:时长 600–800ms,easing 用 linear(rotation),iterations 为 infinite。
- Pulse:时长 1500–2000ms,easing 用 ease-in-out,iterations 为 infinite。
- Skeleton Shimmer:时长 1500ms,easing 用 ease-in-out,iterations 为 infinite。
- Typing Dots:时长 1400ms,easing 用 ease-in-out,iterations 为 infinite。
- Breathing:时长 3000–4000ms,easing 用 ease-in-out,iterations 为 infinite。
- Floating:时长 3000–5000ms,easing 用 ease-in-out,iterations 为 infinite。
- Smooth spinner:.spinner { animation: spin 700ms linear infinite; };@keyframes spin { to { transform: rotate(360deg); } }。
- Organic pulse:.pulse { animation: pulse 2000ms ease-in-out infinite; };@keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } }。
- Staggered dots:.dot { animation: bounce 1400ms ease-in-out infinite; };.dot:nth-child(2) { animation-delay: 160ms; };.dot:nth-child(3) { animation-delay: 320ms; }。
- 性能规则:仅使用 transform 和 opacity,不使用布局属性。
- 性能规则:对超过 1 秒的循环添加 will-change: transform。
- 性能规则:用 Intersection Observer 暂停屏幕外循环。
- 性能规则:尊重 prefers-reduced-motion,减少或停止循环。
- 无缝循环公式:对 breathing/pulsing,0%, 100% 关键帧必须完全相同;使用 alternate 方向实现更简单的 ping-pong 效果。
适用边界 · 注意事项
- 不适用于一次性、非重复的动画,如入场、退场、一次性状态切换。
- 不适用于需要强烈主导用户注意力的前景元素;循环应支持而非主导画面。
- 当无法尊重 prefers-reduced-motion 或页面性能预算极低、必须避免持续动画时,不适用。