走马灯
View- 你身边的那位 代替了我的座位
- 他的手捧着玫瑰 承诺余生都奉陪
- 而我始终学不会
- 已被风吹散的眼泪
- 那逝去的幸福该怎么追回
会当凌绝顶
一览众山小
scrollTrigger: { pin: true, scrub: true }滚动条常常被样式藏起来,读者失去了「还剩多少」的参照。进度条把不可见的滚动位置翻译成一条看得懂的线,让人知道自己站在哪儿。
不传参数时它读整个页面的滚动;传入 container 之后,进度只属于这个可滚动元素,外面的页面滚不滚都与它无关。
一个从 0 到 1 的 MotionValue。0 是还没开始,1 是已经到底。它在动画帧里更新,不会触发 React 重渲染,所以滚得再快也不掉帧。
原始进度和滚轮是一比一的,手一停它就停。用 useSpring 包一层,进度条会带着惯性追上来,顺带把触控板的细碎抖动也抹平了。
缩放走的是 GPU 合成层,不触发布局回流;宽度不行。再配上 origin-left,条子才是从左边长出来,而不是从中间往两头撑。
stiffness 决定追得多急,damping 决定停得多稳。200 / 40 是一组克制的取值:跟手,但停下时不会来回晃。
进度条只回答「还有多远」,回答不了「我要去哪儿」。需要跳转的长文,该给目录还是得给目录。
container 指向的元素必须自己能滚:既要 overflow-y-auto,也要有确定的高度。少给高度,scrollYProgress 会一直停在 0。







