本文为大家分享了JS触摸与手势事件,供大家参考,具体内容如下

1.触摸事件
包含 iOS 2.0 软件的 iPhone 3G 发布时,也包含了一个新版本的 Safari 浏览器。这款新的移动 Safari提供了一些与触摸(touch)操作相关的新事件。后来,Android 上的浏览器也实现了相同的事件。触摸事件会在用户手指放在屏幕上面时、在屏幕上滑动时或从屏幕上移开时触发。具体来说,有以下几个触摸事件。
touchstart :当手指触摸屏幕时触发;即使已经有一个手指放在了屏幕上也会触发。
touchmove :当手指在屏幕上滑动时连续地触发。在这个事件发生期间,调用 preventDefault()可以阻止滚动。
touchend :当手指从屏幕上移开时触发。
touchcancel :当系统停止跟踪触摸时触发。关于此事件的确切触发时间,文档中没有明确说明。
以上的几个事件都是会冒泡的,也都可以取消。虽然这些触摸事件没有在DOM中定义,但让他们却是以兼容DOM的方式实现的。因此,每个触摸事件的event对象都提供了在鼠标事件中常见的属性:bubbles、cancelable、view、clientX、clientY、screenX、screenY、detail、altKey、shiftKey、ctrlKey、metaKey。
除了常见的DOM属性,触摸事件还包含下列三个用于跟踪触摸的属性。
touches :表示当前跟踪的触摸操作的 Touch 对象的数组。
targetTouchs :特定于事件目标的 Touch 对象的数组。
changeTouches :表示自上次触摸以来发生了什么改变的 Touch 对象的数组。
每个Touch 对象包含下列属性。
clientX :触摸目标在视口中的 x 坐标。
clientY :触摸目标在视口中的 y 坐标。
identifier :标识触摸的唯一 ID。
pageX :触摸目标在页面中的 x 坐标。
pageY :触摸目标在页面中的 y 坐标。
screenX :触摸目标在屏幕中的 x 坐标。
screenY :触摸目标在屏幕中的 y 坐标。
target :触摸的 DOM 节点目标。
使用这些属性可以跟踪用户对屏幕的触摸操作。来看下面的例子。
function handleTouchEvent(event){
//只跟踪一次触摸
if (event.touches.length == 1){
var output = document.getElementById("output");
switch(event.type){
case "touchstart":
output.innerHTML = "Touch started (" + event.touches[0].clientX +
"," + event.touches[0].clientY + ")";
break;
case "touchend":
output.innerHTML += "<br>Touch ended (" +
event.changedTouches[0].clientX + "," +
event.changedTouches[0].clientY + ")";
break;
case "touchmove":
event.preventDefault(); //阻止滚动
output.innerHTML += "<br>Touch moved (" +
event.changedTouches[0].clientX + "," +
event.changedTouches[0].clientY + ")";
break;
}
}
}
EventUtil.addHandler(document, "touchstart", handleTouchEvent);
EventUtil.addHandler(document, "touchend", handleTouchEvent);
EventUtil.addHandler(document, "touchmove", handleTouchEvent);
以上代码会跟踪屏幕上发生的一次触摸操作。为简单起见,只会在有一次活动触摸操作的情况下输出信息。当 touchstart 事件发生时,会将触摸的位置信息输出到 <div> 元素中。当 touchmove 事件发生时,会取消其默认行为,阻止滚动(触摸移动的默认行为是滚动页面),然后输出触摸操作的变化信息。而 touchend 事件则会输出有关触摸操作的最终信息。注意,在 touchend 事件发生时, touches集合中就没有任何 Touch 对象了,因为不存在活动的触摸操作;此时,就必须转而使用 changeTouchs集合。
这些事件会在文档的所有元素上面触发,因而可以分别操作页面的不同部分。在触摸屏幕上的元素时,这些事件(包括鼠标事件)发生的顺序如下:
(1) touchstart
(2) mouseover
(3) mousemove (一次)
(4) mousedown
(5) mouseup
(6) click
(7) touchend
支持触摸事件的浏览器包括 iOS 版 Safari、Android 版 WebKit、bada 版 Dolfin、OS6+中的 BlackBerryWebKit、Opera Mobile 10.1+和 LG 专有 OS 中的 Phantom浏览器。
2. 手势事件
iOS 2.0 中的 Safari 还引入了一组手势事件。当两个手指触摸屏幕时就会产生手势,手势通常会改变显示项的大小,或者旋转显示项。有三个手势事件,分别介绍如下。
gesturestart :当一个手指已经按在屏幕上而另一个手指又触摸屏幕时触发。
gesturechange :当触摸屏幕的任何一个手指的位置发生变化时触发。
gestureend :当任何一个手指从屏幕上面移开时触发。
只有两个手指都触摸到事件的接收容器时才会触发这些事件。在一个元素上设置事件处理程序,意味着两个手指必须同时位于该元素的范围之内,才能触发手势事件(这个元素就是目标)。由于这些事件冒泡,所以将事件处理程序放在文档上也可以处理所有手势事件。此时,事件的目标就是两个手指都位于其范围内的那个元素。
触摸事件和手势事件之间存在某种关系。当一个手指放在屏幕上时,会触发 touchstart 事件。如果另一个手指又放在了屏幕上,则会先触发 gesturestart 事件,随后触发基于该手指的 touchstart事件。如果一个或两个手指在屏幕上滑动,将会触发 gesturechange 事件。但只要有一个手指移开,就会触发 gestureend 事件,紧接着又会触发基于该手指的 touchend 事件。
与触摸事件一样,每个手势事件的 event 对象都包含着标准的鼠标事件属性: bubbles 、cancelable 、 view 、 clientX 、 clientY 、 screenX 、 screenY 、 detail 、 altKey 、 shiftKey 、ctrlKey 和 metaKey 。此外,还包含两个额外的属性: rotation 和 scale 。其中, rotation 属性表示手指变化引起的旋转角度,负值表示逆时针旋转,正值表示顺时针旋转(该值从 0 开始)。而 scale属性表示两个手指间距离的变化情况(例如向内收缩会缩短距离);这个值从 1 开始,并随距离拉大而增长,随距离缩短而减小。
下面是使用手势事件的一个示例。
function handleGestureEvent(event){
var output = document.getElementById("output");
switch(event.type){
case "gesturestart":
output.innerHTML = "Gesture started (rotation=" + event.rotation +
",scale=" + event.scale + ")";
break;
case "gestureend":
output.innerHTML += "<br>Gesture ended (rotation=" + event.rotation +
",scale=" + event.scale + ")";
break;
case "gesturechange":
output.innerHTML += "<br>Gesture changed (rotation=" + event.rotation +
",scale=" + event.scale + ")";
break;
}
}
document.addEventListener("gesturestart", handleGestureEvent, false);
document.addEventListener("gestureend", handleGestureEvent, false);
document.addEventListener("gesturechange", handleGestureEvent, false);
与前面演示触摸事件的例子一样,这里的代码只是将每个事件都关联到同一个函数中,然后通过该函数输出每个事件的相关信息。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 触摸
# 手势
# JS触摸事件、手势事件详解
# 基于Angular.js实现的触摸滑动动画实例代码
# JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
# 移动端js触摸事件详解
# javascript移动开发中touch触摸事件详解
# 浅谈移动端之js touch事件 手势滑动事件
# 基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
# javascript单页面手势滑屏切换原理详解
# 基于JS实现Android
# iOS一个手势动画效果
# touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
# 放在
# 屏幕上
# 鼠标
# 移开
# 会在
# 几个
# 任何一个
# 文档
# 则会
# 都是
# 口中
# 就会
# 也会
# 在这个
# 将会
# 没有任何
# 要有
# 这款
# 也都
# 不存在
相关文章:
建站与域名管理如何高效结合?
如何通过主机屋免费建站教程十分钟搭建网站?
已有域名能否直接搭建网站?
css网站制作参考文献有哪些,易聊怎么注册?
如何挑选高效建站主机与优质域名?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
装修招标网站设计制作流程,装修招标流程?
宝塔面板如何快速创建新站点?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
网页设计与网站制作内容,怎样注册网站?
如何在IIS管理器中快速创建并配置网站?
简历在线制作网站免费版,如何创建个人简历?
制作旅游网站html,怎样注册旅游网站?
建站主机选购指南:核心配置与性价比推荐解析
ppt制作免费网站有哪些,ppt模板免费下载网站?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何在服务器上配置二级域名建站?
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
建站主机如何选?性能与价格怎样平衡?
电商平台网站制作流程,电商网站如何制作?
定制建站是什么?如何实现个性化需求?
如何在万网ECS上快速搭建专属网站?
C++中引用和指针有什么区别?(代码说明)
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星在线版空间:自助建站+智能模板一键生成方案
制作证书网站有哪些,全国城建培训中心证书查询官网?
如何通过WDCP绑定主域名及创建子域名站点?
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
活动邀请函制作网站有哪些,活动邀请函文案?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何用PHP工具快速搭建高效网站?
如何规划企业建站流程的关键步骤?
C++如何使用std::optional?(处理可选值)
网站图片在线制作软件,怎么在图片上做链接?
定制建站方案优化指南:企业官网开发与建站费用解析
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
如何快速打造个性化非模板自助建站?
网站制作壁纸教程视频,电脑壁纸网站?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
高防服务器租用如何选择配置与防御等级?
建站上传速度慢?如何优化加速网站加载效率?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
ui设计制作网站有哪些,手机UI设计网址吗?
如何通过FTP空间快速搭建安全高效网站?
seo网站制作优化,网站SEO优化步骤有哪些?
制作国外网站的软件,国外有哪些比较优质的网站推荐?
简单实现Android验证码
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
浅析上传头像示例及其注意事项
*请认真填写需求信息,我们会在24小时内与您取得联系。