page-transitions by dylantarre/animation-principles
npx skills add https://github.com/dylantarre/animation-principles --skill page-transitions将迪士尼的 12 条动画原则应用于路由变更、视图过渡和导航模式。
| 原则 | 页面过渡实现 |
|---|---|
| 挤压与拉伸 | 进入页面的弹性效果 |
| 预备动作 | 进入前先执行退出动画 |
| 演出布局 | 英雄元素连接视图 |
| 连续动作与姿态对应 | 共享元素过渡与交叉淡出 |
| 跟随与重叠动作 | 导航后内容稳定下来 |
| 慢入慢出 | 非对称的进入/退出缓动效果 |
| 弧形运动 | 带曲线的滑动过渡 |
| 次要动作 | 背景、导航状态变化 |
| 时间节奏 | 总过渡时间 200-500 毫秒 |
| 夸张手法 | 留待强调时刻使用 |
| 扎实的描绘 | 一致的空间模型 |
| 吸引力 | 流畅、有导向的导航 |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
挤压与拉伸:进入的页面可以有轻微的弹性稳定效果。模态表单在完全打开时轻微弹跳。拉动导航在触发前会有拉伸效果。
预备动作:当前页面在新页面进入前开始退出。轻微的淡出或缩放效果为变更做准备。导航指示器在页面切换前更新。
演出布局:共享/英雄元素在视图间保持上下文。公共元素(导航栏、页脚)保持稳定。新的内容区域获得过渡焦点。
连续动作与姿态对应:共享元素过渡连续变形(连续动作)。交叉淡出在离散状态间切换(姿态对应)。根据内容关系选择。
跟随与重叠动作:页面内容在初始定位后稳定下来。交错的内容进入——先是页眉,然后是主体,最后是页脚。图片在容器之后以微妙的淡入效果加载。
慢入慢出:退出:缓入(加速离开)。进入:缓出(减速进入)。组合:共享元素使用缓入缓出。切勿使用线性过渡——感觉不自然。
弧形运动:滑动过渡可以略微弯曲。堆叠导航暗示了 z 轴深度。圆形揭示从触发点展开。
次要动作:页眉在过渡期间更新标题。底部导航指示器移动。背景颜色变化。滚动位置随过渡重置。
时间节奏:快速过渡:200-300 毫秒。标准:300-400 毫秒。复杂:400-500 毫秒。模态/表单:250-350 毫秒。返回导航通常比前进导航更快。
夸张手法:将夸张效果留待关键时刻使用——如新手引导、成就达成。常规导航应流畅,而非戏剧化。用户频繁导航。
扎实的描绘:保持一致的视觉空间隐喻。如果页面堆叠,保持 z 轴顺序。如果页面滑动,方向应保持一致。用户从过渡中构建心智模型。
吸引力:过渡应感觉有帮助,而非令人印象深刻。快速、流畅、有导向。用户应理解他们来自何处以及去向何方。
.page-exit {
opacity: 1;
}
.page-exit-active {
opacity: 0;
transition: opacity 200ms ease-in;
}
.page-enter {
opacity: 0;
}
.page-enter-active {
opacity: 1;
transition: opacity 200ms ease-out;
}
/* 前进导航 */
.page-enter {
transform: translateX(100%);
}
.page-enter-active {
transform: translateX(0);
transition: transform 300ms ease-out;
}
.page-exit-active {
transform: translateX(-30%);
transition: transform 300ms ease-in;
}
/* 返回导航 - 反向 */
.page-enter {
transform: translateX(-30%);
}
.page-exit-active {
transform: translateX(100%);
}
// View Transitions API
document.startViewTransition(() => {
updateDOM();
});
// CSS for specific element
.hero-image {
view-transition-name: hero;
}
::view-transition-old(hero),
::view-transition-new(hero) {
animation-duration: 300ms;
}
| 过渡类型 | 持续时间 | 退出 | 进入 |
|---|---|---|---|
| 交叉淡出 | 200-300ms | ease-in | ease-out |
| 向前滑动 | 300-400ms | ease-in | ease-out |
| 向后滑动 | 250-350ms | ease-in | ease-out |
| 模态打开 | 250-350ms | — | ease-out |
| 模态关闭 | 200-300ms | ease-in | — |
| 共享元素 | 300-400ms | n/a | ease-in-out |
| 标签切换 | 150-200ms | instant | ease-out |
| 模式 | 过渡 | 方向 |
|---|---|---|
| 向下钻取(列表→详情) | 向左滑动 / 共享元素 | 右 = 前进 |
| 标签栏 | 淡入淡出 / 滑动 | 水平 |
| 底部表单 | 向上滑动 | 垂直 |
| 模态 | 缩放 + 淡入淡出 | Z 轴 |
| 返回按钮 | 前进的反向 | 左 = 返回 |
transform 和 opacitywill-change: transform每周安装量
78
代码仓库
GitHub 星标数
20
首次出现
2026 年 1 月 24 日
安全审计
安装于
codex68
opencode66
gemini-cli65
cursor62
github-copilot59
claude-code55
Apply Disney's 12 animation principles to route changes, view transitions, and navigation patterns.
| Principle | Page Transition Implementation |
|---|---|
| Squash & Stretch | Entering page elastic effect |
| Anticipation | Exit animation before enter |
| Staging | Hero elements bridge views |
| Straight Ahead / Pose to Pose | Shared element vs crossfade |
| Follow Through / Overlapping | Content settles after nav |
| Slow In / Slow Out | Asymmetric enter/exit easing |
| Arc | Slide transitions with curve |
| Secondary Action | Background, nav state changes |
| Timing | 200-500ms total transition |
| Exaggeration | Reserved for emphasis moments |
| Solid Drawing | Consistent spatial model |
| Appeal | Smooth, oriented navigation |
Squash & Stretch: Incoming pages can have subtle elastic settle. Modal sheets bounce slightly on full open. Pull-to-navigate stretches before triggering.
Anticipation : Current page begins exit before new page enters. Slight fade or scale prepares for change. Navigation indicator updates before page swaps.
Staging : Shared/hero elements maintain context across views. Common elements (nav, footer) stay stable. New content area receives transition focus.
Straight Ahead vs Pose to Pose : Shared element transitions morph continuously (straight ahead). Crossfades swap between discrete states (pose to pose). Choose based on content relationship.
Follow Through & Overlapping: Page content settles after initial position. Staggered content entry—header, then body, then footer. Images load with subtle fade after container.
Slow In / Slow Out : Exit: ease-in (accelerate away). Enter: ease-out (decelerate in). Combined: ease-in-out for shared elements. Never linear—feels broken.
Arc : Slide transitions can curve slightly. Stack navigation implies z-depth. Circular reveals expand from trigger point.
Secondary Action : Header updates title during transition. Bottom nav indicator moves. Background color shifts. Scroll position resets with transition.
Timing : Quick transitions: 200-300ms. Standard: 300-400ms. Complex: 400-500ms. Modal/sheet: 250-350ms. Back navigation often faster than forward.
Exaggeration : Save exaggeration for key moments—onboarding, achievement. Regular navigation should be smooth, not theatrical. Users navigate frequently.
Solid Drawing : Maintain consistent spatial metaphor. If pages stack, maintain z-order. If pages slide, direction should be consistent. Users build mental model from transitions.
Appeal : Transitions should feel helpful, not impressive. Fast, smooth, oriented. Users should understand where they came from and went to.
.page-exit {
opacity: 1;
}
.page-exit-active {
opacity: 0;
transition: opacity 200ms ease-in;
}
.page-enter {
opacity: 0;
}
.page-enter-active {
opacity: 1;
transition: opacity 200ms ease-out;
}
/* Forward navigation */
.page-enter {
transform: translateX(100%);
}
.page-enter-active {
transform: translateX(0);
transition: transform 300ms ease-out;
}
.page-exit-active {
transform: translateX(-30%);
transition: transform 300ms ease-in;
}
/* Back navigation - reversed */
.page-enter {
transform: translateX(-30%);
}
.page-exit-active {
transform: translateX(100%);
}
// View Transitions API
document.startViewTransition(() => {
updateDOM();
});
// CSS for specific element
.hero-image {
view-transition-name: hero;
}
::view-transition-old(hero),
::view-transition-new(hero) {
animation-duration: 300ms;
}
| Transition Type | Duration | Exit | Enter |
|---|---|---|---|
| Crossfade | 200-300ms | ease-in | ease-out |
| Slide forward | 300-400ms | ease-in | ease-out |
| Slide back | 250-350ms | ease-in | ease-out |
| Modal open | 250-350ms | — | ease-out |
| Modal close | 200-300ms | ease-in | — |
| Shared element | 300-400ms | n/a | ease-in-out |
| Tab switch | 150-200ms | instant | ease-out |
| Pattern | Transition | Direction |
|---|---|---|
| Drill-down (list→detail) | Slide left / shared element | Right = forward |
| Tab bar | Fade / slide | Horizontal |
| Bottom sheet | Slide up | Vertical |
| Modal | Scale + fade | Z-axis |
| Back button | Reverse of forward | Left = back |
transform and opacity onlywill-change: transformWeekly Installs
78
Repository
GitHub Stars
20
First Seen
Jan 24, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
codex68
opencode66
gemini-cli65
cursor62
github-copilot59
claude-code55
agentation - AI智能体可视化UI反馈工具,连接人眼与代码的桥梁
5,400 周安装
阿里云AI音频TTS语音设计测试技能 - 最小可行性测试与验证指南
272 周安装
SwiftData 教程:iOS 17+ 原生持久化框架,与 SwiftUI 集成和 CloudKit 同步
275 周安装
阿里云AI语音TTS测试技能 - 最小可行测试验证与安装指南
274 周安装
阿里云DNS CLI测试指南:alicloud-network-dns-cli-test 安装与使用教程
273 周安装
网络小说大纲规划工具 - 从总纲到卷章细纲的AI辅助写作技能
71 周安装
阿里云 ECS 最小可行性测试 Skill - 自动化云服务 API 连通性验证工具
275 周安装