H5中的touch事件
touch中共有touchstart、touchmove和touchend三个事件;
touchstart:触摸开始的时候触发
touchmove:手指在屏幕上滑动的时候触发
touchend:触摸结束的时候触发
并且每个触摸事件都包括了三个触摸列表,每个列表里包含了对应的一系列触摸点(用来实现多点触控):
touches:当前位于屏幕上的所有手指的列表;
targetTouches:位于当前DOM元素上的手指列表;
changedTouches:涉及当前事件手指的列表。
每个触摸点由包含了如下触摸信息(常用):
dentifier:一个数值,唯一标识触摸会话(touch session)中的当前手指。一般为从0开始的流水号(android4.1,uc)
target:DOM元素,是动作所针对的目标。
pageX/pageY/clientX/clientY/screenX/screenY:一个数值,动作在屏幕上发生的位置(page包含滚动距离,client不包含滚动距离,screen则以屏幕为基准)。
下面是我用几种方法对touch事件的 应用:
第一种方法:
function load() {
document.addEventListener('touchstart', touch, false);
document.addEventListener('touchmove', touch, false);
document.addEventListener('touchend', touch, false);
function touch(event) {
var event = event || window.event;
var oParent = document.getElementById("prog");
var oDiv = document.getElementById("div");
var oDiv1 = document.getElementById("div1")
var touch = event.targetTouches[0];
switch (event.type) {
case "touchstart":
break;
case "touchend":
break;
case "touchmove":
event.preventDefault();
var l = touch.clientX-oParent.offsetLeft ;
console.log(l)
if (l <= 0) {
l = 0;
} else if (l >= oParent.offsetWidth-oDiv.offsetWidth) {
l = oParent.offsetWidth - oDiv.offsetWidth;
}
var oWidth = (l / oParent.offsetWidth) * 800;
oDiv.style.left = l + "px"
oDiv1.style.width = oWidth + 25 + "px";
break;
}
}
}
window.addEventListener('load', load, false);
第二种方法:
window.onload=function(){
var btn=document.getElementById("div");
var bg=document.getElementById("div1");
var oP=document.getElementById("prog");
var W=oP.offsetWidth;
console.log(W)
var ox,ex,endx;
btn.addEventListener("touchstart",function(e){
e.preventDefault();
ox=e.touches[0].clientX;
startX=btn.offsetLeft+3;
//console.log(startX);
},false);
btn.addEventListener("touchmove",function(e){
e.preventDefault;
ex=e.changedTouches[0].clientX;
endx=ex-ox+startX;
//console.log(endx)
if(endx<=0){
endx=0;
}else if(endx>=W-btn.offsetWidth){
endx=W-btn.offsetWidth;
}
var oWidth=(endx/W)*W;
console.log(oWidth)
btn.style.left=endx+"px";
bg.style.width=oWidth+45+"px";
},false)
btn.addEventListener("touchend",function(){
btn.removeEventListener("touchmove");
btn.removeEventListener("tocched");
},false)
}
以上就是一些关于对touch的理解。
文章不深,但足以理解touch事件了,赞!!!
摘自:http://www.cnblogs.com/-yhq/archive/2016/01/29/5169871.html
H5中的touch事件的更多相关文章
- 深入cocos2d-x中的touch事件
深入cocos2d-x中的touch事件 在文章cocos2d-x中处理touch事件中简单讨论过怎样处理touch事件, 那么今天来深入了解下cocos2d-x中是怎样分发touch事件的. 我们最 ...
- javascript移动设备Web开发中对touch事件的封装实例
在触屏设备上,一些比较基础的手势都需要通过对 touch 事件进行二次封装才能实现.zepto 是移动端上使用率比较高的一个类库,但是其 touch 模块模拟出来的一些事件存在一些兼容性问题,如 ta ...
- Android中的Touch事件
Android中的Touch事件处理 主要内容 Activity或View类的onTouchEvent()回调函数会接收到touch事件. 一个完整的手势是从ACTION_DOWN开始,到ACTION ...
- cocos2d-x中处理touch事件
在cocos2d-x中, touch事件分为两种:一种是单点事件, 另一种是多点事件. 单点事件对应的代理方法是: virtual bool ccTouchBegan(CCTouch *pTouch, ...
- Android开发(二十)——Fragment中的touch事件
问题: Fragment中没有提供监听touch事件的方法. 解决方案: Activity中能够监听touch事件. 于是在Activity中写一个接口,MyOnTouchListener,在需要监听 ...
- cocos2d-x中关于touch事件的响应
原作者:有缘人 来源:新浪微博 地址:http://blog.sina.com.cn/s/blog_6ac2c7260102vvdu.html 一.touch事件响应分为单点触摸响应和多点触摸响应. ...
- Android中Touch事件分析--解决HorizontalScrollView滑动和按钮事件触发问题
之前写过关于HorizontalScrollView滑动和按钮事件触发问题,但是不能所有的情况,最近几天一直在想这个问题,今天有一个比较好的解决思路,最终应用在项目里面效果也很好,首先说明一下功能: ...
- Android Touch事件传递机制 二:单纯的(伪生命周期)
转载于:http://blog.csdn.net/yuanzeyao/article/details/38025165 在前一篇文章中,我主要讲解了Android源码中的Touch事件的传递过程,现在 ...
- Android touch 事件传递机制
前言: (1)在自定义view的时候经常会遇到事件拦截处理,比如在侧滑菜单的时候,我们希望在侧滑菜单里面有listview控件,但是我们希望既能左右滑动又能上下滑动,这个时候就需要对触摸的touch事 ...
随机推荐
- WPF自定义控件与样式(1)-矢量字体图标(iconfont)
一.图标字体 图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap.但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般 ...
- [转]浏览器退出之后php还会继续执行么?
原文链接:http://www.cnblogs.com/yjf512/p/5362025.html 前提:这里说的是典型的lnmp结构,nginx+php-fpm的模式 如果我有个php程序执行地非常 ...
- Android音视频之MediaRecorder音视频录制
前言: 公司产品有很多地方都需要上传音频视频,今天抽空总结一下音频视频的录制.学习的主角是MediaRecorder类. MediaRecorder类介绍: MediaRecorder类是Androi ...
- android5.0联系人 sort_key改成phonebook_label
项目中用到了联系人根据字母排序,在android4.0手机上是可以的,但是在android4.4以上的手机排序是乱的,一般字母排序都是根据sort_key这个拼音进行排序,而android5.0这个字 ...
- Linux安装Node.js
安装环境:Ubuntu:x86_64 Node.js 官网:https://nodejs.org 下载Node.js: wget https://nodejs.org/dist/v4.4.3/node ...
- BFC之清除浮动篇&clear
我们在日常代码生活中,或多或少会利用浮动来布局,例如导航布局,如下图所示: 但是,我们在实现的时候,经常会遇到父元素“塌陷”以及清除浮动问题.例如 <!DOCTYPE html> < ...
- iOS开发之WebView
做iOS的应用也有一段时间了,在之前的demo中一直没有机会用到WebView,今天就查缺补漏一下,使用一下WebView.最早接触WebView是在Android中接触的,iOS中的WebView的 ...
- Objective-C中的老板是这样发通知的(Notification)
通知(Notification)简单的类比一下,公司的老总给下面的员工发通知啦,说明天公司要上市,各部门做一下准备工作.等通知发完,各部门收到后各司其职,做着自己该做的东西.假如Boss是 ...
- javascript模拟继承
javascript作为前端开发的标配技能,如果不掌握好它的三大特点:1.原型 2.作用域 3. 闭包 ,又怎么可以说你学好了这门语言呢?如果标配的技能都没有撑握好,怎么可以任性的玩耍呢?怎么验证自己 ...
- php判断数据库是否连接成功的测试例子
php判断数据库是否连接成功的测试例子 如果出现数据库配置不正确的错误,请看php与mysql的配置教程: win7系统下如何配置php-Apache-mysql环境 http://www.cnblo ...