jQuery Scrollbar是一款非常实用的跨浏览器响应式滚动条美化jQuery插件。该滚动条插件支持IE7+浏览器,提供多种主题风格的滚动条样式。它采用响应式设计,支持垂直和水平滚动条。它的特点还有:

  • 使用简单
  • 没有固定的宽度和高度
  • 响应式设计
  • 可以通过CSS来自定义滚动条样式
  • 标准的滚动条行为
  • 支持垂直和水平滚动条
  • 可重新初始化滚动条
  • 支持外部滚动条
  • 浏览器支持:IE7+, Firefox, Opera, Chrome, Safari
  • jQuery滚动条作为angular.js指令
  • 支持文本框(Textarea)的滚动条

使用方法

HTML结构

你可以在任何容器中使用该滚动条插件,例如在一个<div>中,它的HTML结构如下:

<div class="scrollbar-inner">
    <p class="permanent">
        Simple inner scrollbar over content
    </p>
    <p>...</p>
    <p>...</p>
    <p>...</p>
</div>              
              
CSS样式

滚动条的基本样式如下:

.scroll-wrapper {
    overflow: hidden !important;
    padding: 0 !important;
    position: relative;
}
.scroll-wrapper > .scroll-content {
    border: none !important;
    box-sizing: content-box !important;
    height: auto;
    left: 0;
    margin: 0;
    max-height: none;
    max-width: none !important;
    overflow: scroll !important;
    padding: 0;
    position: relative !important;
    top: 0;
    width: auto !important;
}
.scroll-wrapper > .scroll-content::-webkit-scrollbar {
    height: 0;
    width: 0;
}
.scroll-element {
    display: none;
}
.scroll-element, .scroll-element div {
    box-sizing: content-box;
}
.scroll-element.scroll-x.scroll-scrollx_visible,
.scroll-element.scroll-y.scroll-scrolly_visible {
    display: block;
}
.scroll-element .scroll-bar,
.scroll-element .scroll-arrow {
    cursor: default;
}
.scroll-textarea {
    border: 1px solid #cccccc;
    border-top-color: #999999;
}
.scroll-textarea > .scroll-content {
    overflow: hidden !important;
}
.scroll-textarea > .scroll-content > textarea {
    border: none !important;
    box-sizing: border-box;
    height: 100% !important;
    margin: 0;
    max-height: none !important;
    max-width: none !important;
    overflow: scroll !important;
    outline: none;
    padding: 2px;
    position: relative !important;
    top: 0;
    width: 100% !important;
}
.scroll-textarea > .scroll-content > textarea::-webkit-scrollbar {
    height: 0;
    width: 0;
}
.scrollbar-inner > .scroll-element,
.scrollbar-inner > .scroll-element div
{
    border: none;
    margin: 0;
    padding: 0;
    position: absolute;
    z-index: 10;
}
.scrollbar-inner > .scroll-element div {
    display: block;
    height: 100%;
    left: 0;
    top: 0;
    width: 100%;
}
.scrollbar-inner > .scroll-element.scroll-x {
    bottom: 2px;
    height: 8px;
    left: 0;
    width: 100%;
}
.scrollbar-inner > .scroll-element.scroll-y {
    height: 100%;
    right: 2px;
    top: 0;
    width: 8px;
}
.scrollbar-inner > .scroll-element .scroll-element_outer {
    overflow: hidden;
}
.scrollbar-inner > .scroll-element .scroll-element_outer,
.scrollbar-inner > .scroll-element .scroll-element_track,
.scrollbar-inner > .scroll-element .scroll-bar {
    -webkit-border-radius: 8px;
    -moz-border-radius: 8px;
    border-radius: 8px;
}
.scrollbar-inner > .scroll-element .scroll-element_track,
.scrollbar-inner > .scroll-element .scroll-bar {
    -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";
    filter: alpha(opacity=40);
    opacity: 0.4;
}
.scrollbar-inner > .scroll-element .scroll-element_track { background-color: #e0e0e0; }
.scrollbar-inner > .scroll-element .scroll-bar { background-color: #c2c2c2; }
.scrollbar-inner > .scroll-element:hover .scroll-bar { background-color: #919191; }
.scrollbar-inner > .scroll-element.scroll-draggable .scroll-bar { background-color: #919191; }
.scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_track { left: -12px; }
.scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_track { top: -12px; }
.scrollbar-inner > .scroll-element.scroll-x.scroll-scrolly_visible .scroll-element_size { left: -12px; }
.scrollbar-inner > .scroll-element.scroll-y.scroll-scrollx_visible .scroll-element_size { top: -12px; }             
              
初始化插件

在页面DOM元素加载完成之后,可以通过下面的方法来初始化该插件。

jQuery(document).ready(function(){
    jQuery('.scrollbar-inner').scrollbar();
});    
              

配置参数

下面是该滚动条插件的一些可用配置参数。

  • autoScrollSize:根据容器的尺寸来自动计算滚动条的尺寸。默认值为true
  • autoUpdate:是否在容器尺寸改变时自动更新滚动条。默认值为true
  • disableBodyScroll:如果设置为true并且鼠标在主容器中滚动,页面将不会跟随滚动。默认值为false
  • duration:滚动条的滚动速度。单位毫秒,默认值200。
  • ignoreMobile:是否在移动手机上初始化自定义的滚动条。默认值为false
  • ignoreOverlay:在原生滚动条覆盖内容的时候是否在浏览器中初始化自定义滚动条(Mac OS和移动手机等)。默认值:false
  • scrollStep:滚动的步长。单位像素,默认值30。
  • showArrows:是否在高级滚动条中添加class来显示滚动条的箭头。默认值false
  • stepScrolling:在用鼠标拖动滚动条时是否模仿滚动步长。默认值true
  • scrollx:水平滚动条的类型:simple, advanced, HTML 或 jQuery选择器。默认值:simple
  • scrolly:垂直滚动条的类型:simple, advanced, HTML 或 jQuery选择器。默认值:simple
  • onDestroy:当滚动条被销毁时的回调函数。
  • onInit:滚动条第一次初始化时的回调函数。
  • onScroll:在容器内容滚动时的回调函数。
  • onUpdate:滚动条更新之前的回调函数。

注意事项

  • 滚动元素不要设置padding,margin,left和top值。
  • 在IE8中不要设置max-height,这样做会使浏览器崩溃。
  • MacOS中Firefox浏览器不能使用该插件来自定义滚动条。