关于 transition-sequences
这是一项设计技能,运用 Disney 的 12 项动画原则规划多步骤 UI 动效,并为设计师和开发者提供时序建议与实现模式。
主要功能
- 01将 12 项动画原则用于序列动效
- 02按序列类型提供时序建议
- 03展示 CSS 错开动画与 JavaScript 延迟模式
- 04建议减少动态效果与跳过选项
适用场景
- 01编排页面或模态框过渡
- 02错开引导流程中的元素动画
- 03检查序列时序与动态效果无障碍性
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ dylantarre/ animation-principles --skill transition-sequences安装后在 Claude Code 中输入/transition-sequences确认已加载。
详细介绍
转场序列动画
将迪士尼的 12 条原则应用于编排式多步骤动效。
原则应用
挤压与拉伸:序列中的每个元素都可以独立压缩或拉伸,营造自然的感觉。
预备动作:序列以准备阶段开始。在动作开始前稍作停顿或蓄势。
舞台调度:通过序列引导注意力。让最重要的元素先动或最后动。
连续动作与关键姿势:为每个步骤规划关键帧。实现前先规划完整序列。
跟随动作与重叠动作:元素不会同步移动。错开 50-100ms 开始,让动作层层传递。
慢入慢出:每个步骤都要有缓动,整个序列也应如此——中间较快,两端较慢。
弧线运动:跨越空间的转场应沿弧线运动。例如,页面向左滑动时应略带弧度,而非直线滑动。
次要动作:主要转场搭配次要细节。页面滑动的同时,内部元素淡入或缩放。
时长:
- 步骤重叠:占前一步时长的 30-50%
- 序列总时长:UI 为 300-800ms,戏剧性场景最长可达 1500ms
- 步骤间隔:0-100ms(优先重叠)
夸张:序列本身就是一种夸张。单个步骤应保持细微。
扎实绘制:保持空间一致性。如果 A 向左移动,B 就应从左侧进入。
吸引力:序列应讲述一个故事,有令人满意的开始、中间和结尾。
时长建议
| 序列类型 | 总时长 | 步骤数 | 步骤重叠 |
|---|---|---|---|
| 标签页切换 | 300ms | 2 | 50% |
| 页面转场 | 500-600ms | 2-3 | 30% |
| 模态框打开 | 400ms | 3 | 40% |
| 向导步骤 | 400ms | 2 | 50% |
| 引导流程 | 800-1200ms | 4-6 | 30% |
| 戏剧性揭示 | 1000-1500ms | 5-8 | 40% |
实现模式
/* Staggered sequence */
.sequence-item {
opacity: 0;
transform: translateY(20px);
animation: reveal 400ms ease-out forwards;
}
.sequence-item:nth-child(1) { animation-delay: 0ms; }
.sequence-item:nth-child(2) { animation-delay: 80ms; }
.sequence-item:nth-child(3) { animation-delay: 160ms; }
.sequence-item:nth-child(4) { animation-delay: 240ms; }
@keyframes reveal {
to {
opacity: 1;
transform: translateY(0);
}
}
/* Page transition choreography */
.page-exit {
animation: page-out 250ms ease-in forwards;
}
.page-enter {
animation: page-in 300ms ease-out 200ms forwards;
}
@keyframes page-out {
to { opacity: 0; transform: translateX(-30px); }
}
@keyframes page-in {
from { opacity: 0; transform: translateX(30px); }
to { opacity: 1; transform: translateX(0); }
}
序列编排公式
// Calculate stagger delays
const items = document.querySelectorAll('.sequence-item');
const totalDuration = 600; // ms
const overlap = 0.4; // 40% overlap
items.forEach((item, index) => {
const stepDuration = totalDuration / items.length;
const delay = index * stepDuration * (1 - overlap);
item.style.animationDelay = `${delay}ms`;
});
关键规则
- 步骤重叠 30-50%——不要留空隙,也不要同时开始
- 功能性 UI 的序列总时长不超过 800ms
- 以 0.5 倍速测试,验证编排效果
- 对超过 500ms 的序列提供跳过选项
prefers-reduced-motion:立即切换状态,不播放序列
评论
支持 Markdown