`
魏祖清
  • 浏览: 180211 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

webapp触摸事件介绍:处理复杂手势

 
阅读更多
    这篇文章着重介绍多触式设备上特有的gesture event(android和iOS对这个事件的封装大同小异)。这个事件是对touch event的更高层的封装,和touch一样,它同样包括gesturestart,gesturechange,gestureend三个事件回调:

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

    事件处理函数中会得到一个GestureEvent类型的参数,它包含了手指的scale(两根移动过程中分开的比例)信息和rotation(两根手指间连线转动的角度)信息。
    当两根或以上的手指在屏幕上活动的时候,我们可以做出一些较为复杂的手势。这将涉及到普通的mouse事件,touch事件和gesture事件,情况比较复杂。touch已经在第一篇文章里详细介绍,这里就简单带过。
    我们还是先看看当分别将两根手指放到屏幕上的时候,会触发哪些事件吧:
1、第一根手指放下,触发touchstart,除此之外什么都不会发生(请参照第二篇文章,手指提起才会触发mouse的各事件)
2、第二根手指放下,触发gesturestart
3、触发第二根手指的touchstart
4、立即触发gesturechange
5、手指移动,持续触发gesturechange,就像鼠标在屏幕上移动的时候不停触发mousemove一样
6、第二根手指提起,触发gestureend,以后将不会再触发gesturechange
7、触发第二根手指的touchend
8、触发touchstart!注意,和第一篇文章里介绍的一样,多根手指在屏幕上,提起一根,会刷新一次全局touch!重新触发第一根手指的touchstart,这点和苹果官方网站上介绍的不同。
9、提起第一根手指,触发touchend
    Gesture事件的处理和Touch类似,我们一般会在gesturechange的时候利用GestureEvent对象中的信息来做一些事情:

var angle = event.rotation;  
var scale = event.scale; 

这样能够取得scale和rotation信息,然后我们可以:
e.target.style.webkitTransform = 'scale(' + e.scale + startScale + ') rotate(' + e.rotation +  
startRotation + 'deg)'; 

这段代码能让element随着你的两根手指的运动而转动、伸展。还有一件要说明的事情是,对于复杂手势,是否会触发某些鼠标事件?确实有,不过我只找到了一个。不管你的两根手指在屏幕上伸缩还是转动,都不会有任何鼠标事件触发,但当你的两根手指同时朝上或者朝下移动的时候,则会触发某些事件。请看下图:




两根手指同时向上或向下滚动,如果target element是一个scrollable element(也就是绑定了mousewheel的element)的话,将会触发mousewheel事件。如果不是scrollable element,则当手指停止移动的时候,会触
发onscoll。这里请和第二篇文章的body scroll区别一下,如果你要滚动body,只需要一根手指轻轻拂动屏幕,但是你要滚动一个内部div或者iframe,则需要动用两根手指。     这也是多触式设备一个不太方便的地方。而对于我们开发者来说,这种不方便被放大了。。。因为从用户体验角度来说,要求用户使用两根手指滚动一个内部element显然是不合适的,而要实现像滚动body一样用一根
手指优雅地滚动,我们必须利用touchevent,在它的回调函数中用代码来实现scroll。这里介绍一个段很不错的多触式滚动组件:iscroll-4
http://cubiq.org/iscroll-4
    用起来很简单,new一个iScroll对象,传入需要滚动的inner element作为参数就行了。



  • 大小: 26.3 KB
分享到:
评论

相关推荐

    camunda-webapp-webjar-7.13.0.jar

    项目名称 camunda BPM - webapp - webjar 项目主页 隶属组织 开源协议 仓库 Central 类库 camunda BPM - webapp - webjar 标签 javabpmnworkflowdmnbpmprocess-enginecamunda-bpm-platformcamunda-enginecmmn

    Covid_19_Tracker_WebApp:正在施工:construction:

    【标题】:“Covid_19_Tracker_WebApp:正在施工:construction:” 这个标题表明我们正在讨论一个名为“Covid_19_Tracker_WebApp”的项目,它目前正处于开发阶段,用“施工:construction:”来比喻,意味着这个Web应用...

    webapp1:webapp1

    【标题】:“Webapp1:Webapp1”的深入解析 【描述】:“Webapp1”是一个基于Web的应用程序,它代表了互联网上交互式服务的一种形式。这种应用程序允许用户通过Web浏览器进行各种操作,比如在线购物、社交互动、...

    手机WebApp开发者指导规范.pdf

    开发者需要确保WebApp传输和处理的数据安全,防止数据泄露或被非法访问。同时,也要注意防止恶意攻击,确保用户的信息和隐私安全。 综合以上内容,开发者在开发手机WebApp时,不仅要关注应用的界面美观和用户体验,...

    cas-server-webapp-tomcat-5.3.6.war

    cas服务器war包,用于搭建cas认证服务器,由于国内网的原因,下载老是超时,故此提供给各位码农

    webkit webApp 开发技术要点总结

    本文将深入探讨WebKit WebApp开发中的核心知识点,包括视口管理、链接资源优化以及事件处理机制,旨在帮助前端开发者更好地掌握移动Web开发技巧。 #### 一、Viewport:掌控可视区域 Viewport是移动设备浏览器中...

    maguire-lab-seizure-detection-webapp::brain:Maguire Lab的深度学习癫痫发作检测WebApp

    Maguire Lab的深度学习癫痫发作检测WebApp :brain: 在浏览器中使用深度学习从单通道LFP / EEG脑记录中检测癫痫发作活动。 在线尝试: :它是如何工作的为应用提供一个包含啮齿动物EEG数据的CSV文件,其中每行是100 ...

    webApp1:webApp

    5. **Web服务器**: WebApp需要一个服务器来托管和处理请求。基本的HTTP协议和更现代的HTTPS协议是服务器与浏览器之间通信的基石。了解如何配置和管理Web服务器,如Apache或Nginx,对于部署WebApp至关重要。 6. **...

    Webapp:多模块Spring Web应用程序

    ## Webapp一个多模块Maven Spring Web应用程序 #Spring Web应用程序: #特征: 多模块结构可降低复杂性并分离出不同层的代码 Spring 4.x的基于Java的配置...webapp-webapp:包含web.xml,所有的jsp,webjar,任何CSS

    Qt使用QtWebApp搭建Http服务器实现文件下载

    请注意,这只是一个简单的示例,实际应用中你可能需要处理更多细节,如错误处理、安全性、多线程等。同时,为了提高性能和安全性,你可能还需要考虑使用更专业的Web服务器库,如Qt的QHttpServer模块,或者集成其他...

    webapp-allspark:htccs-webapp

    webapp-allspark 在变形金刚电影中看到的全火花关于webapp-allspark 是我们的 Web-app Start-kit,用于生成纯前端项目。 它是从分叉出来的。按键设置ES6 社会保障局网络包React大口大口 ============修订完整的资产...

    lb.zip_webapp

    2. 触摸事件:针对移动设备的触摸特性,优化滑动事件,使滑动操作更加顺畅自然。 3. 性能优化:减少DOM操作,避免频繁重绘和回流,使用requestAnimationFrame进行动画处理,提高页面性能。 4. 轻量级库:选择轻量...

    QtWebApp应用例程

    **QtWebApp应用例程详解** QtWebApp是一款基于Qt框架的开源库,它使得开发者能够在C++环境中轻松地创建Web应用程序...无论你是希望创建简单的数据交互应用,还是复杂的后台服务,QtWebApp都是一个值得考虑的优秀工具。

    ios 网站套壳源码 webapp

    5. **处理手势与交互**:为了使Webapp与原生应用的交互更一致,可以添加一些手势处理,比如下拉刷新、滑动返回等。这可以通过监听Webview的事件并自定义手势识别器实现。 6. **打包与签名**:完成以上步骤后,使用...

    webapp 大众点评手机页面展示swiper

    然而,你仍需关注特定设备或浏览器的特性,如触摸事件的处理,以确保流畅的用户体验。 7. **动态加载内容**:如果大众点评的页面需要根据用户行为动态加载更多内容,可以结合Swiper的API实现。例如,当用户滑到最后...

    webapp框架

    Webapp框架是构建Web应用程序的一种结构化方法,它旨在简化开发流程,提高代码复用性和项目的可维护性。在这个特定的压缩包文件中,我们关注的是一个包含了登录、主界面框架以及播放器Demo的实现。这表明这个框架...

    habits-scorecard:WebApp跟踪受https:jamesclear.comhabits-scorecard启发的习惯

    这个WebApp的主要目的是帮助用户追踪和改进他们的日常生活习惯。 【描述】:“习惯记分卡”是一个在线工具,它借鉴了James Clear关于个人行为改变和习惯养成的理论。James Clear是一位知名的作家和行为科学家,他的...

    idea开发webapp 热部署

    idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发webapp 热部署idea开发...

    iPhone WebApp 开发指南

    5. 触摸事件:利用touchstart、touchmove和touchend等事件,实现触控操作的响应式设计。 三、WebApp开发基础 1. 适应性布局:使用媒体查询(Media Queries)进行响应式设计,确保WebApp在不同尺寸的屏幕上都能正常...

    GAE之webapp框架

    通过上述示例,我们可以看到`webapp`框架不仅能够简化基础的HTTP请求处理,还能方便地与GAE提供的服务相结合,实现更复杂的功能。 #### 六、总结 `webapp`框架为开发者提供了快速构建Web应用的基础工具。通过掌握...

Global site tag (gtag.js) - Google Analytics