Prety F2E

We tell browsers how to do better

0%

Webkit 内核浏览器滚动条定制

在所有浏览器中,滚动条可定制性最强的当属 Webkit 内核的浏览器了,下面我们来看一下 Webkit 浏览器是如何强大的吧!

1
2
3
4
5
6
7
::-webkit-scrollbar               { /* 1 */ }
::-webkit-scrollbar-button { /* 2 */ }
::-webkit-scrollbar-track { /* 3 */ }
::-webkit-scrollbar-track-piece { /* 4 */ }
::-webkit-scrollbar-thumb { /* 5 */ }
::-webkit-scrollbar-corner { /* 6 */ }
::-webkit-resizer { /* 7 */ }

以上 CSS 代码所管辖的区域对应关系:以上注释中的数字与下图中数字相对应。

1
2
3
4
5
6
7
::-webkit-scrollbar                { /*滚动条整体部分,其中的属性有width,height,background,border(就和一个块级元素一样)等。*/ }
::-webkit-scrollbar-button { /*滚动条两端的按钮。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。*/ }
::-webkit-scrollbar-track { /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果。*/ }
::-webkit-scrollbar-track-piece { /*内层轨道,滚动条中间部分(除去)。*/ }
::-webkit-scrollbar-thumb { /*滚动条里面可以拖动的那部分*/ }
::-webkit-scrollbar-corner { /*边角*/ }
::-webkit-resizer { /*定义右下角拖动块的样式*/ }

Webkit 提供的还有更多的伪类,可以定制更丰富滚动条样式。以下内容参考:https://www.webkit.org/blog/363/styling-scrollbars/

1
2
3
4
5
6
7
8
9
10
11
:horizontal       { /*horizontal  伪类,主要应用于选择水平方向滚动条。*/ }
:vertical { /*vertical伪类主要是应用于选择竖直方向滚动条*/ }
:decrement { /*decrement伪类应用于按钮和内层轨道(track piece)。它用来指示按钮或者内层轨道是否会减小视窗的位置(比如,垂直滚动条的上面,水平滚动条的左边。)*/ }
:increment { /*increment伪类与和decrement类似,用来指示按钮或内层轨道是否会增大视窗的位置(比如,垂直滚动条的下面和水平滚动条的右边。)*/ }
:start { /*start伪类也应用于按钮和滑块。它用来定义对象是否放到滑块的前面。*/ }
:end { /*类似于start伪类,标识对象是否放到滑块的后面。*/ }
:double-button { /*该伪类可以用于按钮和内层轨道。用于判断一个按钮是不是放在滚动条同一端的一对按钮中的一个。对于内层轨道来说,它表示内层轨道是否紧靠一对按钮。*/ }
:single-button { /*类似于double-button伪类。对按钮来说,它用于判断一个按钮是否自己独立的在滚动条的一段。对内层轨道来说,它表示内层轨道是否紧靠一个single-button。*/ }
:no-button { /*用于内层轨道,表示内层轨道是否要滚动到滚动条的终端,比如,滚动条两端没有按钮的时候。*/ }
:corner-present { /*用于所有滚动条轨道,指示滚动条圆角是否显示。*/ }
:window-inactive { /*用于所有的滚动条轨道,指示应用滚动条的某个页面容器(元素)是否当前被激活。(在webkit最近的版本中,该伪类也可以用于::selection伪元素。webkit团队有计划扩展它并推动成为一个标准的伪类)*/ }

另外,:enabled:disabled:hover、和 :active 等伪类同样在滚动条中适用。

官方演示DEMO:http://trac.webkit.org/export/41842/trunk/LayoutTests/scrollbars/overflow-scrollbar-combinations.html