移动端-模拟手势事件

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <style type="text/css">
        .touch-box{
            background-color: #444;
            color:white;
            width: 200px;
            height: 200px;
        }
    </style>
    <div id="touch-box" class="touch-box"></div>
    <script type="text/javascript">
        var bgColors=['#BB0D0D','#189135','#1173C0'];
        var idx=0;
        var el=document.getElementById('touch-box');
        var startX,startY;
        function handleStart(e){
            if(e.touches.length!==1) return

            startX=e.touches[0].pageX;
            startY=e.touches[0].pageY;

            el.addEventListener('touchmove',handleMove,false);
        }
        function handleMove(e){
            var touches=e.touches;
            if(touches&&touches.length){
                var deltaX=startX-touches[0].pageX;
                var deltaY=startY-touches[0].pageY;
                if(deltaX>50){
                    console.log('swipeLeft');
                    idx=(idx+1)%3;
                    el.style.backgroundColor=bgColors[idx];
                }
                if(deltaX>-50){
                    console.log('swipeRight');
                    idx=idx>=1?idx-1:2;
                    el.style.backgroundColor=bgColors[idx];
                }
                if(deltaY>50){
                    console.log('swipeTop');
                }
                if(deltaY<-50){
                    console.log('swipeDown')
                }
                if(Math.abs(deltaX)>=50||Math.abs(deltaY)>=50){
                    el.removeEventListener('touchmove',handleMove);
                }
            }
            event.preventDefault();
        }
        el.addEventListener('touchstart',handleStart);
    </script>
</body>
</html>

分别取touchstart事件和touchmove事件中事件对象(e.touches[0])的pageX和pageY属性,相减后进行判断,判断之后记得移除touchmove事件

转载于:https://www.cnblogs.com/YutaoZhou/p/6682241.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值