铭哥和佩佩的博客

铭哥和佩佩的博客分享Python、PHP、JavaScript、HTML5、CSS3等各种知识

CSS修改滚动条样式

IE浏览器自定义滚动条样式

IE是最早实现滚动条样式设置的,通过相关CSS属性即可

  • scrollbar-arrow-color: color; 三角箭头的颜色
  • scrollbar-face-color: color; 立体滚动条的颜色(滑块颜色)
  • scrollbar-3dlight-color: color; 立体滚动条亮边的颜色
  • scrollbar-highlight-color: color; 滚动条的高亮颜色(左阴影?)
  • scrollbar-shadow-color: color; 立体滚动条阴影的颜色(滑块阴影)
  • scrollbar-darkshadow-color: color; 立体滚动条外阴影的颜色
  • scrollbar-track-color: color; 立体滚动条背景颜色(滚动条导轨)
  • scrollbar-base-color:color; 滚动条的基色

示例代码

html{
    scrollbar-arrow-color:red;  /*三角箭头颜色*/
    scrollbar-face-color:yellow; /*滑块颜色*/
    scrollbar-shadow-color: green; /*滑块阴影*/
    scrollbar-track-color: #f90; /*滚动条导轨颜色*/
}

经过实际测试,好多属性并无明显效果。示例代码中所有使用的属性,都是有明显效果的。 IE的相关设置,只能修改一下相关颜色,其他无法设置。


Webkit系列浏览器自定义滚动条样式

以webkit作为内核的浏览器主要有chrome、Safari、Opera以及各种国产壳浏览器,另外移动端浏览器基本上一wekit内核为主,所以所webkit内核浏览器占据了大量的市场份额。 webkit浏览器定义了大量的 伪元素选择器

  • ::-webkit-scrollbar 滚动条整体部分
  • ::-webkit-scrollbar-button 滚动条两端的按钮
  • ::-webkit-scrollbar-track 滑动轨道
  • ::-webkit-scrollbar-track-piece 内层轨道,滚动条中间部分(除去)
  • ::-webkit-scrollbar-thumb 滑块
  • ::-webkit-scrollbar-corner 边角
  • ::-webkit-resizer1 定义右下角拖动块的样式

除了这些伪元素选择器,webkit还定义了大量的伪类选择器

  • :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 等伪类同样可以用于滚动条中。

示例代码

/*定义滚动条的高宽*/
body::-webkit-scrollbar {
    width: 16px;
    height: 16px;
}
/*CSS的坐标系,左上角为(0,0),往右往下为增加,往上往左为减少*/

/*定义滚动条渐增按扭的样式 */
body::-webkit-scrollbar-button:end:increment {
    background-image: url(./images/scroll_cntrl_dwn.png);
}

/* 定义滚动条渐减按扭的样式 */
body::-webkit-scrollbar-button:start:decrement {
    background-image: url(./images/scroll_cntrl_up.png);
}
    
/* 垂直滚动条的第三层轨道的上段 */
body::-webkit-scrollbar-track-piece:vertical:start {
    background-image: url(./images/scroll_gutter_top.png), url(./images/scroll_gutter_mid.png);
    background-repeat: no-repeat, repeat-y;
}

/* 垂直滚动条的第三层轨道的下段 */
body::-webkit-scrollbar-track-piece:vertical:end {
    background-image: url(./images/scroll_gutter_btm.png), url(./images/scroll_gutter_mid.png);
    background-repeat: no-repeat, repeat-y;
    background-position: bottom left, 0 0;
}

/* 垂直滚动条的滑动块 */
body::-webkit-scrollbar-thumb:vertical {
    height: 56px;
    -webkit-border-image: url(./images/scroll_thumb.png) 8 0 8 0 stretch stretch;
    border-width: 8 0 8 0;
}

添加新评论