motion-sickness
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseMotion 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
以下动效会触发前庭反应:
- 大规模缩放动画
- 视差滚动(尤其是多层视差)
- 全屏旋转
- 快速方向切换
- 持续/循环背景动效
- 滚动劫持(Scroll-jacking)
Diagnosis by Principle
基于动画原则的诊断与修复
Exaggeration
夸张(Exaggeration)
Issue: Over-dramatic motion
Fix: Reduce scale of transforms. Max 10-20% size change. Avoid full-screen zooms.
问题:过度夸张的动效
修复:缩小变换比例,尺寸变化最大控制在10-20%,避免全屏缩放。
Arcs
弧线运动(Arcs)
Issue: Curved paths cause tracking strain
Fix: Use linear motion for functional UI. Save arcs for small, optional elements only.
问题:曲线路径导致视觉追踪疲劳
修复:功能性UI使用线性运动,仅在小型可选元素上使用弧线运动。
Follow Through
跟随动作(Follow Through)
Issue: Overshooting creates whiplash effect
Fix: Remove bounce/overshoot from navigation. Use critically damped springs or ease-out.
问题:过度回弹引发类似甩鞭的不适
修复:移除导航动效中的弹跳/过度回弹,使用临界阻尼弹簧或缓出(ease-out)效果。
Secondary Action
次要动作(Secondary Action)
Issue: Multiple moving elements cause confusion
Fix: Limit to one primary motion. Remove parallax layers.
问题:多个元素同时运动造成混乱
修复:仅保留一个主要动效,移除视差图层。
Slow In and Slow Out
缓入缓出(Slow In and Slow Out)
Issue: Acceleration patterns cause disorientation
Fix: Use consistent, predictable easing. Avoid sudden speed changes.
问题:加速度变化模式引发方向迷失
修复:使用一致、可预测的缓动效果,避免突然的速度变化。
Quick Fixes
快速修复方案
- Respect - Non-negotiable
prefers-reduced-motion - Remove parallax effects - Common trigger
- Avoid zoom transitions - Use fades instead
- Keep motion small - Under 100px movement
- No scroll-jacking - Let scroll be scroll
- 尊重设置 - 不可妥协
prefers-reduced-motion - 移除视差效果 - 常见触发因素
- 避免缩放过渡 - 改用淡入淡出效果
- 控制动效幅度 - 移动距离不超过100px
- 禁止滚动劫持 - 保持原生滚动行为
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
- 动效是否尊重设置?
prefers-reduced-motion - 是否有元素移动距离超过100px?
- 是否存在缩放效果?
- 是否有视差效果?如有请移除。
- 是否存在持续/循环动画?
- 用户能否暂停或禁用动效?
- 在大尺寸显示器上测试(动效影响会被放大)
- 连续测试5分钟以上
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 |
| 触发不适的动效 | 安全替代方案 |
|---|---|
| 缩放过渡 | 淡入淡出+轻微缩放(最大5%) |
| 视差滚动 | 静态或单层滚动 |
| 旋转 | 淡入淡出或滑动 |
| 弹跳/弹簧效果 | 缓出效果(无过度回弹) |
| 整页滑动 | 交叉淡入淡出 |
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 */
}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-transition {
transition: opacity 200ms ease-out;
/* 避免:使用大值的transform属性 */
}