关于 loading-states
这是一项设计技能,运用 Disney 的 12 项动画原则制作传达系统活动状态的加载动画,并提供指示器、骨架屏和内容过渡的时序与实现建议。
主要功能
- 01将 12 项原则用于加载反馈
- 02提供不同加载类型的时序建议
- 03涵盖旋转指示器、进度条和骨架屏
- 04指导从加载状态过渡到内容
- 05建议减少动态效果时使用静态指示器
适用场景
- 01确定何时显示加载指示器
- 02设计与内容布局匹配的骨架屏
- 03避免加载结束后内容突兀出现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dylantarre/ animation-principles --skill loading-states安装后在 Claude Code 中输入/loading-states确认已加载。
详细介绍
加载状态动画
运用迪士尼的 12 条原则传达系统活动状态。
原则应用
挤压与拉伸:进度指示器可以通过脉动或呼吸效果展现活力。轻微地缩放摆动(0.98-1.02)。
预备动作:操作后立即显示加载状态。不要等到响应缓慢时才显示旋转指示器。
演出布局:加载指示器应出现在内容将要显示的位置。骨架屏应与最终布局一致。
逐帧动画与姿势动画:将加载设计为一系列阶段:即时显示指示器 → 显示进度 → 完成 → 显示内容。
跟随动作与重叠动作:内容进入时,加载状态逐渐淡出。转场重叠 100ms。
慢入慢出:已知百分比的进度条使用缓入缓出效果。无确定进度时使用平滑摆动。
弧形运动:圆形旋转指示器应沿真正的圆形路径运动。避免旋转卡顿。
次要动作:骨架屏闪烁效果 + 轻微脉动。多种信号共同强化“正在加载”的提示。
时间安排:
- 延迟 200ms 后显示旋转指示器(避免快速加载时闪现)
- 最短显示时间:500ms(避免突兀闪现)
- 骨架屏闪烁周期:1500-2000ms
夸张:保持克制——加载动画不应分散注意力,只需让用户安心。
立体造型:骨架屏应与内容比例一致。形状不匹配会破坏视觉效果。
吸引力:加载过程应让人感到乐观,而非枯燥。平滑的运动能传达进展。
时间建议
| 加载类型 | 显示延迟 | 最短显示时间 | 动画周期 |
|---|---|---|---|
| 旋转指示器 | 200ms | 500ms | 700-800ms |
| 进度条 | 0ms | - | 平滑填充 |
| 骨架屏 | 0ms | 500ms | 1500ms 闪烁 |
| 按钮旋转指示器 | 0ms | 400ms | 600ms |
| 整页加载 | 100ms | 800ms | 1000ms |
实现模式
/* Skeleton shimmer */
.skeleton {
background: linear-gradient(
90deg,
#e0e0e0 0%,
#f0f0f0 50%,
#e0e0e0 100%
);
background-size: 200% 100%;
animation: shimmer 1500ms ease-in-out infinite;
}
@keyframes shimmer {
0% { background-position: 200% 0; }
100% { background-position: -200% 0; }
}
/* Spinner with smooth rotation */
.spinner {
animation: spin 700ms linear infinite;
opacity: 0;
animation: fade-in 200ms 200ms ease-out forwards, spin 700ms linear infinite;
}
/* Progress bar with easing */
.progress-fill {
transition: width 300ms cubic-bezier(0.4, 0, 0.2, 1);
}
从加载到内容的转场
.content-enter {
animation: content-reveal 300ms ease-out forwards;
}
@keyframes content-reveal {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
关键规则
- 延迟 200ms 显示旋转指示器,避免闪现
- 显示后至少保持加载状态 500ms
- 骨架屏形状必须与实际内容尺寸一致
- 从加载状态平滑过渡到内容——绝不能突然切换
- 遵循
prefers-reduced-motion——改为显示静态指示器
评论
支持 Markdown