如何通过 javaScript 更改滚动条样式
How to change the scrollbar styling via javaScript
我实现了自定义的滚动条(下面提供了代码)。
我想使用 javaScript 事件“onScroll”来更改滚动条 thumb 样式 同时 滚动,但我不知道这样做的正确方法。
有没有办法访问滚动条样式,也许作为 JavaScript 对象,即:
Container.style.-webkit-scrollbar-thumb.backgroundColor = 'black';
?
下面是一些代码来演示我的滚动条是如何实现的:
CSS:
#container::-webkit-scrollbar {
width: 10vw;
}
#container::-webkit-scrollbar-thumb {
background-color: grey;
border-radius: 50px;
border: 5px solid black;
}
#container::-webkit-scrollbar-thumb:hover {
border: 2px solid black;
background-color: grey;
}
#container::-webkit-scrollbar-track {
background-color: black;
border-bottom-left-radius: 12px;
border-top-left-radius: 12px;
}
JavaScript:
elementsContainer.addEventListener("scroll", function wheelStyle() {
//elementsContainer.WHAT??
});
这是我的解决方案:
想法是动态创建 CSS 样式表规则并在滚动时更新它。
这是我用来在 Whosebug 本身中测试的片段(通过 运行 直接从控制台):
// Based on
appendRule = (sheet) => {
console.log({sheet});
const len = sheet.cssRules.length;
sheet.insertRule('body{}', len);
return sheet.cssRules[len];
}
ruleForScroll = appendRule(Array.from(document.styleSheets).slice(-1)[0]);
randomColor = () => Math.floor(255 * Math.random());
component = document.querySelector('.left-sidebar--sticky-container.js-sticky-leftnav');
component.addEventListener("scroll", function wheelStyle() {
ruleForScroll.selectorText = '.left-sidebar--sticky-container.js-sticky-leftnav::-webkit-scrollbar-track';
ruleForScroll.style["background"] = `rgb(${randomColor()},${randomColor()},${randomColor()})`;
});
这特别影响 Whosebug 的侧边菜单,在滚动时随机改变滚动条的颜色。
Here is an independent solution in a CodePen。请注意,应用样式的一个重要先决条件是以下 css 规则:
.test::-webkit-scrollbar {
width: 10px;
height: 10px;
background-color: transparent;
}
我实现了自定义的滚动条(下面提供了代码)。
我想使用 javaScript 事件“onScroll”来更改滚动条 thumb 样式 同时 滚动,但我不知道这样做的正确方法。
有没有办法访问滚动条样式,也许作为 JavaScript 对象,即:
Container.style.-webkit-scrollbar-thumb.backgroundColor = 'black';
?
下面是一些代码来演示我的滚动条是如何实现的:
CSS:
#container::-webkit-scrollbar {
width: 10vw;
}
#container::-webkit-scrollbar-thumb {
background-color: grey;
border-radius: 50px;
border: 5px solid black;
}
#container::-webkit-scrollbar-thumb:hover {
border: 2px solid black;
background-color: grey;
}
#container::-webkit-scrollbar-track {
background-color: black;
border-bottom-left-radius: 12px;
border-top-left-radius: 12px;
}
JavaScript:
elementsContainer.addEventListener("scroll", function wheelStyle() {
//elementsContainer.WHAT??
});
这是我的解决方案:
想法是动态创建 CSS 样式表规则并在滚动时更新它。
这是我用来在 Whosebug 本身中测试的片段(通过 运行 直接从控制台):
// Based on
appendRule = (sheet) => {
console.log({sheet});
const len = sheet.cssRules.length;
sheet.insertRule('body{}', len);
return sheet.cssRules[len];
}
ruleForScroll = appendRule(Array.from(document.styleSheets).slice(-1)[0]);
randomColor = () => Math.floor(255 * Math.random());
component = document.querySelector('.left-sidebar--sticky-container.js-sticky-leftnav');
component.addEventListener("scroll", function wheelStyle() {
ruleForScroll.selectorText = '.left-sidebar--sticky-container.js-sticky-leftnav::-webkit-scrollbar-track';
ruleForScroll.style["background"] = `rgb(${randomColor()},${randomColor()},${randomColor()})`;
});
这特别影响 Whosebug 的侧边菜单,在滚动时随机改变滚动条的颜色。
Here is an independent solution in a CodePen。请注意,应用样式的一个重要先决条件是以下 css 规则:
.test::-webkit-scrollbar {
width: 10px;
height: 10px;
background-color: transparent;
}