/ 移动端  

移动端的触屏事件

移动端的触屏事件

1.原生触摸事件(touch 类事件)

在移动端,原生触摸事件只有以下三种类型,其他所有的触摸事件都是由这三种事件相结合产生的,例如,上划、下滑、左滑、右滑、双击等等;

这三种原生触摸事件为:

  • touchstart:开始触摸
  • touchmove:触摸过程中
  • touchend:触摸结束

另外,还有一个触摸被系统取消的事件:touchcancel(由更高级的事件打断当前正在执行的移动端事件时,会触发该事件,我们可以在这个事件中保存当前相关的触碰事件操作的数据,以保证用户回到页面后接着刚才断开的位置继续操作);

触摸事件下的一些相关属性

  • targetTouches:可获取到事件对象下的触摸点,该属性是一个类数组的结构,同时触发这个事件的手指有几个,则数组中就有几个元素。触摸点的相关坐标数据就存在这些对象中。
  • pageX\pageY:坐标系原点在页面的左上角;
  • screenX\screenY:坐标系的原点在屏幕的左上角点(不包含操作系统在左上角的组件);
  • clientX\clientY:触摸目标在视口中的坐标,原点在视口左上角(适口视用来展示 html 代码的容器);
  • targer:保存的是触发事件的标签,使用事件委托时可以通过该属性获取到触发该事件的标签对象;
  • identifier:ID 值,唯一标示了手指触摸点,如果手指在屏幕上产生移动(如果有多个触摸点,则可以根据这个 id 值跟踪对应的触摸点);

event 对象:

由于手机端的手指触发不是单个的,所以在 event 里面生成的与触摸有关的数据都是以数组的形式列出来的,有以下三个:

  • touches:表示当前跟踪的触摸操作的 touch 对象的数组。当前屏幕上所有触摸点的集合列表
  • targetTouches:特定于事件目标的 Touch 对象的数组。绑定事件的那个结点上的触摸点的集合列表
  • changedTouches:表示自上次触摸以来发生了什么改变的 Touch 对象的数组。触发事件时改变的触摸点的集合

2.触碰事件(tap 类事件)

触碰事件,我目前还不知道它和 touch 的区别,一般用于代替 click 事件

  • tap: 手指碰一下屏幕会触发
  • longTap: 手指长按屏幕会触发
  • singleTap: 手指碰一下屏幕会触发
  • doubleTap: 手指双击屏幕会触发

3.滑动事件(swipe 类事件)

滑动事件

  • swipe:手指在屏幕上滑动时会触发
  • swipeLeft:手指在屏幕上向左滑动时会触发
  • swipeRight:手指在屏幕上向右滑动时会触发
  • swipeUp:手指在屏幕上向上滑动时会触发
  • swipeDown:手指在屏幕上向下滑动时会触发

4.自定义手势事件 gesture

手势事件只是概念型,目前还没有浏览器原生支持,按照概念可分为 gesturestart gesturechange gestureend 三种事件

  • gesturestart:当有两根或多根手指放到屏幕上的时候触发
  • gesturechange:当有两根或多根手指在屏幕上,并且有手指移动的时候触发
  • gestureend:当倒数第二根手指提起的时候触发,结束 gesture

按照定义,当分别将两根手指放到屏幕上的时候,会有如下顺序的事件触发:

1、第一根手指放下,触发 touchstart

2、第二根手指放下,触发 gesturestart

3、触发第二根手指的 touchstart

4、立即触发 gesturechange

5、手指移动,持续触发 gesturechange

6、第二根手指提起,触发 gestureend,以后将不会再触发 gesturechange

7、触发第二根手指的 touchend

8、触发 touchstart(多根手指在屏幕上,提起一根,会刷新一次全局 touch,重新触发第一根手指的 touchstart)

9、提起第一根手指,触发 touchend

5.Zepto.js 库可以更好的支持,基于 CSS3