zoukankan      html  css  js  c++  java
  • javaScript系列---【移动端事件--touch.js知识点总结】

    1、移动端事件

    1、移动端事件

    移动端常用的事件,主要有三个,分别是:

    • ontouchstart(手指按下)

    • ontouchmove(手指移动)

    • ontouchend(手指抬起)

    注意:移动端事件绑定,要用addEventListener

    var box = document.getElementById('box');

    // 手指按下
    box.addEventListener('touchstart', function () {
        console.log('touchstart');
    }, false);
    // 手指移动 (在移动的过程中,会不断的触发)
    box.addEventListener('touchmove', function () {
        console.log('touchmove');
    }, false);

    // 手指抬起
    box.addEventListener('touchend', function () {
        console.log('touchend');
    }, false);

    2、移动端事件和PC端事件区别

    • 1、PC端事件比移动端的慢300ms

    • 2、移动端事件会有点透的问题

    3、移动端事件对象

    移动端事件:相对于pc端事件,它多出一个关于手指的列表

    • ev.touches 当前位于屏幕上的所有手指的一个列表

    • ev.targetTouches:位于当前DOM元素上的手指的一个列表

    • ev.changedTouches:涉及当前事件的手指的一个列表(一般使用这个)

    var box = document.getElementById('box');
    ​
    // 这个事件发生的时候,跟这个事件有关的一些详细信息保存在一个对象中,这个对象就是事件对象
    box.addEventListener('touchstart', function (ev) {
        // console.log(ev); // 事件对象
    // 手指的列表:类数组
        console.log(ev.touches); // 当前位于屏幕上的所有手指的一个列表
        console.log(ev.targetTouches); // 位于当前DOM元素上的手指的一个列表
        console.log(ev.changedTouches); // 涉及当前事件的手指的一个列表(一般使用这个)
    var touch = ev.changedTouches[0]; // 其中的一根手指
        // console.log(touch);
        console.log(touch.target); // 目标源
        console.log(touch.pageX, touch.pageY); // 到文档
        console.log(touch.clientX, touch.clientY); // 到可视区
        console.log(touch.screenX, touch.screenY); // 到屏幕
    ​
        console.log(touch.radiusX, touch.radiusY); // 手指的半径
        console.log('手指的标识', touch.identifier); // 手指的标识
        console.log('压力大小', touch.force); // 压力大小
        console.log('旋转角度', touch.rotationAngle); // 旋转角度
    })

    2、touch.js库

    1、介绍

    Touch.js是移动设备上的手势识别与事件库,由百度云Clouda团队维护,也是在百度内部广泛使用的开发工具

    Touch.js手势库专为移动设备设计, 请在Webkit内核浏览器中使用。

    下载:https://www.bootcdn.cn/touchjs

    2、事件绑定

    格式:touch.on( element, types, callback );

    // touch.on(element, types, callback);
    // 参数说明:
    //      element(element或string):事件代理元素对象、选择器;
    //      types(string):事件的类型(多为手势事件,参见第五节,手势事件),可接受多个事件以空格分开;支持原生事件;
    //      callback(function):事件处理函数, 移除函数与绑定函数必须为同一引用;回调函数中的this即触发事件的这个元素;
    var box = document.getElementById('box');
    touch.on(box, 'touchstart', function () {
        console.log('touchstart');
    });
    ​
    ​
    touch.on('#box', 'touchstart', function () {
        console.log('touchstart');
    });
    ​
    // 长按 点击 双击
    touch.on('#box', 'hold tap doubletap', function () {
        console.log('touchstart');
        console.log(this);
    });

    3、事件代理

    • 格式:touch.on(element, types, selector, callback);

    • callback中的this,即被代理的这个元素

    <ul>
        <li>吃饭</li>
        <li>睡觉</li>
        <li class="abc">打豆豆</li>
    </ul>
    // touch.on(element, types, selector, callback);
    ​
    touch.on('ul', 'tap', 'li', function () {
        // console.log(this);
        this.style.backgroundColor = 'red';
    });
    ​
    ​
    touch.on('ul', 'tap', '.abc', function () {
        // console.log(this);
        this.style.backgroundColor = 'red';
    });

    4、事件对象

    // 不同的事件有不同的事件对象属性
    touch.on('#box', 'swipe', function (ev) {
        // console.log(ev); // touch包装过的事件对象
        // console.log(ev.originEvent); // 返回原生的事件对象
    ​
        console.log('事件的名称:' + ev.type); // 事件的名称 
        console.log('旋转角度:' + ev.rotation); // 旋转角度
        console.log('缩放比例:' + ev.scale); // 缩放比例
        console.log('操作的方向属性:' + ev.direction); // 操作的方向属性
        console.log('操作的手势数量:' + ev.fingersCount); // 操作的手势数量
        console.log('相关位置信息:', ev.position); // 相关位置信息, 不同的操作产生不同的位置信息,它是一个对象
        console.log('swipe类两点之间的位移:' + ev.distance); // swipe类两点之间的位移
        console.log('x方向的位移值:' + ev.distanceX); // x手势事件x方向的位移值, 向左移动时为负数
        console.log('y方向的位移值:' + ev.distanceY); // 手势事件y方向的位移值, 向上移动时为负数
        console.log('旋转的角度:' + ev.angle); // rotate事件触发时旋转的角度
        console.log('时间戳:' + ev.duration); // touchstart 与 touchend之间的时间戳
    });

    5、手势事件

    Touch.js的手势事件有很多,主要分为:缩放类、旋转类、滑动类、拖动类、长按和点击这么几类。

     

  • 相关阅读:
    拷贝构造函数的参数类型必须是引用
    [设计模式] 23 访问者模式 visitor Pattern
    [设计模式] 20 状态模式 State Pattern
    [设计模式] 19 观察者模式 Observer Pattern
    [设计模式] 18 备忘录模式Memento Pattern
    [设计模式] 17 中介者模式 Mediator Pattern
    [设计模式] 16 迭代器模式 Iterator Pattern
    [设计模式] 15 解释器模式 Interpreter
    [设计模式] 21 策略模式 Strategy
    图灵測试,測的究竟是什么?
  • 原文地址:https://www.cnblogs.com/chenhaiyun/p/14650532.html
Copyright © 2011-2022 走看看