H5中的touch事件

touch中共有touchstart、touchmovetouchend三个事件;

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

时间: 2024-12-20 20:13:51

H5中的touch事件的相关文章

android中根据touch事件判断单击及双击

private static final int MAX_INTERVAL_FOR_CLICK = 250;     private static final int MAX_DISTANCE_FOR_CLICK = 100;     private static final int MAX_DOUBLE_CLICK_INTERVAL = 500;     int mDownX = 0;     int mDownY = 0;     int mTempX = 0;     int mTempY

javascript移动设备Web开发中对touch事件的封装实例

在触屏设备上,一些比较基础的手势都需要通过对 touch 事件进行二次封装才能实现.zepto 是移动端上使用率比较高的一个类库,但是其 touch 模块模拟出来的一些事件存在一些兼容性问题,如 tap 事件在某些安卓设备上存在事件穿透的 bug,其他类型的事件也或多或少的存在一些兼容性问题. 于是乎,干脆自己动手对这些常用的手势事件进行了封装,由于没有太多真实的设备来进行测试,可能存在一些兼容性问题,下面的代码也只是在 iOS 7.Andorid 4 上的一些比较常见的浏览器中测试通过. ta

cocos2d-x中关于touch事件的响应

原作者:有缘人  来源:新浪微博 地址:http://blog.sina.com.cn/s/blog_6ac2c7260102vvdu.html 一.touch事件响应分为单点触摸响应和多点触摸响应. 单点触摸响应需要重载的方法: virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); virtual void

web前端中的Touch事件实例

例1.单个手指touch <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0;" name="viewport"> &

JavaScript中的Touch事件简介

在本教程中,我们可以通过检查触摸相关事件以及如何使用它们来检测和响应触摸和滑动事件,从而轻松获得JavaScript.随着基于触摸的设备数量不断增长,掌握这些事件对于理解老龄鼠标事件至关重要.本教程中的示例可以在触摸和非触摸启用的设备中进行应用,而后者则会回退到您信任的鼠标.准备给那些手指做一点锻炼吗?我们走吧! JavaScript触摸事件 所以让我们潜入它.以下列出了JavaScript中支持的触摸事件: JavaScript触摸事件 活动名称 描述 touchstart 当用户与触摸表面接

Android 编程下 Touch 事件的分发和消费机制

Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev).onTouchEvent(MotionEvent ev):能够响应这些方法的控件包括:ViewGroup 及其子类.Activity.方法与控件的对应关系如下表所示: Touch 事件相关方法   方法功能     ViewGroup         Activity        public b

Touch 事件的分发和消费机制

Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev).onTouchEvent(MotionEvent ev):能够响应这些方法的控件包括:ViewGroup 及其子类.Activity.方法与控件的对应关系如下表所示: Touch 事件相关方法   方法功能     ViewGroup         Activity        public b

Android touch 事件的分发和消费机制

Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev).onTouchEvent(MotionEvent ev):能够响应这些方法的控件包括:ViewGroup.View.Activity.方法与控件的对应关系如下表所示: Touch 事件相关方法   方法功能    ViewGroup           View             Activi

自定义View系列教程07--详解ViewGroup分发Touch事件

自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View系列教程03–onLayout源码详尽分析 自定义View系列教程04–Draw源码分析及其实践 自定义View系列教程05–示例分析 自定义View系列教程06–详解View的Touch事件处理 自定义View系列教程07–详解ViewGroup分发Touch事件 PS:如果觉得文章太长,那就直接看视频吧 在上一篇中已经分析完了View对于Touch事件的处理,在此基础上分析和理