admin管理员组文章数量:1535877
2024-07-28 作者:
⼿机touch事件及参数【转】(⾃⼰懒得写了,找了⼀篇摘过
来)
前⾔
⼀个触屏⽹站到底和传统的pc端⽹站有什么区别呢,交互⽅式的改变⾸当其冲。例如我们常⽤的click事件,在触屏设备下是如此⽆⼒。⼿机上的⼤部分交互都是通过touch来实现的,于是,对于触屏的交互式⽹站,触摸事件是相当重要的。
Apple在iOS 2.0中引⼊了,Android正迎头赶上这⼀事实标准,缩⼩差距。最近⼀个W3C⼯作组正合⼒制定这⼀。规范
这⾥我们介绍⼏种普及得⽐较好的触摸事件,你可以在绝⼤多数现代浏览器中来测试这⼀事件(必须是触屏设备哦):touchstart:触摸开始的时候触发
touchmove:⼿指在屏幕上滑动的时候触发touchend:触摸结束的时候触发
⽽每个触摸事件都包括了三个触摸列表,每个列表⾥包含了对应的⼀系列触摸点(⽤来实现多点触控):touches:当前位于屏幕上的所有⼿指的列表。targetTouches:位于当前DOM元素上⼿指的列表。changedTouches:涉及当前事件⼿指的列表。每个触摸点由包含了如下触摸信息(常⽤):
identifier:⼀个数值,唯⼀标识触摸会话(touch session)中的当前⼿指。⼀般为从0开始的流⽔号(android4.1,uc)target:DOM元素,是动作所针对的⽬标。
pageX/pageX/clientX/clientY/screenX/screenY:⼀个数值,动作在屏幕上发⽣的位置(page包含滚动距离,client不包含滚动距离,screen则以屏幕
为基准)。
radiusX/radiusY/rotationAngle:画出⼤约相当于⼿指形状的椭圆形,分别为椭圆形的两个半径和旋转⾓度。初步测试浏览器不⽀持,好在功能
不常⽤,欢迎⼤家反馈。
有了这些信息,我们就可以依据这些事件信息为⽤户提供不同的反馈了。下⾯,我将为⼤家展⽰⼀个⼩demo,⽤touchmove实现的单指拖动:
/*单指拖动*/
var obj = mentById('id');
ntListener('touchmove', function(event) { // 如果这个元素的位置内只有⼀个⼿指的话 if ( == 1) {
tDefault();// 阻⽌浏览器默认事件,重要
var touch = Touches[0]; // 把元素放在⼿指所在的位置
= -50 + 'px'; = -50 + 'px'; }
}, false);
关于a标签四个伪类在触屏设备中的⼩技巧:
我们都知道a标签的四个伪类link,visited,active,hover是专为click事件设计的,所以在触屏⽹站中尽量不要使⽤它们。经测试⼤部分也是不可⽤的。但是这⾥有⼀个关于hover的⼩技巧,当你点击过⼀个按钮之后,这个按钮就会⼀直处于hover的状态,此时你基于这个伪类所设置的css也是起作⽤的,直到你⽤⼿指点击另外⼀个按钮,hover状态就会转移到另⼀个按钮。利⽤这⼀点,我们可以做出⼀些⼩效果。此技巧在⼤多数浏览器中还是可⽤的。
本文标签: 手机touch事件及参数转(自己懒得写了找了一篇摘过来)
版权声明:本文标题:手机touch事件及参数【转】(自己懒得写了,找了一篇摘过来) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/shuma/1722151107a918291.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论