原生js监听滚动条_原生js实现滚动条

var SimulateScroll = (function(){var oParent = document.getElementById('wrap-scroll-bar'),

oBox= document.getElementById('scroll-bar'),

oWp= document.getElementById('container'),

oDiv= document.getElementById('cont'),

bDown= true,

downFun= function(ev){var oEv = ev ||event;var disY = oEv.clientY -oBox.offsetTop;

document.οnmοusemοve= function(ev){var oEv = ev ||event;var l = oEv.clientY -disY;

setTop(l);

};

document.οnmοuseup= function(){

document.οnmοusemοve= null;

document.οnmοuseup= null;

};return false;

};functionmouseWheel(ev){var oEv = ev ||event;

bDown= oEv.wheelDelta ? oEv.wheelDelta < 0 : oEv.detail > 0;if(bDown){

setTop(oBox.offsetTop+ 10);

}else{

setTop(oBox.offsetTop- 10);

}if(oEv.preventDefault){

oEv.preventDefault();

}return false;

}functionsetTop(l){var h = oParent.offsetHeight -oBox.offsetHeight;if(l < 0){

l= 0;

}else if(l >h){

l=h;

}

oBox.style.top= l + 'px';var bl = l/h;

oDiv.style.top=- (oDiv.offsetHeight - oWp.offsetHeight) * bl + 'px';

}functionsetBarHeight(){var containerHeight =oWp.offsetHeight,

contentHeight=oDiv.offsetHeight;

oBox.style.height= (containerHeight * containerHeight /contentHeight) + 'px';

}functionaddEvent(obj, sEv, fn){if(obj.addEventListener){

obj.addEventListener(sEv,fn,false);

}else{

obj.attachEvent('on' +sEv,fn);

}

}return{

oWp : oWp,

oDiv : oDiv,

scrollHidden :function(){

oBox.style.height= 0;

oBox.style.top= 0;

oDiv.style.top= 0;

oBox.οnmοusedοwn= null;

query.EventUtil.remove(oParent,'mousewheel', mouseWheel);

query.EventUtil.remove(oParent,'DOMMouseScroll', mouseWheel);

query.EventUtil.remove(oWp,'mousewheel', mouseWheel);

query.EventUtil.remove(oWp,'DOMMouseScroll', mouseWheel);

},

isScrollShow :function(){if(oDiv.offsetHeight >oWp.offsetHeight){

SimulateScroll.inIt();

}else{

SimulateScroll.scrollHidden();

}

},

inIt :function(){

setBarHeight();

oBox.οnmοusedοwn=downFun;

query.EventUtil.add(oParent,'mousewheel', mouseWheel);

query.EventUtil.add(oParent,'DOMMouseScroll', mouseWheel);

query.EventUtil.add(oWp,'mousewheel', mouseWheel);

query.EventUtil.add(oWp,'DOMMouseScroll', mouseWheel);

}

}

})();

SimulateScroll.isScrollShow();

query.EventUtil.add(window,'resize',SimulateScroll.isScrollShow);//query.EventUtil 为原生js事件库。如需使用以上滚动条方法,需加上事件库,或者改为jq写法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值