廢話不多說,直接上代碼
<!DOCTYPE html><html><head>  <title>滑動條</title>  <meta charset="utf-8">  <meta name="apple-mobile-web-app-capable" content="yes" />  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />  <script type="text/javascript" src="./hScoll.js"></script></head><style>  *{    margin: 0;    padding: 0;  }  #content{    margin-top: 50px;    width:100%;    height: 200px;    background: #eeeeee;    overflow: hidden;    position: relative;    /**transform: translate(0px, -70px);*/  }  #scoll{    overflow: hidden;  }  #content2{    margin-top: 50px;    width:100%;    height: 200px;    background: red;    overflow: hidden;    position: relative;    /**transform: translate(0px, -70px);*/  }  #scoll2{    overflow: hidden;  }  .scrollbars{    position: absolute;    height: 100%;    right: 0;    top: 0;    width: 5px;    border-radius: 5px;  }  .scollb{    position: absolute;    right: 0;    top: 0;    width: 100%;    background: #999999;    border-radius: 5px;  }</style><body>  <div id="content">    <div id="scoll">      <p>1111</p>      <p>2222</p>      <p>3333</p>      <p>4444</p>      <p>5555</p>      <p>6666</p>      <p>7777</p>      <p>8888</p>      <p>9999</p>      <p>0000</p>      <p>aaaa</p>      <p>bbbb</p>      <p>cccc</p>      <p>dddd</p>      <p>eeee</p>    </div>  </div></body><script>  var options ={    interactiveScrollbars:true  }  window.hScoll.buildScoll('content',options);</script></html>js代碼:
/** * Created by hechao on 2017/6/25. */(function(){  /**添加window對象hScoll屬性*/  window.hScoll = {    buildScoll:function(el,options){      App.init(el,options);    }  }  var App = {    /**初始化組件*/    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){      var point = App.getPoint(e);      App.startY = point.pageY;    },    /**手指移動時,滾動條滾動*/    touchmove:function(e){      e.preventDefault();//阻止默認行為      var point = 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) {      return e.touches ? e.touches[0] : e;    },    /**內容滑動*/    domove:function (y,t){      if(t){        App.scoll.setAttribute('style', 'transform: translate(0px, '+y+'px);transition:transform 300ms ease');      }else{        App.scoll.setAttribute('style', 'transform: translate(0px, '+y+'px);transition:transform 0ms ease');      }    },    /**滾動條滑動*/    domove2:function(y,t){      if(t){        App.scollb.setAttribute('style', 'transform: translate(0px, '+-parseFloat(y)*parseFloat(App.h)/parseFloat(App.ch)+'px);transition:transform 0ms ease;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:transform 0ms ease;height:'+parseFloat(App.h)*parseFloat(App.h)/parseFloat(App.ch) + 'px'+'');      }    }  }})();以上這篇js 簡易版滾動條實例(適用于移動端H5開發)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答