老师,点击空白处,不能移动,是什么原因呢

老师,点击空白处,不能移动,是什么原因呢

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        #box {
            width: 200px;
            height: 200px;
            background-color: red;
        }
    </style>
</head>

<body>
    <div id="box"></div>
    <script>
        // 拖拽事件
        const drag = $el => {
            // 每次拖拽最开始的触摸点
            const startPoint = {};
            // 拖拽过程中移动到的点
            const movePoint = {};
            // 被拖拽元素的当前位置
            const curPos = {
                x: 0,
                y: 0
            };
            $el.addEventListener('pointerdown', startHandler, false);
            // 绑定触摸事件
            $el.addEventListener('touchstart', evt => {
                evt.preventDefault();
            }, false);

            function startHandler(evt) {
                // 获取触摸点
                startPoint.x = evt.pageX;
                startPoint.y = evt.pageY;
                // console.log(startPoint);

                document.addEventListener('pointermove', moveHandler, false);
                document.addEventListener('pointerup', endHandler, false);
                document.addEventListener('pointercancel', endHandler, false);
            }


            function moveHandler(e) {
                e.preventDefault();
                movePoint.x = curPos.x + e.pageX - startPoint.x;
                movePoint.y = curPos.y + e.pageY - startPoint.y;

                $el.style.transform = `translate3d(${movePoint.x}px,${movePoint.y}px,0)`;
            }

            function endHandler() {
                curPos.x = movePoint.x;
                curPos.y = movePoint.y;

                document.removeEventListener('pointermove', moveHandler, false);
                document.removeEventListener('pointerup', endHandler, false);
                document.removeEventListener('pointercancel', endHandler, false);
            }
        };

        drag(document.getElementById('box'));
    </script>
</body>

</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕然然 2021-12-02 09:45:43

同学你好,这段代码是给box盒子添加的拖拽事件,实现的是点击box盒子进行拖拽的效果,所以点击box盒子才能移动,点击空白是不能移动的。

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师