移动端代表性的插件学习

Hammer.js

Hammer.js是一个开源的,轻量级的javascript库,它可以在不需要依赖其他东西的情况下识别触摸,鼠标事件。它可以实现手势识别--点击、长按、滑动、拖动、旋转、缩放

实例化:
let myHammmer = new Hammer(对象,{配置}) // 实例化Hammer对象myHammmer

常用事件

  • tap 点击 快速按下 抬起 时间限制是250ms
  • press 点击 按下 ,没抬起 时间超过250ms
  • swipe 快速滑动
  • pan 按住拖动
  • pinch 缩放
  • rotate 旋转
myHammer.on('tap',function(){});
myHammer.on('press',function(){});
myHammer.On('swipe',function(){});
myHammer.on('pan',function(){});
myHammer.on('pinch',function(){});
myHammer.on('rotate',function(){});

iscroll.js:移动端滚动插件

html布局:wrapper的第一个子元素content会被设置为可以滚动
<div class="wrapper">
  <div class="content"></div>
</div>

实例化:
let iscroll = new IScroll('.wrapper',{配置})

一些配置:

  • scrollX(左右拖 默认undefined)
  • scrollY(上下拖 默认是true 可以拖)
  • startX,startY(滚动区域起始位置(x,y))
  • bounce:回弹(默认是true,允许回弹)
  • bounceTime: 回弹时间
  • freeScroll: 方向锁定(默认是undefined 锁定的)
  • mouseWheel: 鼠标滚轮操作(默认true)
  • momentum: 物理引擎(默认true是打开的)
  • probeType: 有三个参数可选--1,2,3
    1优先级最低,定时器监控
    2优先级高,touchmove监控
    3优先级极高,放弃了transition,直接用JS实现动画(request) 但性能极低 一般选2

事件

  • beforeScrollStart:滚动开始之前 鼠标按下
  • scrollStart:滚动开始时
  • scroll:滚动时 引入iscroll-probe.js文件才能触发调用
  • scrollEnd:鼠标松开
  • scrollCancel:取消滚动

demo

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=1.0,maximum-scale=1.0">
    <title>iscroll</title>
    <style media="screen">
      body,div{margin:0;padding:0;}
      body{overflow-x: hidden;}
      .wrapper {
        position: relative;
        margin: 50px auto;
        overflow: hidden;
        width: 500px;
        height: 500px;
        background: #ccc;
      }
      .content {
        position: relative;
        z-index: 3;
        width: 2000px;
        height: 2000px;
        background: -webkit-linear-gradient(red,yellow);
      }
      .dropload {
        position: absolute;
        z-index: 2;
        width: 100%;
        top: 0;
        left: 0;
        text-align: center;
        line-height: 30px;
      }
    </style>
  </head>
  <body>
    <div class="wrapper">
      <div class="content"></div>
      <div class="dropload">下拉刷新</div>
    </div>
    <script src="iscroll-probe.js" charset="utf-8"></script>
    <script type="text/javascript">
      let iscroll = new IScroll(".wrapper",{ // 创建实例
      scrollX: true,
      probeType: 2
    });
    let drop = document.querySelector(".dropload");
    let releaseY = 0;
    iscroll.on("scrollStart",function(){
      releaseY = 0;
    });
    iscroll.on("scroll",function(){
      if(iscroll.y>=80){
        drop.innerHTML = "松手刷新";
      }else{
        drop.innerHTML = "下拉刷新";
      }
      releaseY = iscroll.y;
    });
    iscroll.on("scrollEnd",function(){
      if(releaseY>=80){
        alert("刷新");
      }else{
        alert("不刷新");
      }
    })
    </script>
  </body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容