jQuery滚动条插件

偶然发现IE下滚动条显示的太丑了,谷歌火狐还能设置点样式,在加上练习编写jQuery插件,就拿这个来练手,大神们多多指点. 仓库地址:jQuery滚动条插件仓库.

用法(滚动条Demo):

$("#divParent").cyScroll({
    content: $("#divChild"),
    Style: {
        "width": "6px",
        "background": "#BCBCBA"
    },
    BgStyle: {
        "background": "#EDEDEB"
    }
});

任何一个div都可以调用,说下插件内容: 由于火狐,IE8以下,其他浏览器值得滚动事件不同,首先同化了浏览器的滚动事件的绑定方法:

wheel: function (obj, callback) {
    var wheelType = "mousewheel"
    try {
        document.createEvent("MouseScrollEvents")
        wheelType = "DOMMouseScroll"
    } catch (e) { }
    this.addEvent(obj, wheelType, function (event) {
        if ("wheelDelta" in event) {//统一为±120,其中正数表示为向上滚动,负数表示向下滚动
            var delta = event.wheelDelta
            //opera 9x系列的滚动方向与IE保持一致,10后修正
            if (window.opera && opera.version() < 10)
                delta = -delta;
            //由于事件对象的原有属性是只读,我们只能通过添加一个私有属性delta来解决兼容问题
            event.delta = Math.round(delta) / 120; //修正safari的浮点 bug
        } else if ("detail" in event) {
            event.wheelDelta = -event.detail * 40//为FF添加更大众化的wheelDelta
            event.delta = event.wheelDelta / 120  //添加私有的delta
        }
        callback.call(obj, event);//修正IEthis指向
    });
}

同化了滚动事件后就好办了,然后就是实现模拟滚动了.

既然滚动条是div构成的那么可以发挥所有想的到的,比如滚动条div的背景可以是图片,更可以是动态图……可以用css3来实现炫酷的效果(可以自定义滚动条的样式).

下一篇细说下这个滚动条插件。