由于公司的产品改用webkit内核,在写公共css的时候,不想使用插件模拟,顺便网上查阅了下css3的滚动条美化。

    首先,先上一副示意图。

   

   从网络上盗图的(来源 http://zhangyaochun.iteye.com/blog/1743283)。

  以下是对应的伪类:

 

::-webkit-scrollbar{/*1*/} /*滚动条整体部分,一般可以设置宽度*/

::-webkit-scrollbar-button{/*2*/}/*两端的按钮*/
 ::-webkit-scrollbar-track{/*3*/}/*外层轨道(track本身就是轨道的意思)*/
 ::-webkit-scrollbar-track-piece{/*4*/}/*内层滚动槽*/
::-webkit-scrollbar-thumb{/*5*/}/*滑块*/
 ::-webkit-scrollbar-corner{/*6*/}/*滚动条整体部分*/
::-webkit-resizer{/*7*/}/*右下角拖动块的样式*/

同时,上面的伪类还可以跟以下的伪类配合使用:

 1 :horizontal(horizontal伪类适用于任何水平方向上的滚动条)
 2 
 3 :vertical(vertical伪类适用于任何垂直方向的滚动条)
 4 
 5 :decrement(decrement伪类适用于按钮和轨道碎片。表示递减的按钮或轨道碎片,例如可以使区域向上或者向右移动的区域和按钮)
 6 
 7 :increment(increment伪类适用于按钮和轨道碎片。表示递增的按钮或轨道碎片,例如可以使区域向下或者向左移动的区域和按钮)
 8 
 9 :start(start伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的前面)
10 
11 :end(end伪类适用于按钮和轨道碎片。表示对象(按钮 轨道碎片)是否放在滑块的后面)
12 
13 :double-button(double-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一对按钮。也就是轨道碎片紧挨着一对在一起的按钮。)
14 
15 :single-button(single-button伪类适用于按钮和轨道碎片。判断轨道结束的位置是否是一个按钮。也就是轨道碎片紧挨着一个单独的按钮。)
16 
17 :no-button(no-button伪类表示轨道结束的位置没有按钮。)
18 
19 :corner-present(corner-present伪类表示滚动条的角落是否存在。)
20 
21 :window-inactive(适用于所有滚动条,表示包含滚动条的区域,焦点不在该窗口的时候。)
22 
23 ::-webkit-scrollbar-track-piece:start {
24    /*滚动条上半边或左半边*/
25 }
26 
27 ::-webkit-scrollbar-thumb:window-inactive {
28    /*当焦点不在当前区域滑块的状态*/
29 
30 }
31 
32 ::-webkit-scrollbar-button:horizontal:decrement:hover {
33    /*当鼠标在水平滚动条下面的按钮上的状态*/
34 
35 }

  用法就是连起来使用,不过以上的内容均来自copy,既然是伪类,就可以在前面加上不同的class来修饰,以下是我写的一个示例的:

 1 .qs-scrollbar::-webkit-scrollbar-track {
 2     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
 3     -webkit-border-radius: 10px;
 4     border-radius: 10px;
 5 }
 6 .qs-scrollbar::-webkit-scrollbar-button:decrement {
 7     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
 8     height: 10px;
 9     background:url("../img/sprite.png")  -11px 0px no-repeat;
10     background-color: transparent;
11     /*background-image: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 10 10' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><defs><line id='l' x1='60' x2='60' y1='7' y2='27' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round'/></defs><g><use xlink:href='%23l' opacity='.27'/><use xlink:href='%23l' opacity='.27' transform='rotate(30 60,60)'/></g></svg>");*/
12 }
13 .qs-scrollbar::-webkit-scrollbar-button:increment {
14     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);
15     height: 10px;
16     background:url("../img/sprite.png")  0px -0px no-repeat;
17     background-color: transparent;
18     /*background-image: url("data:image/svg+xml;charset=utf-8,<svg viewBox='0 0 10 10' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'><defs><line id='l' x1='60' x2='60' y1='7' y2='27' stroke='%236c6c6c' stroke-width='11' stroke-linecap='round'/></defs><g><use xlink:href='%23l' opacity='.27'/><use xlink:href='%23l' opacity='.27' transform='rotate(30 60,60)'/></g></svg>");*/
19 }
20 
21 /* Handle */
22 .qs-scrollbar::-webkit-scrollbar-thumb {
23     -webkit-border-radius: 10px;
24     border-radius: 10px;
25     background:rgba(153,153,153,0.7);
26     -webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.5);
27 }
28 .qs-scrollbar::-webkit-scrollbar-thumb:window-inactive {
29     background: rgba(153,153,153,0.4);
30 }

 

::-webkit-scrollbar-button后面跟上:increment或者decrement表示上/下箭头,其他的伪类以此类推,大概使用方式就是这样,还有那个背景图可以使用svg的
效果图如大致如下(除滚动条部分请无视)


 

posted on 2015-10-19 15:29  onedayof2010  阅读(394)  评论(0编辑  收藏  举报