天天看點

jQuery插件之 Nicescroll滾動條

Nicescroll滾動條插件是一個非常強大的基于JQUERY的滾動條插件,不需要增加額外的css,幾乎全浏覽器相容。ie6+,實作隻需要一段代碼,侵入性非常小,樣式可完全自定義,支援觸摸事件,可在觸摸屏上使用。

效果圖:

jQuery插件之 Nicescroll滾動條
//基礎用法
 $(document).ready(
   function() { 
     $("html").niceScroll();
   }
 );
           

注意:一定要放在 $(document).ready 中進行初始化!

隐藏滾動條:(當在同一頁面中使用多個nicescroll插件時,要及時隐藏用完的nicescroll對象,加載時,需要先show,再resize。)

檢測滾動條是否重置大小(當視窗改變大小時):

滾動到某個位置:

$("#mydiv").getNiceScroll().doScrollLeft(x, duration); // Scroll X Axis;第一個參數為滾動的位置,第二個為滾動需要的時間
 $("#mydiv").getNiceScroll().doScrollTop(y, duration); // Scroll Y Axis
           

設定各種參數:

$("#thisdiv").niceScroll({
        cursorcolor: "#424242", // 改變滾動條顔色,使用16進制顔色值
        cursoropacitymin: , // 當滾動條是隐藏狀态時改變透明度, 值範圍 1 到 0
        cursoropacitymax: , // 當滾動條是顯示狀态時改變透明度, 值範圍 1 到 0
        cursorwidth: "5px", // 滾動條的寬度,機關:便素
        cursorborder: "1px solid #fff", // CSS方式定義滾動條邊框
        cursorborderradius: "5px", // 滾動條圓角(像素)
        zindex: "auto" | <number>, // 改變滾動條的DIV的z-index值
        scrollspeed: , // 滾動速度
        mousescrollstep: , // 滑鼠滾輪的滾動速度 (像素)
        touchbehavior: false, // 激活拖拽滾動
        hwacceleration: true, // 激活硬體加速
        boxzoom: false, // 激活放大box的内容
        dblclickzoom: true, // (僅當 boxzoom=true時有效)輕按兩下box時放大
        gesturezoom: true, // (僅 boxzoom=true 和觸屏裝置時有效) 激活變焦當out/in(兩個手指外張或收縮)
        grabcursorenabled: true // (僅當 touchbehavior=true) 顯示“抓住”圖示display "grab" icon
        autohidemode: true, // 隐藏滾動條的方式, 可用的值: 
          true | // 無滾動時隐藏
          "cursor" | // 隐藏
          false | // 不隐藏,
          "leave" | // 僅在指針離開内容時隐藏
          "hidden" | // 一直隐藏
          "scroll", // 僅在滾動時顯示        
        background: "", // 軌道的背景顔色
        iframeautoresize: true, // 在加載事件時自動重置iframe大小
        cursorminheight: , // 設定滾動條的最小高度 (像素)
        preservenativescrolling: true, // 你可以用滑鼠滾動可滾動區域的滾動條和增加滑鼠滾輪事件
        railoffset: false, // 可以使用top/left來修正位置
        bouncescroll: false, // (only hw accell) 啟用滾動跳躍的内容移動
        spacebarenabled: true, // 當按下空格時使頁面向下滾動
        railpadding: { top: , right: , left: , bottom:  }, // 設定軌道的内間距
        disableoutline: true, // 當選中一個使用nicescroll的div時,chrome浏覽器中禁用outline
        horizrailenabled: true, // nicescroll可以管理水準滾動
        railalign: right, // 對齊垂直軌道
        railvalign: bottom, // 對齊水準軌道
        enabletranslate3d: true, // nicescroll 可以使用CSS變型來滾動内容
        enablemousewheel: true, // nicescroll可以管理滑鼠滾輪事件
        enablekeyboard: true, // nicescroll可以管理鍵盤事件
        smoothscroll: true, // ease動畫滾動
        sensitiverail: true, // 單擊軌道産生滾動
        enablemouselockapi: true, // 可以用滑鼠鎖定API标題 (類似對象拖動)
        cursorfixedheight: false, // 修正光标的高度(像素)
        hidecursordelay: , // 設定滾動條淡出的延遲時間(毫秒)
        directionlockdeadzone: , // 設定死區,為激活方向鎖定(像素)
        nativeparentscrolling: true, // 檢測内容底部便于讓父級滾動
        enablescrollonselection: true, // 當選擇文本時激活内容自動滾動
        cursordragspeed: , // 設定拖拽的速度
        rtlmode: "auto", // DIV的水準滾動從左邊開始
        cursordragontouch: false, // 使用觸屏模式來實作拖拽
        oneaxismousemode: "auto", // 當隻有水準滾動時可以用滑鼠滾輪來滾動,如果設為false則不支援水準滾動,如果設為auto支援雙軸滾動
        scriptpath: "" // 為boxmode圖檔自定義路徑 ("" => same script path)
        preventmultitouchscrolling: true // 防止多觸點事件引發滾動
    });
           

當插件放在具有absolute浮動的容器中,并設定了top值時,插件的top會出現問題,解決方法使用插件的railoffset屬性:

railoffset, you can add offset top/left for rail position (default:false)
           

加載資料的時候nicescroll滾動條閃爍,還有對絕對定位的元素(例如下拉框)使用滾動條,特别是在需要滾動條比較多的頁面,導緻位置錯亂,這些問題需要對設定滾動條的元素的直接子元素設定,官方給出的答案是:

$('#addContent_scroll_wrap').niceScroll('#sumStackColumn',{'cursorcolor':'#686868','cursorborder':'none','smoothscroll': 'false','autohidemode':false});
           

但是之後仍然發現一個問題,在頁面比較複雜的情況下,可能會出現,下拉框出來了,但是滾動條沒出來,官方給出的說法是:當在同一頁面中使用多個nicescroll插件時,要及時隐藏用完的nicescroll對象,加載時,需要先show,再resize。

是以采用resize()的方法,重置了滾動條,但是一定要注意,這裡選擇滾動條的對象,一定不能選錯,否則也是無效的:

$('#addContent_scroll_wrap').getNiceScroll().show();
 $('#addContent_scroll_wrap').getNiceScroll().resize();
           

示例代碼

<!DOCTYPE html>
<html>
<head>
    <script src="jquery-2.1.4.js"></script>
    <script src="jquery.nicescroll.js"></script>
</head>
<body>
<div id="div1" style="width:100%;height:600px;overflow:auto;">
    <h1>這裡是滾動條插件niceScroll的測試頁面</h1>
    <h2>這裡是滾動條插件niceScroll的測試頁面</h2>
    <h3>這裡是滾動條插件niceScroll的測試頁面</h3>
    <h4>這裡是滾動條插件niceScroll的測試頁面</h4>
    <h5>這裡是滾動條插件niceScroll的測試頁面</h5>
    <h6>這裡是滾動條插件niceScroll的測試頁面</h6>
    <p>這裡是滾動條插件niceScroll的測試頁面</p>
    <span>這裡是滾動條插件niceScroll的測試頁面</span>
    <h1>下面是帶有滾動條的子div</h1>
    <div  id="div2" style="width:350px;height:200px;overflow:auto;border:1px solid red;">
        <div id="warp">
            <h1>我是帶有滾動條的子div</h1>
            <h2>我是帶有滾動條的子div</h2>
            <h3>我是帶有滾動條的子div</h3>
            <h4>我是帶有滾動條的子div</h4>
            <h5>我是帶有滾動條的子div</h5>
            <h6>我是帶有滾動條的子div</h6>
        </div>
    </div>
    <h1>這裡是滾動條插件niceScroll的測試頁面</h1>
    <h2>這裡是滾動條插件niceScroll的測試頁面</h2>
    <h3>這裡是滾動條插件niceScroll的測試頁面</h3>
    <h4>這裡是滾動條插件niceScroll的測試頁面</h4>
    <h5>這裡是滾動條插件niceScroll的測試頁面</h5>
    <h6>這裡是滾動條插件niceScroll的測試頁面</h6>
</div>
</body>
<script>
    $(function () {
        $("#div1").niceScroll({
            cursorborder: "",
            cursorcolor: "#00F",
            boxzoom: false,
            autohidemode: false
        });
        $("#div2").niceScroll('#warp', {
            cursorborder: "",
            cursorcolor: "#00F",
            boxzoom: false,
            autohidemode: false
        });
    });
</script>
</html>
           

位址:http://www.cnblogs.com/jinqi79731/p/nicescroll.html

官網:https://nicescroll.areaaperta.com/how-to-use/