跳到主要内容
界面图谱Interface Atlas
☰
EN
动效Motion / Scroll

滚动驱动动画

Scroll-driven Animation

别名:滚动驱动动画滚动动画随滚动动滑到哪动到哪scroll animationscroll-drivenscroll-linked animation

这是什么

动画进度绑定滚动位置而非时间:滚到哪、动到哪,可来回擦洗。能做滚动进度条、随滚动展开的叙事与视差层。与滚动显现不同,它不是触发后播完,而是由滚动位置精确擦洗进度。

交互实验室

试一试,再决定怎么用

正在加载演示…

✓ 适用场景

  • 叙事随滚动展开,进度要与阅读位置同步
  • 需要滚动进度指示或阅读深度反馈
  • 视差层、粘性章节等空间层次表达

✕ 不适用场景

  • 用户一滚到底找信息,动画反而拖慢到达
  • 滚动容器嵌套复杂,进度归属不清
  • 只需一次性入场,用滚动显现更简单

常见形式

滚动联动

Scroll-linked

进度直接映射滚动位置,可逆向擦洗

滚动触发

Scroll-triggered

越过阈值后按时间播完,不再随滚动

视差层

Parallax layers

多层不同速率移动,制造纵深

实现要点

animation-timeline: scroll()animation-rangetransform: translateYprogress

首选 CSS:animation-timeline: scroll() + animation-range 把关键帧绑到滚动进度;不支持时用 JS 滚动监听写 CSS 变量(如 --scroll),再由 calc 驱动 transform/opacity。触发式部分的定时 动画仍需 calc(<时长> * var(--demo-speed, 1))。滚动监听要 passive + rAF 节流。 尊重 prefers-reduced-motion,直接落到终态。

平台 API

animation-timeline: scroll()scroll()Intersection Observer

交给 AI

四层 Prompt 从「它是什么」一路写到「可直接执行的任务」;切到 Agent 任务层,还能叠加视觉风格与附加要求,再一键复制给你的 Coding Agent。

在当前项目中实现滚动驱动动画。

先检查现有组件体系和 Design Token,优先复用当前组件。
保持现有项目视觉风格。不要新增不必要依赖。
要求:
- 动画进度绑定滚动位置,可反向擦洗
- 优先使用 animation-timeline: scroll(),并提供 JS 兜底
- 定时动画时长写 calc(<时长> * var(--demo-speed, 1))
- 尊重 prefers-reduced-motion
完成后运行项目现有检查,并列出修改的文件。

附加要求:
- 支持深色模式
- 尊重 prefers-reduced-motion
- 不新增依赖
- 完成后运行现有检查并列出修改文件

可直接交给 Coding Agent,可叠加风格与附加要求

相关概念

滚动显现Scroll Reveal

元素滚动进入视口时才播放淡入、上浮或滑入动画,之前保持隐藏或占位。 把"一次性呈现全部内容"变成"随阅读节奏逐段揭示",让长页面的信息 更有秩序感。通常由 IntersectionObserver 触发,只播一次。

动效替代方案
视差滚动Parallax

滚动时不同图层以不同速度移动——背景慢、前景快—— 用速度差制造纵深。 是"2D 里伪造 3D"最便宜的手段, 常见于首屏大图与滚动叙事页面。

动效替代方案
文字显现Text Reveal

把标题或段落按行、按词逐个显现,而不是整块淡入。文字"被说出来"的节奏感让信息有先后与分量, 常用于落地页首屏大标题、章节开场与滚动叙事, 通常进入视口时触发一次。

动效搭配使用

参考来源

Markdown 版(给 Agent) · JSON