如何在运行时用javascript改变滚动条css
How to change scrollbar css at runtime with javascript?
是否有可能在运行时通过点击按钮来改变滚动条的css(例如颜色)?
这只需要在谷歌浏览器工作,所以我使用:
::-webkit-scrollbar {
width:15px;
}
::-webkit-scrollbar-thumb {
background-color:#999;
border:solid #fff;
}
::-webkit-scrollbar-thumb:hover {
background:#777;
}
::-webkit-scrollbar-thumb:vertical {
border-width:6px 4px;
}
我在jsfiddle: http://jsfiddle.net/wZwJz/做了这个例子
我在这里添加了这个按钮:
<button id="changecss">Change CSS</button>
和一个jQuery监听器:
$("#changecss").on("click", function(){
// Action goes here
});
我试过这个:$("::-webkit-scrollbar").css("backgroundColor", "#F00");
,但显然没有元素叫::-webkit-scrollbar
,所以它是不可能的jQuery找到它…
经过几个小时和多次尝试,我找到了解决这个问题的方法。
下面是jsfiddle: http://jsfiddle.net/promatik/wZwJz/18/
.red::-webkit-scrollbar { ... }
.blue::-webkit-scrollbar { ... }
然后主体,必须有一个这样的类(在jsfiddle我添加类javascript,因为我不能手动控制html):
$("body").addClass("blue");
和按钮只需要切换.red
和.blue
类。
$("#changecss").on("click", function(){
$(".red,.blue").toggleClass("red").toggleClass("blue");
});
在Chrome (至少在v25之前)中滚动条的渲染也存在问题,可以通过删除滚动条并再次添加来克服,这里有一个函数:
// Hack to force scroll redraw
function scrollReDraw() {
$('body').css('overflow', 'hidden').height();
$('body').css('overflow', 'auto');
}
你不能像这里提到的那样选择psuedo选择器:链接
你的代码需要这样做:
$("#changecss").on("click", function(){
var ss = document.styleSheets[0];
ss.insertRule('::-webkit-scrollbar {background-color: red}', 0);
});
滚动条似乎更奇怪,但在这个小提琴中看到:http://jsfiddle.net/wZwJz/4/
当你将鼠标悬停在它上面时,它的颜色才会改变。我对这方面的知识很感兴趣。所以我会想办法的。但是,至少现在你应该朝着正确的方向前进了。
编辑:因此,经过一番摆弄和谷歌搜索,我要说,到目前为止,这是不可能的。这里有一些最新的注释:link
相关文章:
- CSS-若窗口太小,滚动条会出现在“表格”单元格上
- 禁用(而不是隐藏)浏览器滚动条
- 在firefox和chrome中的左侧显示iframe滚动条
- jquery:将动画绑定到滚动条位置的更好方法
- 在窗口中添加滚动条
- 如何查明鼠标按下事件是否发生在滚动条上或元素中的其他任何位置
- 当滚动条到达页面顶部时,它会改变高度
- 当改变页面长度/滚动条时,iOS的视觉闪烁
- 如何在没有第三方JS库的情况下改变文本区域滚动条的颜色
- JavaScript改变导航条颜色的滚动不起作用
- 防止firefox在溢出元素改变时重置滚动条位置
- 只改变iframe的滚动条样式
- 如何改变滚动条的颜色
- 如何改变滚动条样式或隐藏滚动条在浏览器通过javascript或css
- 改变鼠标滚动时滚动条的速度
- 如何在运行时用javascript改变滚动条css
- 如果在弹性滚动条弹跳时改变了DOM,则滚动条位置会跳转
- 滚动时改变导航条固定顶部的颜色
- 在Jquery滚动条插件中改变选择器
- 为什么当我追加数据时,滚动条的位置会改变