封装判断touch手指滑动方向的函数

本文介绍了一种基于JavaScript实现的触摸滑动手势识别方法,包括左右、上下等方向的滑动事件触发。通过监听touchstart、touchmove和touchend事件,并计算手指起始位置与结束位置之间的偏移来判断滑动方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

var toch={
    swipe:function (el,fn){
        var move,starx,stary;
        el.addEventListener('touchstart',function (e){
            var ths=e.touches[0];
            starx=ths.clientX;//获取手指点下去的X坐标
            stary=ths.clientY;//获取手指Y坐标;
            move=false;
        },false);
        el.addEventListener('touchmove',function (e){
            move=true;
            e.preventDefault();//阻止默认事件
        },false);
        el.addEventListener('touchend',function (e){
            if(move==false){
                return;
            }
            var cths=e.changedTouches[0];
            endx=cths.clientX;
            endy=cths.clientY;
            if(Math.abs(starx-endx)>20||Math.abs(stary-endy)>20){
                fn();
            }
        },false);
    },
    swipet:function (el,fn){
        var move,starx,stary;
        el.addEventListener('touchstart',function (e){
            var ths=e.touches[0];
            starx=ths.clientX;//获取手指点下去的X坐标
            stary=ths.clientY;//获取手指Y坐标;
            move=false;
        },false);
        el.addEventListener('touchmove',function (e){
            move=true;
            e.preventDefault();//阻止默认事件
        },false);
        el.addEventListener('touchend',function (e){
            if(move==false){
                return;
            }
            var cths=e.changedTouches[0];
            endx=cths.clientX;
            endy=cths.clientY;
            jlx=starx-endx;
            jly=stary-endy;
            if(Math.abs(jlx)<Math.abs(jly)){
                if(jly>20){
                fn();
            }
            }
        },false);
    },
    swipeb:function (el,fn){
        var move,starx,stary;
        el.addEventListener('touchstart',function (e){
            var ths=e.touches[0];
            starx=ths.clientX;//获取手指点下去的X坐标
            stary=ths.clientY;//获取手指Y坐标;
            move=false;
        },false);
        el.addEventListener('touchmove',function (e){
            move=true;
            e.preventDefault();//阻止默认事件
        },false);
        el.addEventListener('touchend',function (e){
            if(move==false){
                return;
            }
            var cths=e.changedTouches[0];
            endx=cths.clientX;
            endy=cths.clientY;
            jlx=starx-endx;
            jly=stary-endy;
            if(Math.abs(jlx)<Math.abs(jly)){
                if(jly<-20){
                fn();
            }
            }

        },false);
    },
    swipel:function (el,fn){
        var move,starx,stary;
        el.addEventListener('touchstart',function (e){
            var ths=e.touches[0];
            starx=ths.clientX;//获取手指点下去的X坐标
            stary=ths.clientY;//获取手指Y坐标;
            move=false;
        },false);
        el.addEventListener('touchmove',function (e){
            move=true;
            e.preventDefault();//阻止默认事件
        },false);
        el.addEventListener('touchend',function (e){
            if(move==false){
                return;
            }
            var cths=e.changedTouches[0];
            endx=cths.clientX;
            endy=cths.clientY;
            jlx=starx-endx;
            jly=stary-endy;
            if(Math.abs(jlx)>=Math.abs(jly)){
                if(jlx>20){
                fn();
            }
            }

        },false);
    },
    swiper:function (el,fn){
        var move,starx,stary;
        el.addEventListener('touchstart',function (e){
            var ths=e.touches[0];
            starx=ths.clientX;//获取手指点下去的X坐标
            stary=ths.clientY;//获取手指Y坐标;
            move=false;
        },false);
        el.addEventListener('touchmove',function (e){
            move=true;
            e.preventDefault();//阻止默认事件
        },false);
        el.addEventListener('touchend',function (e){
            if(move==false){
                return;
            }
            var cths=e.changedTouches[0];
            endx=cths.clientX;
            endy=cths.clientY;
            jlx=starx-endx;
            jly=stary-endy;
            if(Math.abs(jlx)>=Math.abs(jly)){
                if(jlx<-20){
                fn();
            }
            }

        },false);
    }
}

封装好之后,用的时候怎么用呢?别着急,我给你演示一下
eg:
//判断手势向左滑动的时候,执行某个事件
toch.swipel(document,function (){
$(“.cover”).animate({left:’0px’},200,’swing’);
})
其中swipel,最后一个字母具代表left,right是r,top是t,bottom是b。如果大家觉得真心帮助到了你们,求给博主加把油,登上账号,说句加油也好。如果有错误,也请大家踊跃指出,共同进步,谢谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值