touchstart
理论上是手指放在屏幕上时就会触发,实际是如果手指没有滑动或者没有拿起离开屏幕,就不会真正执行回调函数
touchmove
手指在屏幕上滑动时触发
touchend
手指从屏幕上离开时触发
touches、targetTouches 和 changedTouches 详解
- touches: 当前屏幕上所有触摸点的列表;
- targetTouches: 当前对象上所有触摸点的列表;
- changedTouches: 涉及当前(引发)事件的触摸点的列表
通过一个例子来区分一下触摸事件中的这三个属性:
- 用一个手指接触屏幕,触发事件,此时这三个属性有相同的值。
- 用第二个手指接触屏幕,此时,touches 有两个元素,每个手指触摸点为一个值。当两个手指触摸相同元素时, targetTouches 和 touches 的值相同,否则 targetTouches 只有一个值。changedTouches 此时只有一个值, 为第二个手指的触摸点,因为第二个手指是引发事件的原因
- 用两个手指同时接触屏幕,此时 changedTouches 有两个值,每一个手指的触摸点都有一个值
- 手指滑动时,三个值都会发生变化
- 一个手指离开屏幕,touches 和 targetTouches 中对应的元素会同时移除,而 changedTouches 仍然会存在元素。
- 手指都离开屏幕之后,touches 和 targetTouches 中将不会再有值,changedTouches 还会有一个值, 此值为最后一个离开屏幕的手指的接触点。
pageX, screenX, clientX 区别
- pageX 是事件点击位置相对于浏览器左侧的距离,并且包含滚动条的距离
- screenX 是事件点击位置相对于电脑屏幕(设备)的左侧距离,但是不包含滚动条的距离
- clientX 是事件点位置相对于浏览器左侧的距离,但是不包含滚动条的距离