目有个交互须要实现手指滑动的交互,pc端使用mousedown,mousemove,mouseup监听实现。
javascript
但在ios设备上mousemove是很差监听的,同类的方法是touchstart,touchmove,touchend。java
项目需求,须要用到拖动事件。因为不须要考虑IE8等低端浏览器的兼容性, 因此想到HTML5中的drag
事件, 发现移动端 android & IOS
并不支持 drag
事件。如今让咱们来介绍一下移动端的经常使用事件吧jquery
单击事件,相似于PC端的click,但在移动端中,连续click的触发有200ms ~ 300ms的延迟。android
触摸事件,有touchstart touchmove touchend touchcancel 四种之分,经常使用的有:ios
touchstart:当有新手指触控到绑定的元素,会触发一次事件。 数组
touchmove:当有手指放绑定的元素上会一直触发,从触发条件准确的说只有手指移动时才触发。可是通过测试,这一项检测十分灵敏,人为手指保持不动,系统也会侦测到细小的移动。因此会一直触发。浏览器
touchend:当有手指从绑定元素上抬起,会触发一次。app
touchcancel:可由系统进行的触发(不经常使用事件),好比手指触摸屏幕的时候,忽然alert了一下,或者系统中其余打断了touch的行为,则能够触发该事件。ide
在移动端中上面的三个触摸事件每一个事件都有如下列表测试
changedTouches:保存了全部引起事件的手指信息
targetTouches:保存了当前对象上全部触摸点的列表;
touches:保存了当前全部触碰屏幕的手指信息
2.1.1事件属性(只读属性)
移动端触摸事件属性里的数组元素的属性:每一个事件有列表,每一个事件列表还有如下属性
好比:想获取手指拖动滑动的坐标位置,直接使用event.clientX是不起做用的,要使用event.changedTouches[0].clientX才好,
若是是jquery的event对象,使用event.originalEvent.changedTouches[0].clientX。
调用事件方法:
(1)jquery方法:$(document).bind("touchend", function(e){});
(2)javascript方法:document.addEventListener("touchend",function(e){});
触碰事件,我目前还不知道它和touch的区别,通常用于代替click事件,有tap longTap singleTap doubleTap四种之分,有时会用tap代替click事件
tap: 手指碰一下屏幕会触发
longTap: 手指长按屏幕会触发
singleTap: 手指碰一下屏幕会触发
doubleTap: 手指双击屏幕会触发
滑动事件,有swipe swipeLeft swipeRight swipeUp swipeDown 五种之分
swipe:手指在屏幕上滑动时会触发
swipeLeft:手指在屏幕上向左滑动时会触发
swipeRight:手指在屏幕上向右滑动时会触发
swipeUp:手指在屏幕上向上滑动时会触发
swipeDown:手指在屏幕上向下滑动时会触发
当两个手指触摸屏幕时就会产生手势,手势一般会改变显示项的大小,或者旋转显示项。有三个手势事件,分别以下。
当有新手指触控到绑定的元素,会触发一次事件。