css设置滚动条颜色(不可思议的纯 CSS 滚动进度条效果)

难以置信的纯CSS滚动进度条效果

首先,如何使用CSS来实现下面的滚动条效果?



蓝色进度条会随着页面的长度而变化。

在继续阅读以下内容之前,您可以先花点时间。试着想想以上的效果,或者尝试一下。在没有JS的帮助下,你能熟练地达到上述效果吗。

OK,继续。这种影响是我在业务开发过程中遇到的一个类似的小问题。事实上,即使我使用JavaScript,我的第一反应就是觉得很麻烦。所以我一直在想,有没有可能只用CSS来达到这个效果?


分析需求

第一眼看到这种效果,我觉得这个跟随滚动的动画不能单靠CSS来完成,因为它涉及到页面滚动距离的计算。

如果你只想使用CSS,你只能找到另一种方法,并使用一些聪明的方法。

好的,让我们借助一些技巧一步一步地使用CSS来完成这个效果。分析困难:

  • 如何知道用户当前滚动页面的距离并通知顶部进度条?

正常的分析应该是这样的,但它属于传统思维。进度条只是一个进度条。它接收页面滚动距离并更改宽度。如果页面滚动和进度条是一个整体呢?

实施要求

不要出卖。让我们使用它线性梯度实现这一功能。

假设我们的页面是用&书信电报;body;在中,您可以滚动整个body,并从左下角到右上角添加这样一个线性渐变:

body{ background图片:线性渐变(至右上方,#ffcc0050%,#eee50%); background重复:不重复; } 复制代码

然后,我们可以得到这样的效果:


哇,黄色方块的颜色变化实际上可以表达整体进度。事实上,聪明的同学们应该已经知道在这里该做什么了。

我们使用伪元素来覆盖额外的部分:

body:之后呢{ content:"";; position:固定; 顶部:5px; left:0; 底部:0; 右:0; background:#fff; z指数:-1; } 复制代码

为了便于演示,我将白色底部改为黑色透明底部:

实际效果如下:

目光敏锐的学生可能会发现,当他们滑到底部时,进度条不会到达终点:

原因是body直线梯度高度决定了整个body的大小。让我们调整渐变高度:

body{ background(AndyLau)——图片:线性渐变(至右上方,#ffcc0050%,#eee50%); background-尺寸:100%calc(100%-100vh+5px); background重复:不重复; } 复制代码

这里用小马计算并减去100vh,也就是说,减去一个屏幕的高度,这样当滑动到底部时,渐变正好适合右上角。

+5px是滚动进度条的高度,它是保留的5px树的高度。看看效果,完美:

到目前为止,这一要求已经完全实现。这是一项很好的小技巧。完整的演示:

CodePen演示——使用线性梯度滚动进度条

我通常不会写别人写的东西。这项技能还很早

滚动条颜色

我以前看到过,我只是在中午的时候在我的生意中使用了这项技能,并在没有验证谁首先发明了这项技能的情况下写了这篇文章。

您可以还会对下面的文章感兴趣

最新评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

使用微信扫描二维码后

点击右上角发送给好友