js自定义滚动条插件

知识点
  • $.extend 方法
  • jQuery 事件命名空间
  • 事件对象属性 : pageX 、 pageY
  • 获得原生事件 : e.originalEvent
  • 位置方法 : scrollTop、scrollLeft、scrollHeight、scrollWidth 、position
  • 滚轮事件的处理 :oEv.wheelDelta 、oEv.deltail

源码地址

演示地址

js
(function(win,doc,$){
   
    // 构造函数
    function CusScrollBar(options){
   
        this._init(options);
    }
    // 扩展原型对象
    $.extend(CusScrollBar.prototype,{
        // 初始化
        _init:function(options){
   
            var self=this;
            // 默认配置
            self.options={
                scrollDir      :"y",    // 滚动方向
                contSelector   :"",     // 滚动区域选择器
                barSelector    :"",     // 滚动条选择器
                sliderSelector :"",     // 滚动滑块选择器
                wheelStep      :10,     // 滚轮步长 ,默认为10 
                tabItemSelector:"",     // 标签类名
                tabActiveClass :"",     // 选中类名
                anchorSelector :"",     // 锚点选择器
                correctSelector:"",     // 校正元素
                articalSelector:"",     // 文章选择器
                isAnimate      :false,  // 是否开启动画 ,默认无动画
                speed          :800,    // 动画时长
            }
            $.extend(true,self.options,options || {});
            self._initDomEvent();
            return self;
        },
        // 初始化dom元素
        _initDomEvent:function(){
   
            var opts=this.options;
            // 滚动区域
            this.$cont=$(opts.contSelector);
            // 滚动条
            this.$slider=$(opts.sliderSelector);
            // 滑块
            this.$bar=opts.barSelector ? $(opts.barSelector) : self.$slider.parent();
            // 文档对象
            this.$doc=$(doc);
            // 标签项
            this.$tabItem=$(opts.tabItemSelector);
            // 锚点项
            this.$anchor=$(opts.anchorSelector);
            // 文章
            this.$article=$(opts.articalSelector);
            // 校正元素对象
            this.$correct=$(opts.correctSelector);
            // 启动函数
            this._initSliderDragEvent()
                ._bindContScroll()
                ._bindMouseWheel()
                ._initTabEvent()
                .initArticleHeight();
        },
        // 初始化滑块拖动功能
        _initSliderDragEvent:function(self){
   
            var slider=this.$slider,
                sliderEl=slider[0],
                self=this;
            if(sliderEl){
                var doc=this.$doc,
                    dragStratPagePosition,
                    dragStartScrollPosition,
                    dragContBarRate;
                function mousemoveHandler (e){
   
                    e.preventDefault;
                    console.log("mousemove");
                    if(dragStratPagePositio
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值