滚动条颜色怎么改?简单几步教你轻松设置!

吉云

今天跟大家唠唠我捣鼓滚动条颜色的事儿,这玩意儿平时真不太注意,但有时候为配合整个网站或者APP的风格,改改颜色还真能提升不少颜值。

我寻思着这玩意儿应该挺简单,不就是改个CSS属性嘛结果一搜,好家伙,各种方法都有,但真正能完美兼容所有浏览器的,还真不多。

我尝试最直接的CSS方法,用 `::-webkit-scrollbar` 伪元素来改。这招在Chrome、Safari上效果杠杠的,颜色随便调,想怎么骚气怎么来。我当时就把滚动条的颜色改成骚粉色,感觉整个页面都活泼不少。

滚动条颜色怎么改?简单几步教你轻松设置!

但是!理想很丰满,现实很骨感。一换到Firefox,直接傻眼,这招根本不灵!Firefox有自己的滚动条样式,webkit这套它压根不认。当时我就有点懵,心想这浏览器兼容性也太坑。

后来我又去查查,发现Firefox可以用 `-moz-appearance: none;` 禁用默认样式,然后自己用CSS画一个。但这样做太麻烦,而且效果也不一定我这人比较懒,能简单解决的,绝不复杂化。

我又尝试用JavaScript来模拟滚动条。这思路是,隐藏掉原生的滚动条,然后用div元素模拟一个,再用JS控制它的滚动。这方法理论上可行,而且兼容性也应该不错。但我试一下,发现性能有点问题,尤其是在内容比较多的时候,滚动起来会卡顿。果断放弃!

我找到一个相对比较靠谱的方案。就是用CSS自定义属性,配合一些简单的JS来控制。这方案的核心是,先用CSS隐藏掉原生的滚动条,然后在页面上放一个假的滚动条,用JS监听页面的滚动事件,然后同步更新假滚动条的位置。

具体来说,我先在CSS里定义一些自定义属性,比如 `--scrollbar-width`、`--scrollbar-color` 等等。然后,用这些属性来设置假滚动条的样式。

css

滚动条颜色怎么改?简单几步教你轻松设置!

/ 隐藏原生滚动条 /

::-webkit-scrollbar {

width: 0px; / 彻底隐藏滚动条 /

background: transparent; / 也可以是transparent/

/ 定义假滚动条的样式 /

滚动条颜色怎么改?简单几步教你轻松设置!

.custom-scrollbar {

position: fixed;

top: 0;

right: 0;

width: var(--scrollbar-width);

height: 100%;

滚动条颜色怎么改?简单几步教你轻松设置!

background-color: rgba(0, 0, 0, 0.1);

.custom-scrollbar-thumb {

position: absolute;

top: 0;

left: 0;

滚动条颜色怎么改?简单几步教你轻松设置!

width: 100%;

background-color: var(--scrollbar-color);

border-radius: 5px;

cursor: pointer;

滚动条颜色怎么改?简单几步教你轻松设置!

然后,用JS来监听页面的滚动事件,并更新假滚动条的位置。

javascript

*('scroll', function() {

// 计算滚动条的位置

let scrollTop = * *;

let scrollHeight = * *;

滚动条颜色怎么改?简单几步教你轻松设置!

let clientHeight = * *;

let scrollPercent = scrollTop / (scrollHeight - clientHeight);

// 更新假滚动条的位置

let thumbHeight = clientHeight / scrollHeight 100; // 计算滑块的高度百分比

let thumbTop = scrollPercent (100 - thumbHeight); // 计算滑块的顶部位置百分比

*('.custom-scrollbar-thumb').* = thumbHeight + '%';

滚动条颜色怎么改?简单几步教你轻松设置!

*('.custom-scrollbar-thumb').* = thumbTop + '%';

这样,基本上就能实现一个自定义颜色的滚动条。虽然还是有点小瑕疵,比如在某些浏览器上可能会出现闪烁,但效果还是不错的。

最简单的CSS方法,兼容性不太

滚动条颜色怎么改?简单几步教你轻松设置!

JavaScript模拟滚动条,性能是个问题。

CSS自定义属性 + JS 监听滚动事件,相对靠谱。

改滚动条颜色这事儿,看着简单,实际操作起来还是有点坑的。需要根据具体的项目需求,选择合适的方案。

给大家分享一些我觉得挺有用的资料:

MDN Web Docs 关于 `::-webkit-scrollbar` 的介绍

一些关于 CSS 滚动条样式的文章

滚动条颜色怎么改?简单几步教你轻松设置!

希望这些对大家有所帮助! 以后有啥好玩的实践,我再跟大家分享。

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]