js中的touch事件及gesture(手势)事件
来源:互联网 发布:mac看不到隐藏文件 编辑:程序博客网 时间:2024/06/01 08:17
一:touch事件分类?
1. touchstart:当手指触摸屏幕时触发。不管有多少个手指放在了屏幕上,只要再触摸一下屏幕就会触发。在此,我用小米的google浏览器做了一个实验,添加一个计数器,用来查看屏幕上手指触摸的次数,代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
2.touchmove:当手指在屏幕上滑动的时候触发该是事件,在这期间可以通过event.preventDefault()来阻止滚动;
3.touchend:手指从屏幕中移开的时候触发;
4.touchcancel:当系统停止跟踪触摸时触发。(不做说明)
例如我们在手机屏幕上利用前面三个事件来获取手指的位置,压力,接触面的值:效果如下:
html和css代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
js代码:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
二:touch事件对应的event对象有哪些?
根据上面的代码,可以得到,当触发touch事件的时候,会生成一个TouchEvent对象,如下图:
常见的有上面划线三种属性,在做一些效果的时候,也是用以下的三个属性中的touchList对象来确定元素的所有信息。
1.touches:表示当前跟踪的触摸操作的touch对象的属性;
2.targetTouches:表示特定事件目标的Touch对象的数组。
3.changeTouches:表示从上一次触摸以来,发生了改变的touch对象的数组。
以上这些属性都是一个包含名为TouchList的对象,当触发点为1(即:event.touches.length ===event.targetTouches.lengh ===event.changeTouches.length)的时候,它们包含触摸点的所有信息,但是这时候虽然包含信息一样,但是执行(event.targetTouches == event.touches)返回值为false,那就是说,里面肯定有一些地方不相同,暂时还没有找到,如下图所示:
下面是一些被触摸位置的一些重要属性:
- clientX和clientY属性:相对于视口的坐标;
- identifier:标识触摸的唯一id;
- pageX和pageY:相对于页面的坐标;
- screenX和screenY:相对于屏幕的坐标;
- radiusX和radiusY:能够包围用户和触摸平面的接触面的最小椭圆的水平轴(X轴)半径和垂直轴(Y轴)半径;
- rotationAngle :这个属性和 Touch.radiusX , Touch.radiusY一起, 描述了用户和触摸平面的接触面.
- force:返回这个 Touch 对象对应的手指挤压触摸平面的压力大小, 从0.0(没有压力)到1.0(最大压力)的浮点数.
- target:触摸的DOM节点目标。
注意:在touchend事件发生时,touches属性和targetTouches属性中的touchList对象就没有任何东西了,所以,这时候要想取得触发点的信息,就必须使用changeTouches属性。
三:touch、mouse和click事件触发顺序?
touch事件和click事件触发顺序:
1.touchstart事件;
2.mouseover事件;
3.mousemove事件(一次);
4.mousedown事件;
5.mouseup事件;
6.click事件;
7.touchend事件。
兼容性:iOS版的Safari、Android版的webkit、bada版的Dolfin、OS6中的BlackBerry webkit、Opera中的Mobile10.1 和 LG专有的PHantom浏览器。但是只有IOS的Safari支持多点触摸。桌面版本的Firefox6+和Chrome也支持触摸。
四:iOS2.0中的手势事件:gesture事件
注意:下面的事件只能在iOS中运行。在iOS中档两个手指操作的时候,就会产生手势,手势通常用于改变显示元素的大小,或者旋转显示的元素。手势事件分为三种:
1.gesturestart:当一个手指已经按在屏幕上,另一个手指又触摸屏幕的时候触发。类似于touchstart的作用一样;
2.gesturechange:当触摸屏幕的任何一个手指的位置发生变化的时候触发。
3.gestureend:当任何一个手指从屏幕上面移开时触发。
下面这些代码在安卓上不能用,只有在iOS上可以使用:
- js中的touch事件及gesture(手势)事件
- js中的touch事件及gesture(手势)事件详解 — 第13.4.9节
- js touch事件 手势滑动事件总结
- 手势识别与事件库 Touch.js若干问题及解决方法
- 移动设备手势事件库Touch.js
- 浅谈移动端之js touch事件 手势滑动事件
- Gesture(手势旋转图片,缩放图片,touch图片处理相关事件)
- js基本touch事件
- js 触摸事件 touch
- js touch 事件
- js的touch事件
- Hammer.js 手势事件
- touch gesture 事件在移动端的简单实现
- Android中的Touch事件
- Android中的touch事件
- Android中的Touch事件
- Android中的Touch事件
- Android中的Touch事件
- BOM
- vtigerCRM620 安装教程
- Segue传递数据
- codevs1403 新三国争霸 (最小生成树+dp)
- poi读取excel,支持合并单元格
- js中的touch事件及gesture(手势)事件
- 物体碰撞,勾股定理,唯一还记得的数学知识
- 让webapi统一返回JSON数据格式
- AdMob接入踩坑记
- Gdevops全球敏捷运维峰会-广州站即将于11月召开!
- easyui校验器扩展
- Could not create the view: An unexpected exception was thrown.问题解决
- Java多线程系列--“JUC锁”08之 共享锁和ReentrantReadWriteLock
- 第3章 MySQL基准测试