滚动进度条,以及为什么你的进度条该是一只狗
每个长页面都会引出同一个问题:还剩多少内容?进度指示器就是用来回答这个问题的,而大多数进度指示器给出答案的方式,你大概在第二段之后就已经不再注意了。
这条进度条是为了什么
原则上,滚动条本身就已经告诉了你所在的位置。但实际上它只有几个像素宽,鼠标不动时会自动隐藏,而在一个边加载图片边被你阅读的页面上,它的滑块还会一边被你读着一边改变大小。扩展程序又把进度条加了回来,是因为浏览器自己给出的答案已经被悄悄地设计没了。
于是你得到了一条随滚动而填满的、横贯页面顶部的细色条。它确实管用。但它也是页面上最容易被视而不见的东西:它是一条直线,待在一条你的眼睛早已训练成会自动忽略的窄带里,除了变长之外从不做任何别的事。
位置,但也是速度
一条进度条只携带一个数字——你往下滚了多远。还有第二个数字本来是免费可用的,却没有任何一条进度条把它展示出来:你移动的速度有多快。
scrolldog 两个都带着。这只宠物沿窗口边缘的位置,就是滚动深度。页面顶部时它在左侧,页面底部时它已经到了另一侧。它的步态就是滚动速度:快速滑动滚轮它就飞奔,一段一段地慢慢往下滚它就小跑。
停下来,它就坐下——这正是一条普通进度条做不到的事。一条静止的进度条,无论你是在认真阅读,还是把这个标签页晾了三个小时没管,看起来都一模一样。而一只已经坐下的宠物,是在告诉你这个页面已经安静下来了,读懂它不花你一分力气,因为你其实根本没在留意它——你只是用眼角的余光瞥见了它,而这本来就是一个进度指示器所配得到的全部关注。
它的代价是什么
对装饰性扩展程序的常见质疑,是它会让浏览器变得更差。这一个以被动方式监听滚动事件,把每一阵密集的事件合并成每个动画帧只写入一次,并且只在一个固定的、尺寸为零的轨道里移动单一元素。它从不读取或更改你页面的布局,也不会从你正在阅读的页面发出任何网络请求。
弹出窗口里的一个开关,就能立即在所有打开的标签页里把它统一关闭。
看看它是怎么工作的