全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js 简易版滚动条实例(适用于移动端H5开发)

废话不多说,直接上代码

<!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开发)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# js  # 滚动条  # JS简单判断滚动条的滚动方向实现方法  # 原生js封装自定义滚动条  # js实现彩色条纹滚动条效果  # 原生js仿浏览器滚动条效果  # js实现简易垂直滚动条  # 基于JavaScript实现自定义滚动条  # JavaScript实现垂直滚动条效果  # js实现刷新页面后回到记录时滚动条的位置【两种方案可选】  # 给大家  # 适用于  # 希望能  # 这篇  # 多说  # 绑定  # 小编  # 大家多多  # 简易版  # top  # height  # px  # padding  # text  # javascript  # script  # type  # margin 


相关文章: 如何快速上传自定义模板至建站之星?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  寿县云建站:智能SEO优化与多行业模板快速上线指南  详解jQuery中基本的动画方法  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  内部网站制作流程,如何建立公司内部网站?  清除minerd进程的简单方法  如何选购建站域名与空间?自助平台全解析  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  免费网站制作appp,免费制作app哪个平台好?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  Swift中循环语句中的转移语句 break 和 continue  网站专业制作公司有哪些,做一个公司网站要多少钱?  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  武清网站制作公司,天津武清个人营业执照注销查询系统网站?  C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  哈尔滨网站建设策划,哈尔滨电工证查询网站?  制作企业网站建设方案,怎样建设一个公司网站?  定制建站哪家更专业可靠?推荐榜单揭晓  如何配置WinSCP新建站点的密钥验证步骤?  高端网站建设与定制开发一站式解决方案 中企动力  如何在腾讯云服务器上快速搭建个人网站?  如何选择高效可靠的多用户建站源码资源?  建站主机与服务器功能差异如何区分?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  如何在云服务器上快速搭建个人网站?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  如何通过智能用户系统一键生成高效建站方案?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何快速建站并高效导出源代码?  如何快速重置建站主机并恢复默认配置?  python的本地网站制作,如何创建本地站点?  湖北网站制作公司有哪些,湖北清能集团官网?  定制建站模板如何实现SEO优化与智能系统配置?18字教程  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  如何用PHP快速搭建CMS系统?  如何快速使用云服务器搭建个人网站?  红河网站制作公司,红河事业单位身份证如何上传?  php8.4新语法match怎么用_php8.4match表达式替代switch【方法】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何用花生壳三步快速搭建专属网站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何快速搭建高效可靠的建站解决方案? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。