移动端Touch滑动事件

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <title>Title</title>
    <style>
        body {
            margin: 0;
            padding: 0;
        }

        .box {
            width: 200px;
            height: 200px;
            background: pink;
            float: left;
        }
    </style>
</head>

<body>
<div class="box"></div>
<script>
    window.onload = function () {
        /*1. 理解移动端的手势事件*/
        /*2. swipe swipeLeft  swipeRight swipeUp swipeDown */
        /*3. 左滑和右滑手势怎么实现*/

        // 定义滑动手势函数
        var bindSwipeEvent = function (dom, leftCallback, rightCallback) {
            /*手势的条件*/
            /*1.必须滑动过*/
            /*2.滑动的距离50px*/
            var isMove = false; // 滑动状态
            var startX = 0; // 起始横坐标
            var distanceX = 0; // 滑动距离
            dom.addEventListener('touchstart', function (e) {
                startX = e.touches[0].clientX;
            });
            dom.addEventListener('touchmove', function (e) {
                isMove = true;
                var moveX = e.touches[0].clientX;
                distanceX = moveX - startX;
            });
            dom.addEventListener('touchend', function (e) {
                /*滑动结束*/
                // 滑动距离必须大于50px
                if (isMove && Math.abs(distanceX) > 50) {
                    // 判断左右滑动
                    if (distanceX > 0) {
                        rightCallback && rightCallback.call(this, e);
                    } else {
                        leftCallback && leftCallback.call(this, e);
                    }
                }
                /*重置参数*/
                isMove = false;
                startX = 0;
                distanceX = 0;
            });
        }
        // 调用滑动手势函数
        bindSwipeEvent(document.querySelector('.box'), function (e) {
                console.log(e);
                console.log('左滑手势');
            },
            function (e) {
                console.log(e);
                console.log('右滑手势');
            });

    }
</script>
</body>

</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值