其他
滚动触发动画设计:用迪士尼 12…
需要做滚动触发的揭示、视差、吸顶头部、进度条等动画时,按触发时机、缓动和性能规则实现流畅且不阻塞滚动的运动。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
滚动触发动画设计:用迪士尼 12 原则与通用
解决思路
- 应用 Squash & Stretch:元素在快速滚动时可轻微压缩,停止滚动时恢复稳定。
- 应用 Anticipation:在完全揭示前让内容稍微可见,动画从 10-20% 可见度开始。
- 应用 Staging:按阅读顺序揭示内容,从上到下、从左到右推进。
- 应用 Straight Ahead vs Pose-to-Pose:定义清晰的“隐藏”和“揭示”两个姿态,由滚动位置在两者间插值。
- 应用 Follow Through & Overlapping:错开揭示,第一个元素在视口 20% 触发,下一个在 25% 触发,依此类推。
- 应用 Slow In/Slow Out:滚动触发的揭示使用 ease-out,让内容缓入并稳定到位。
- 应用 Arcs:视差元素相对滚动沿曲线运动,在垂直滚动时加入轻微水平偏移。
- 应用 Secondary Action:组合淡入、滑动和缩放,获得更丰富的揭示效果。
- 应用 Timing:揭示动画 400-600ms(允许滚动继续),视差实时、1:1 或分数比例,吸顶过渡 200-300ms。
- 应用 Exaggeration:滚动场景保持微妙,因为用户控制节奏,让滚动速度本身成为夸张来源。
- 应用 Solid Drawing:元素绝不能跳变或瞬移,在所有滚动位置上平滑插值。
- 应用 Appeal:滚动动画应奖励探索,而不是阻碍探索。
- 按时机推荐设置 Fade In:500ms,20% 可见时触发,ease-out。
- 按时机推荐设置 Slide Up:600ms,15% 可见时触发,ease-out。
- 按时机推荐设置 Parallax:实时,连续触发,linear。
- 按时机推荐设置 Sticky Header:200ms,到达阈值时触发,ease-out。
- 按时机推荐设置 Progress Bar:实时,连续触发,linear。
- 按时机推荐设置 Section Reveal:600ms,25% 可见时触发,ease-out。
- 实现 CSS 滚动触发揭示:给 .reveal 设置 opacity: 0; transform: translateY(30px); transition: opacity 500ms ease-out, transform 600ms ease-out;,给 .reveal.visible 设置 opacity: 1; transform: translateY(0);。
- 实现纯 CSS 视差:给 .parallax-container 设置 perspective: 1px; overflow-y: auto;,给 .parallax-slow 设置 transform: translateZ(-1px) scale(2);。
- 使用 Intersection Observer 模式:创建 IntersectionObserver,回调中在 entry.isIntersecting 时给 entry.target 添加 visible 类,选项 threshold: 0.2 和 rootMargin: '0px 0px -10% 0px';对 document.querySelectorAll('.reveal') 的每个元素调用 observer.observe(el)。
- 使用 CSS 滚动链接动画:定义 @keyframes reveal,从 opacity: 0; transform: translateY(30px); 到 opacity: 1; transform: translateY(0);;给 .scroll-reveal 设置 animation: reveal linear both; animation-timeline: view(); animation-range: entry 0% entry 50%;。
- 关键规则:绝不阻塞滚动或劫持滚动行为。
- 关键规则:动画应在视口内完成,不要求精确滚动位置。
- 关键规则:提前触发(10-20% 可见),让动画在完全进入视口前完成。
- 关键规则:提供 prefers-reduced-motion 替代方案——即时揭示、无视差。
- 关键规则:在移动端测试,滚动动画必须保持 60fps 流畅。
适用边界 · 注意事项
- 不要用于需要阻塞或劫持滚动、或要求用户停在精确滚动位置才能查看内容的交互。
- 当用户开启 prefers-reduced-motion 时,不要使用视差、位移、缩放等运动,改为即时揭示。
- 在不支持 animation-timeline: view() 的浏览器中,不要只依赖该 CSS 特性,需改用 IntersectionObserver 或回退方案。