在移动端屏幕中,我们需要做的不只是和处理PC端网页那样,处理简单的点击事件或者其他桌面事件。我们需要更多的了解一下移动端的触摸事件和手势。——整理自《HTML5触摸界面设计与开发》

基于webkit 引擎的浏览器

webkit 是一个非常强大的引擎,也是第一代iphone获得成功的一个原因。webkit 起源于名为Konqueror的开源浏览器引擎,苹果将它开发为webkit,作为safari背后的浏览器引擎。现在的 ios ,android平台上的浏览器都是基于webkit引擎来实现的

windows版的浏览器

作为windows phone手机的浏览器引擎肯定是IE了,与webkit功能相近,但IE10有着不同的触摸事件API,但是实现的功能都是相同的。现在IE几乎都兼容了当前的

轻触 和 单击 的不同

在pc端机基于鼠标的界面互动是单击,那么在触摸界面上的基本交互方式就是轻触,最初,轻触和单击相仿,但是轻触与单击完全不同。在触屏设备的浏览器中,仍然可以触发鼠标事件。当一个用户轻触一个元素,但不降手指留在屏幕上,轻触300ms之后将触发click事件。同时触发的还有mouseup和mousedown事件,我们不考虑这些桌面事件,我们只说一下触屏事件。

总的来说在移动端有四种类型的触摸事件

  • 触摸开始 (手势放在屏幕上的时候)
  • 接触点移动 (手指在屏幕上移动且手指不离开屏幕)
  • 触摸结束 (用户手指离开屏幕)
  • 触摸被取消 (触摸被中断了,比如突然短息或电话来了)

webkit内的触摸事件

  • touchstart 触摸开始 包含touches数组
  • touchmove 触摸点移动 包含touches数组
  • touchend 触摸结束 包含touches数组
  • touchcancel 触摸取消 不包含touches数组

备注:touches数组是一组触摸事件所产生的触摸对象,代表着触摸屏幕的手指

触摸对象的属性

  • identifier 是这个触摸的唯一表示符,用户的手指保持在屏幕上,这个值不会改变
  • screenX 触摸的X的位置,相对移动设备屏幕左侧,无论是否滚动
  • screenY 触摸Y的位置,相对于屏幕顶部
  • clientX 触摸相对于浏览器窗口左侧的X位置,一般和screenX一样
  • clientY 触摸相对浏览器窗口的顶部位置;相当于screenY减去卷去的上部
  • pageX 触摸相对所呈现的页面左侧的X的位置
  • pageY 触摸相对所呈现顶部的Y的位置
  • target 触摸开始时接触点下的元素对象,如果触摸移动到其他位置,值不变,还是原来的
  • radius[X/Y] 接触点的半径(与屏幕接触的区域大小的估计值)
  • rotationAngle 半径中所述的椭圆被旋转到与接触区域最匹配需要旋转的角度
  • force 施加在表面上的力度
  • 备注: radius、rotationAngle和farce在android上的chrome浏览器需要前缀(如:webkitForce) 这三个属性在IOS6中不被支持

IE10和指针事件

  • 在IE10上有个单独的,被称为指针的事件,一般由鼠标单击,电子笔轻触,手指触摸着三种形式触发
  • IE10的指针事件
    • MSPointerDown 触摸开始
    • MSPointerMove 触摸移动
    • MSPointerUp 触摸结束
    • MSPointerOver 触摸点移动到元素之上
    • MSPoinerOut 触摸点离开元素
    • 事件对象(MSPointerEvent)继承于MouseEvent,并且包含page[X|Y]、client[X|Y]和device[X|Y]属性。同时也包含额外的指针属性

MSPointerEvent属性

  • hwTimestamp 创建事件的时间
  • isPrimary 指示该指针是否为主指针
  • pointerId 指针唯一ID(类似触摸事件的标识符)
  • pointerType 一个整数,标识了改事件来自鼠标、手写或者是手指
  • pressure 笔的压力,从0 - 255
  • rotation 从0 - 359 光标的旋转度,如果支持的话
  • tilt[X|Y] 手写笔的倾斜度
简单看一下touch事件

首先,准备好运行环境,我们用浏览器的开发者工具来模拟,这里我们用到的是chrome的模拟环境,目前只要是非IE,FF的浏览器默认都是以ctrl+shift+i 的方式就打开了开发者工具调试环境,点击小手机的图标,我们进入了手机模拟环境,我们可以选择进一步设置或者不设置其他的模拟方案,一般我们选择iphone 4,因为这个尺寸不管在中等显示器还是笔记本都很好 。

我们在这里写一个公共需要用到的代码,就是header里面的内容,以后举例就不必重写了:

<head><meta charset='UTF-8'><meta http-equiv='X-UA-Comatible' content='IE=edge,chrome=1'><meta name='viewport' content='width=device-width, user-scalable=no, initial-scale=1.0'><title>触屏事件</title>
</head>

好的,下面我们来简单看一下这几个针对webkit引擎的触屏事件:

  • css 结构:

    *{margin:0;padding:0;}
    .square{width: 100px;height: 100px;background-color: pink;}
    .square.start{background-color: purple;}
    .square.move{background-color: green;}
    .square.end{background-color: red;}
  • html 结构

    <div class='square'>touch me</div>
  • javascript 结构:

    var square = document.querySelector('.square');
    // 开始触摸
    square.addEventListener('touchstart',function(e){e.preventDefault(); // 阻止默认事件this.className = 'square start';
    },false);
    // 手指滑动
    square.addEventListener('touchmove',function(e){e.preventDefault();this.className = 'square move';
    },false);
    // 手指离开
    square.addEventListener('touchend',function(e){e.preventDefault();this.className = 'square end';
    },false);

上面简单的模拟了touchstart touchmove touchend 这三个事件,而touchcancel事件我们不去模拟它,不是很经常能用到。当手指从触摸到滑动到离开屏幕,你会看到屏幕上的那个div的颜色块会随着不同事件的触发而改变颜色。由此我们就可以用它来写一些案例了,比如移动端的轮播图,但是这样编程起来会比较麻烦,我们可以基于这几个事件来封装一下手势,至于手势的封装,我们以后再来说。

touch事件和click事件的比较

onclick事件会比touch事件慢300ms,在网上找到一篇文章说的比较清楚:
http://www.xiaomeiti.com/note/3585

自定义tap事件 (tap:轻击的意思)

—— 有时间再来补充,并且完善案例

HTML5触摸界面的程序设计相关推荐

  1. html5开发桌面界面设计,HTML5触摸界面设计与开发

    HTML5触摸界面设计与开发 编辑 锁定 讨论 上传视频 <HTML5触摸界面设计与开发>是人民邮电出版社于2014年出版的一本图书,作者是伍兹 (Stephen Woods).[1] 中 ...

  2. 《HTML5触摸界面设计与开发》——1.4 神秘谷,是什么让触摸界面反应灵敏?...

    本节书摘来自异步社区<HTML5触摸界面设计与开发>一书中的第1章,第1.4节,作者: [美]Stephen Woods 更多章节内容可以访问云栖社区"异步社区"公众号 ...

  3. 《HTML5触摸界面设计与开发》——导读

    前言 在我写作时, 11.42%的网页流量来自移动设备.这个数字一年前是7%,三年之前是1.77%.虽然桌面设备还会陪伴我们一段时间,但是Web的未来是在移动设备上的. 对于Web开发者,支持移动设备 ...

  4. html5触摸界面设计与开发_原生APP的开发步骤主要分为哪些?

    移动APP的发展也来也好,APP的开发也是越来广泛,同时APP也是有这多种的开发方式.济南网站建设的小编在之前的文章"一起企业APP开发前首先要确定哪些?"中就有提到过APP开发模 ...

  5. HTML5与触摸界面

    习惯了开发典型的面向电脑端浏览器的网站在开发手机端网站或者移动App的时候面对很多新的问题,这些新的问题,在我看来或多或少会给浏览者在使用网站或App的时候带来不好的用户体验,对于一个产品级应用,用户 ...

  6. php 判断html5,html5触摸事件判断滑动方向的实现

    这篇文章主要介绍了html5触摸事件判断滑动方向的实现的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考. 为了给触摸界面提供有力支持, 触摸事件提供了响应用户对触摸屏或者触摸板上操作的能 ...

  7. 手机html5 tap事件,HTML5触摸事件演化tap事件介绍

    触摸事件是移动浏览器特有的HTML5事件,虽然click事件在pc和移动端更通用,但是在移动端会出现300ms延迟,较为影响用户体验,300ms延迟来自判断双击和长按,因为只有默认等待时间结束以确定没 ...

  8. 超声波技术构建触摸界面

    超声波技术构建触摸界面 Ultrasound tech builds touch interfaces 无论材料是什么,无论材料厚度如何,总部位于加州的创业公司UltraSense Systems声称 ...

  9. html5里可移动线性进度条的类型怎么表示,HTML5触摸事件实现移动端简易进度条的实现方法...

    这篇文章主要介绍了关于HTML5触摸事件实现移动端简易进度条的实现方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 前言 HTML中新添加了许多新的事件,但由于兼容性的问题,许多事件 ...

最新文章

  1. 滑轨声源定向的理论模型与参数估计
  2. 《深入理解mybatis原理》 MyBatis的一级缓存实现详解 及使用注意事项
  3. 你的输入法都暴露了些啥?
  4. 网页特效:用CSS3制作3D图片立方体旋转特效
  5. C++工作笔记-在项目中解决编码问题小技巧
  6. 目前服务器操作系统版本,目前服务器操作系统版本号
  7. vsphere6.0实验拓扑-虚拟机版
  8. 边界安全技术简要说明
  9. Hash算法大全(java实现)
  10. “hello world!”团队第三次会议
  11. 多表无关联查询(范围查询):查询某个人属于哪个工资区间
  12. python建模与仿真控制系统_系统建模与仿真
  13. c 语言试题及解析,C语言试题及答案解析.pdf
  14. 测试路由器丢包的软件,如何判断路由是否丢包以及丢包的原因和解决方法
  15. signature=19d152593423a6d5cacb970ae698d132,===Former的iconic signature shape—Rusticated Apple===
  16. JixiPix Romantic Photo for Mac(照片浪漫效果软件)
  17. java框体怎么添加背景图,文本框添加背景图片,文本框背景图片,public class
  18. source insight4.0各种问题处理方法汇总
  19. 听说蝴蝶国的小公主可漂亮了!黑亮的头发
  20. python保存数据到本地文件_python保存数据到本地文件的方法

热门文章

  1. ACM竞赛需要的基础知识
  2. 【尚硅谷_java基础】七、面向对象(下)
  3. 国内如何到Facebook社交平台预充值广告费用?怎么解决充值渠道问题?
  4. date命令的两种常用法
  5. [IOS APP]丰乳肥臀-莫言有声小说
  6. iso 绝对pe_直接MAP ISO文件(不加mem)的通用教程
  7. 推荐 10 个优质的知识星球
  8. Google免费DNS
  9. 新能源整车控制器开发心得
  10. 松下plc程序转c语言,用顺序功能图方式编写的松下PLC程序