page-transitions
Use when implementing route changes, view transitions, modal opens/closes, or navigation animation in web and mobile applications.
How do I install this agent skill?
npx skills add https://github.com/dylantarre/animation-principles --skill page-transitionsIs this agent skill safe to install?
- Gen Agent Trust Hubpass
This skill provides educational guidelines and code snippets for implementing user interface animations and transitions. It does not perform any network operations, access sensitive files, or execute external code.
- Socketpass
No alerts
- Snykpass
Risk: LOW · No issues
- Runlayerwarn
1/1 file flagged
- ZeroLeakspass
Score: 93/100 · 2 sections analyzed
What does this agent skill do?
Page Transition Animation
Apply Disney's 12 animation principles to route changes, view transitions, and navigation patterns.
Quick Reference
| 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 |
Principle Applications
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.
Transition Patterns
Crossfade (Default)
.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;
}
Slide (Hierarchical)
/* 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%);
}
Shared Element (Hero)
// 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;
}
Timing Reference
| 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 |
Navigation Patterns
| 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 |
Performance
- Use
transformandopacityonly - Hardware acceleration:
will-change: transform - Reduce motion: instant transitions
- Test on slow devices—transitions must not block
- View Transitions API: native performance
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/dylantarre/animation-principles/page-transitions">View page-transitions on skillZs</a>