Webkit滚动条动态样式

问题描述 投票:16回答:7

我目前正在使用Webkit的:: - webkit-scrollbar CSS属性设置滚动条的样式,并希望在mousemove事件上更改这些属性。问题是我似乎无法找到一种动态获取滚动条CSS的方法。

是否可以通过javascript(可能使用jQuery)动态设置webkit滚动条的样式?

javascript css webkit scrollbar
7个回答
5
投票

这个问题有一个很好的解决方法,您可以为滚动条添加多个具有diffident样式的css类,然后使用Javascript动态更改类。

例:

.red::-webkit-scrollbar  { ... }
.blue::-webkit-scrollbar { ... }

在类redblue之间切换的按钮:

$("#changecss").on("click", function(){
    $(".red,.blue").toggleClass("red").toggleClass("blue");
});

这是一个工作小提琴:http://jsfiddle.net/promatik/wZwJz/18/


2
投票

如果要在鼠标悬停时更改滚动条属性。你可以用CSS来做,这里有一个例子http://jsfiddle.net/olgis/7Lg2R/(抱歉丑陋的colorset)。

如果要在鼠标位于容器上方时更改滚动条颜色,请查看此帖子Style webkit scrollbar on certain state。无论有没有JavaScript,都有几种方法可以解释。

备注:我不知道为什么这些例子(CSS和JavaScript都没有)在我的Firefox 11 for Mint中不起作用,但所有这些都在Chrome 18.0.1025.151中完美运行。


2
投票

我创建了包含四个选项卡的页面,每个选项卡都有不同的颜色集以及滚动条,但这只能通过将类赋予body标签来实现

body.greenbody::-webkit-scrollbar {
width: 10px;
}
body.greenbody::-webkit-scrollbar-track {
background-color:rgb(0,50,0);
}
body.greenbody::-webkit-scrollbar-thumb {
background-image:url("../assets/ScrollGreen.png"); 
}

/

body.bluebody::-webkit-scrollbar {
width: 10px;
}
body.bluebody::-webkit-scrollbar-track {
background-color:rgb(0,0,50);
}
body.bluebody::-webkit-scrollbar-thumb {
background-image:url("../assets/ScrollBlue.png"); 
}

HTML

<body id="body" class="greenbody" bgcolor="#202020">

每个标签按钮的javascript(此处仅显示滚动条部分)

document.getElementById("body").className="greenody";
.........other function().... 
document.getElementById("body").className="bluebody";

ScreenShot1 GreenScrollBar Image ScreenShot2 BlueScrollBar Image


1
投票

是的,你可以做到。

您需要将动态css样式规则包含在样式表中。然后改变它。

你可以通过this plugin来做到这一点

如果你不需要使用jQuery - 你可以通过纯Javascript来实现:link 1 link 2。但是存在跨浏览器问题。

另见Setting CSS pseudo-class rules from JavaScript


1
投票

您可以使用CSS3设置滚动条的样式,这些通常仅适用于内部滚动条而不适用于实际的浏览器主滚动条。您还可以将MOZ属性添加到以下内容中。

        ::-webkit-scrollbar {
            width: 10px;
            height: 10px;
        }
        ::-webkit-scrollbar-button:start:decrement,
        ::-webkit-scrollbar-button:end:increment  {
            display: none;
        }

        ::-webkit-scrollbar-track-piece  {
            background-color: #3b3b3b;
            -webkit-border-radius: 6px;
        }

        ::-webkit-scrollbar-thumb:vertical {
            -webkit-border-radius: 6px;
            background: #666 url(scrollbar_thumb_bg.png) no-repeat center;
        }

演示:http://geryit.com/lib/custom-css3-scrollbars 下载源:http://geryit.com/lib/custom-css3-scrollbars/custom-css3-scrollbars.zip


0
投票

为此,您应该完全替换滚动条。

这只是picking whichever one gives you the easiest API的问题。


0
投票

你可以使用<style>制作一个id="scrollbar_style"标签,然后在其中动态添加css,如下所示:

document.getElementById('scrollbar_style').innerHTML = '::-webkit-scrollbar{width:15px;}';

只记得在元素上使用innerHTML肯定不会添加你的新代码,它也会删除该元素中的任何内容。

问题解决了。

© www.soinside.com 2019 - 2024. All rights reserved.