介绍
页面滚动顶部指示,是在页面上下滚动时,顶部显示一个滚动条,指示页面的滚动距离和页面的滚动高度的比例。效果如下:
JS 实现
原理是顶部放一个宽度为 0 的滚动条,然后监听窗口滚动事件,把页面的滚动距离和页面的滚动高度(页面的实际高度 - 页面的视口高度)进行比较,然后更新滚动条的宽度。
1 | window.onscroll = function(e) { |
1 | .progress-container { |
CSS 实现
原理是给页面添加一个线性渐变的背景,背景的宽度等于页面的宽度,背景的高度要等于页面的滚动高度(页面的实际高度 - 页面的视口高度),这可以使用 CSS 的函数 calc(100% - 100vh) 来得到,然后加上滚动条的高度,比如 5px,calc(100% - 100vh + 5px)。
1 | body { |
这里使用 linear-gradient 函数创建了一个两种颜色的渐变色,在 50% 位置共享一个颜色停止点,即渐变的一半。这将在两种颜色之间创建一条硬线,即创建一个条纹而不是逐渐过渡。
接下来就是把多余背景遮盖,可以使用伪元素来完成:
1 | body::after { |
这种方法的滚动条不能太高,不然滚动条末端的倾斜条纹会很明显。
以上的 JS 和 CSS 实现在 IE11 中都有效果。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 张坤的博客!
评论