滚动有两种时钟

理解“出现后播放”和“随滚动推进”的区别。

互动实验在真实界面中看
正在准备互动实验…
02 — COMPARE / 看见方法的作用

同一个任务,换一种处理方式。

先看两种实现,再找出让交互更清楚的那条规则。

未使用 Skills · 基础实现基础版本
正在准备互动实验…

用文字说明当前位置和是否触发。

使用 Skills · 应用交互规则规则应用
正在准备互动实验…

保留文字,同时增加对应的进度和短反馈。

01 / 改了什么

视觉变化映射真实滚动状态。

02 / 为什么这样改

触发条件与推进时钟是两件事。

03 / 什么时候不需要

不劫持滚轮、不强制吸附,也不让装饰性视差影响阅读。

教学示意,非 AI 生成实测。两侧的任务、内容和输入条件一致;只比较这里说明的规则。Skills 不保证每次生成相同结果。

03 — APPLY / 放进真实项目

触发条件与推进时钟是两件事。

01滚动触发:进入观察区域后由时间推进一次短反馈。

02滚动驱动:进度直接来自滚动距离,停下来就停止。

03正文默认可见,JavaScript 或动画失效也不会读不到内容。

适合用在阅读进度分段解释有目的的低频出现反馈
把这段需求,交给你的 AI

在可滚动内容中对比时间触发与滚动进度。正文始终可见;滚动进度来自实际 scrollTop,触发反馈只运行一次并可重置。减少动态效果时保留文字与进度数字。

实现代码与机制 +

以下片段解释核心机制,需要与状态、语义和清理逻辑一起使用。页面演示由本地受控组件实现。

const max = element.scrollHeight - element.clientHeight;
const progress = max > 0 ? element.scrollTop / max : 0;
// 时间触发与滚动驱动使用不同状态,不混用同一计时器。
原理、来源与适用边界 +

不劫持滚轮、不强制吸附,也不让装饰性视差影响阅读。

减少动态效果时去掉装饰位移、回弹和自动连续播放,保留功能、状态文字与手动查看步骤。

阅读对应的中文方法笔记 ↗

本案例是独立教学实现。前后对比说明具体规则,不是对某个模型的效果承诺。

停一下,想一想

滚动驱动的动画在用户停下时应怎样?

进度仅保存在当前浏览器
下一课:有些关系,动一下就懂