iscroll和hammer手势

206 阅读1分钟

iscroll滚动

使用

    <style>
        .box{
            width: 200px;
            height: 200px;
            border: 2px solid #000;
            overflow: hidden;
        }
        li{
            width: 200px;
            height: 40px;
        }
    </style>
    <script src="/js/iscroll.js"></script>
    <div class="box">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
            <li>6</li>
            <li>7</li>
            <li>8</li>
            <li>9</li>
            <li>0</li>
        </ul>
    </div>
    <script>
        window.onload=function(){
            let iScroll= new IScroll('.box',{
              bounce:false,//禁止拖动超过盒子大小
                bounceTime:600,//拖动超过盒子大小的时间
                scrollX:true,//拖动的方向
                scrollY:false,//拖动的方向
            });
        console.log(iScroll);
        }
       
    </script>

一些常用的参数

字段默认值含义
bouncefalse禁止拖动超过盒子大小
bounceTime600拖动超过盒子大小的时间
scrollX
scrollY
默认x为false,y为true拖动的方向
freeScroll是否允许自由拖动,斜着拖动
probeType1/2/3探测优先级

操控的是第一个子元素

上拉、下拉

可以对scroll进行监听,到多少刷新

 scroll.on('scroll',function(){
                console.log(scroll.y);
   })

hammer

1.简介

移动端手势库、

支持单点、多点、触摸多种手势

初始化

 let box = document.querySelector('.box')
 let hammer =new Hammer(box)
        hammer.on('tap',ev=>{
            console.log(ev.center.x,ev.center.y);
            console.log(ev);
        })

2.常用的手势

2.1 tap

指定的DOM区域内,轻拍或点击

2.2 press

长按,超过250ms。 可以用于复制

2.3swipe

快速滑动

有四种

  • swipeleft: 向左滑动
  • swiperight: 向右滑动
  • swipeup: 向上滑动
  • swipedown: 向下滑动

2.4 pan

慢速滑动

  • panstart: 拖动开始
  • panmove: 拖动过程
  • panend: 拖动结束
  • pancancel: 拖动取消
  • panleft: 向左拖动
  • panright: 向右拖动
  • panup: 向上拖动
  • pandown: 向下拖动

2.5 rotate

旋转

  • rotatestart: 旋转开始

  • rotatemove: 旋转过程

  • rotateend: 旋转结束

  • rotatecancel: 旋转取消

    因为性能原因,这个需要引入

 let config= hammer.get('rotate')
       config.set({enabled: true})
  hammer.on('rotatemove', ev => {
            console.log(ev.rotation);//单位是角度
        })

2.6 pinch

缩放

  • pinchstart: 多点触控开始
  • pinchmove: 多点触控过程
  • pinchend: 多点触控结束
  • pinchcancel: 多点触控取消
  • pinchin: 多点触控时两手指越来越近
  • pinchout: 多点触控时两手指越来越远

因为性能原因,这个需要引入

        let config = hammer.get('pinch')
        config.set({ enabled: true })
        hammer.on('pinchmove', ev => {
            console.log(ev.scale);
        })

默认的 pan 仅支持水平方向,可以选择启用全部方向,swipe 也可以启用垂直方向

hammertime.get('pan').set({ direction: Hammer.DIRECTION_ALL });
hammertime.get('swipe').set({ direction: Hammer.DIRECTION_VERTICAL });