js 简易版滚动条实例(适用于移动端H5开发)
废话不多说,直接上代码
滑动条 1111
2222
3333
4444
5555
6666
7777
8888
9999
0000
aaaa
bbbb
cccc
dddd
eeee
js代码:
/**
*Createdbyhechaoon2017/6/25.
*/
(function(){
/**添加window对象hScoll属性*/
window.hScoll={
buildScoll:function(el,options){
App.init(el,options);
}
}
varApp={
/**初始化组件*/
init:function(el,option){
App.options=option;
App.prevY=0;
App.el=document.getElementById(el);
App.scoll=this.el.children[0];
App.h=this.el.offsetHeight;//滑动范围高度
App.ch=this.el.scrollHeight;//内容的高度
if(parseFloat(this.h)<=parseFloat(this.ch)){
App.sdiv=document.createElement('div');
App.scollb=document.createElement('div');
App.sdiv.setAttribute('class','scrollbars');
App.scollb.setAttribute('class','scollb');
App.scollb.style.height=parseFloat(this.h)*parseFloat(this.h)/parseFloat(this.ch)+'px';
App.el.appendChild(this.sdiv);
App.sdiv.appendChild(this.scollb);
App.initevent();
}
},
/**绑定事件*/
initevent:function(){
App.el.addEventListener('touchstart',App.touchstart,false);
App.el.addEventListener('touchmove',App.touchmove,false);
App.el.addEventListener('touchend',App.touchend,false);
},
/**记录滑动初始位置*/
touchstart:function(e){
varpoint=App.getPoint(e);
App.startY=point.pageY;
},
/**手指移动时,滚动条滚动*/
touchmove:function(e){
e.preventDefault();//阻止默认行为
varpoint=App.getPoint(e);
App.moveY=point.pageY;
App.deltaY=App.startY-App.moveY;
if((App.prevY-App.deltaY)<=0&&(App.prevY-App.deltaY)>=-(App.ch-App.h)){
App.domove(App.prevY-App.deltaY);
}
if(App.options.interactiveScrollbars){
App.domove2(App.prevY-App.deltaY);
}else{
if((App.prevY-App.deltaY)<=0&&(App.prevY-App.deltaY)>=-(App.ch-App.h)){
App.domove2(App.prevY-App.deltaY);
}
}
},
/**手指离开时,判断位置*/
touchend:function(e){
App.prevY=App.prevY-App.deltaY;
if(App.prevY>=0){
App.prevY=0;
App.domove(App.prevY,true);
App.domove2(App.prevY,true);
}
if(App.prevY<=-(App.ch-App.h)){
App.prevY=-(App.ch-App.h);
App.domove(App.prevY,true);
App.domove2(App.prevY,true);
}
},
getPoint:function(e){
returne.touches?e.touches[0]:e;
},
/**内容滑动*/
domove:function(y,t){
if(t){
App.scoll.setAttribute('style','transform:translate(0px,'+y+'px);transition:transform300msease');
}else{
App.scoll.setAttribute('style','transform:translate(0px,'+y+'px);transition:transform0msease');
}
},
/**滚动条滑动*/
domove2:function(y,t){
if(t){
App.scollb.setAttribute('style','transform:translate(0px,'+-parseFloat(y)*parseFloat(App.h)/parseFloat(App.ch)+'px);transition:transform0msease;height:'+parseFloat(App.h)*parseFloat(App.h)/parseFloat(App.ch)+'px'+'');
}else{
App.scollb.setAttribute('style','transform:translate(0px,'+-parseFloat(y)*parseFloat(App.h)/parseFloat(App.ch)+'px);transition:transform0msease;height:'+parseFloat(App.h)*parseFloat(App.h)/parseFloat(App.ch)+'px'+'');
}
}
}
})();
以上这篇js简易版滚动条实例(适用于移动端H5开发)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。