我想用CSS自定义一个滚动条。
我使用这个WebKit CSS代码,它适用于Safari和Chrome:
::-webkit-scrollbar {
width: 15px;
height: 15px;
}
::-webkit-scrollbar-track-piece {
background-color: #c2d2e4;
}
::-webkit-scrollbar-thumb:vertical {
height: 30px;
background-color: #0a4c95;
}
我如何在Firefox中做同样的事情?
我知道我可以很容易地用jQuery来做,但我更喜欢用纯CSS来做,如果它是可行的。
我想我将分享我的发现,以防有人正在考虑使用jQuery插件来完成这项工作。
我给了jQuery自定义滚动条去。它非常漂亮,可以进行一些平滑的滚动(具有滚动惯性),并具有大量可以调整的参数,但对我来说,它的CPU消耗太大了(并且它向DOM添加了相当多的内容)。
现在我要试试完美滚动条。它简单且轻量级(6 KB),到目前为止它做得还不错。它根本不是CPU密集型的(据我所知),并且对DOM的添加非常少。它只有几个参数来调整(wheelSpeed和wheelPropagation),但这是我所需要的,它处理更新滚动内容很好(如加载图像)。
附注:我确实快速看了一下JScrollPane,但@simone是对的,它现在有点过时了,而且是PITA。
自Firefox 64以来,可以使用新的规范来实现简单的滚动条样式(不像Chrome中使用供应商前缀那样完整)。
在这个例子中,可以看到一个解决方案,结合不同的规则,以解决Firefox和Chrome具有类似(不相等)的最终结果(示例使用您原来的Chrome规则):
关键规则是:
为Firefox
.scroller {
overflow-y: scroll;
scrollbar-color: #0A4C95 #C2D2E4;
}
在Chrome
.scroller::-webkit-scrollbar {
width: 15px;
height: 15px;
}
.scroller::-webkit-scrollbar-track-piece {
background-color: #C2D2E4;
}
.scroller::-webkit-scrollbar-thumb:vertical {
height: 30px;
background-color: #0A4C95;
}
请注意,对于您的解决方案,也可以使用更简单的Chrome规则如下:
.scroller::-webkit-scrollbar-track {
background-color: #C2D2E4;
}
.scroller::-webkit-scrollbar-thumb {
height: 30px;
background-color: #0A4C95;
}
最后,为了在Firefox的滚动条中隐藏箭头,目前有必要使用以下规则scrollbar-width将其设置为“thin”:thin;
2022年
使用最新的Firefox和Chrome版本进行测试
下面的代码片段将在Chrome和Firefox上显示相同的滚动条样式,请尝试一下。
html {
/*对于Firefox */
overflow-y:滚动;
滚动条-color: #008de4 #0d3b97;
scrollbar-width:薄;
}
/*用于Chrome和除Firefox之外的其他浏览器*/
身体:-webkit-scrollbar {
宽度:0.5 em;
background - color: # 0 d3b97;
}
身体:-webkit-scrollbar-thumb {
background - color: # 008 de4;
}
< html >
<body style="height: 600px"></body> .
< / html >
还可以使用以下方法自定义滚动条跟踪(但不适用于Firefox)
::-webkit-scrollbar-track