home / skills / dylantarre / animation-principles / motion-sickness
This skill helps you prevent motion sickness in animations by applying Disney's principles to minimize dizzying effects across UI interactions.
npx playbooks add skill dylantarre/animation-principles --skill motion-sicknessReview the files below or copy the command above to add this skill to your agents.
---
name: motion-sickness
description: Use when animation causes dizziness, nausea, disorientation, or vestibular discomfort
---
# Motion Sickness Prevention
Eliminate vestibular triggers using Disney's principles safely.
## Problem Indicators
- Users report dizziness or nausea
- Disorientation during navigation
- Users avoid certain features
- Complaints increase with larger screens
- Parallax or zoom effects cause issues
## Dangerous Patterns
These trigger vestibular responses:
- Large-scale zoom animations
- Parallax scrolling (especially multi-layer)
- Full-screen rotations
- Rapid direction changes
- Continuous/looping background motion
- Scroll-jacking
## Diagnosis by Principle
### Exaggeration
**Issue**: Over-dramatic motion
**Fix**: Reduce scale of transforms. Max 10-20% size change. Avoid full-screen zooms.
### Arcs
**Issue**: Curved paths cause tracking strain
**Fix**: Use linear motion for functional UI. Save arcs for small, optional elements only.
### Follow Through
**Issue**: Overshooting creates whiplash effect
**Fix**: Remove bounce/overshoot from navigation. Use critically damped springs or ease-out.
### Secondary Action
**Issue**: Multiple moving elements cause confusion
**Fix**: Limit to one primary motion. Remove parallax layers.
### Slow In and Slow Out
**Issue**: Acceleration patterns cause disorientation
**Fix**: Use consistent, predictable easing. Avoid sudden speed changes.
## Quick Fixes
1. **Respect `prefers-reduced-motion`** - Non-negotiable
2. **Remove parallax effects** - Common trigger
3. **Avoid zoom transitions** - Use fades instead
4. **Keep motion small** - Under 100px movement
5. **No scroll-jacking** - Let scroll be scroll
## Troubleshooting Checklist
- [ ] Does animation respect `prefers-reduced-motion`?
- [ ] Is any element moving more than 100px?
- [ ] Are there any zoom effects?
- [ ] Is parallax present? Remove it.
- [ ] Are there continuous/looping animations?
- [ ] Can users pause or disable motion?
- [ ] Test on large display (motion amplified)
- [ ] Test for 5+ minutes continuously
## Safe Alternatives
| Triggering | Safe Alternative |
|------------|------------------|
| Zoom transition | Fade + slight scale (max 5%) |
| Parallax scroll | Static or single-layer |
| Rotation | Fade or slide |
| Bounce/spring | Ease-out (no overshoot) |
| Full-page slide | Crossfade |
## Code Pattern
```css
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
.parallax {
transform: none !important;
}
}
/* Safe default motion */
.safe-transition {
transition: opacity 200ms ease-out;
/* Avoid: transform with large values */
}
```
This skill helps designers and developers prevent motion‑induced dizziness, nausea, and disorientation by applying practical rules derived from Disney’s animation principles. It identifies vestibular triggers, recommends safe alternatives, and provides quick fixes and checks to make interfaces comfortable for sensitive users. Use it to make animation choices that prioritize user well‑being without sacrificing clarity or delight.
The skill inspects animation patterns and interaction behaviors that commonly provoke vestibular discomfort, such as large zooms, parallax, continuous loops, and abrupt directional changes. It maps problematic cases to specific fixes tied to animation principles (Exaggeration, Arcs, Follow Through, Secondary Action, Slow In/Slow Out) and offers concrete code patterns and accessibility checks like prefers-reduced-motion. It also provides a troubleshooting checklist and safe alternative motion patterns for rapid remediation.
Is prefers-reduced-motion enough by itself?
No. It is essential, but you should also limit motion scale, avoid parallax/zoom, and offer controls because some users may not enable the system preference or may still experience sensitivity.
How much movement is safe?
Keep transforms under 10–20% scale and positional movement under ~100px as a general guideline; use smaller values on large displays.