移动端触摸事件

原文链接:http://caibaojian.com/641.html

触摸事件

via三种在规范中列出并跨移动设备广泛实现的基本触摸事件:原文来自:http://caibaojian.com/641.html

  • touchstart:手指放在一个 DOM 元素上。
  • touchmove:手指拖动一个 DOM 元素。
  • touchend:手指从一个 DOM 元素上移开。

每个触摸事件都包括了三个触摸列表:

  • touches:当前位于屏幕上的所有手指动作的列表。
  • targetTouches:位于当前 DOM 元素上的手指动作的列表。
  • changedTouches:涉及当前事件的手指动作的列表。例如,在一个 touchend 事件中,这将是移开手指。

这些列表由包含触摸信息的对象组成:

  • identifier:一个数字,用于唯一标识触摸会话中的当前手指。
  • target:作为动作目标的 DOM 元素。
  • 客户端/页面/屏幕坐标:动作在屏幕上发生的位置。
  • 半径坐标和 rotationAngle:画出与手指形状类似的椭圆形。原文链接:http://caibaojian.com/641.html

    可触控的应用程序

    touchstarttouchmove 和 touchend 事件提供了一组足够丰富的功能,可支持几乎任何类型的基于触摸的交互,其中包括所有常见的多点触控手势(如开合缩放、旋转等)。

    via下面这段代码可让您使用单指触摸随意拖动一个 DOM 元素:原文来自:http://caibaojian.com/641.html

    var obj = document.getElementById('id');
    obj.addEventListener('touchmove', function(event) {
      // If there's exactly one finger inside this element
      if (event.targetTouches.length == 1) {
        var touch = event.targetTouches[0];
        // Place element where the finger is
        obj.style.left = touch.pageX + 'px';
        obj.style.top = touch.pageY + 'px';
      }
    }, false);

    下面的示例显示了屏幕上当前所有的触点,其作用就是用来感受一下设备的响应性。

    //code from http://caibaojian.com/641.html
    // Setup canvas and expose context via ctx variable
    canvas.addEventListener('touchmove', function(event) {
      for (var i = 0; i < event.touches.length; i++) {
        var touch = event.touches[i];
        ctx.beginPath();
        ctx.arc(touch.pageX, touch.pageY, 20, 0, 2*Math.PI, true);
        ctx.fill();
        ctx.stroke();
      }
    }, false);

posted on 2017-01-04 13:07  飞旋的留恋-ing  阅读(220)  评论(0)    收藏  举报

导航