为什么我没实现拖动?也没报错

为什么我没实现拖动?也没报错

<!DOCTYPE html>

<html lang="en">


<head>

    <meta charset="UTF-8">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <meta http-equiv="X-UA-Compatible" content="ie=edge">

    <title>Document</title>

    <style>

        .backTop {

            width: 45px;

            height: 45px;

            background-color: rgba(2, 2, 2, .5);

            border-radius: 50%;

            position: fixed;

            bottom: 20px;

            right: 20px;

            text-align: center;

            color: #ffffff;

            line-height: 45px;

            font-size: 20px;

        }

    </style>

</head>


<body>

    <a class="backTop" id="backTop">&uarr;</a>


    <script>


        function drag(el, option) {

            option.x = typeof option.x !== 'undefined' ? option.x : true;

            option.y = typeof option.y !== 'undefined' ? option.y : false;


            if (!option.x && !option.y) return;


            var startPoint = {}, curPoint = { x: 0, y: 0 };

            el.addEventListener("touchstart", handleStart, false);

            el.addEventListener("touchmove", handleMove, false);

            el.addEventListener("touchend", handleEnd, false);


            function handleStart(e) {

                var touch = e.changedTouches[0];

                startPoint.x = touch.pageX;

                startPoint.y = touch.pageY;

            }

            function handleMove(e) {

                e.preventDefault();


                var touch = e.changedTouches[0];

                var diffPoint = {}, movePoint = {};

                diffPoint.x = touch.pageX - startPoint.x;

                diffPoint.y = touch.pageY - startPoint.y;


                if (option.x) {

                    movePoint.x = diffPoint.x + curPoint.x

                };

                if (option.y) {

                    movePoint.y = diffPoint.y + curPoint.y

                }


                move(el, movePoint.x, movePoint.y);

            }


            function handleEnd(e){

                var touch = e.changedTouches[0];

                curPoint.x = touch.pageX - startPoint.x;

                curPoint.y = touch.pageY - startPoint.y;

            }


            function move(el, x, y) {

                x = x || 0;

                y = y || 0;

                el.transform = 'translate3d (' + x + 'px, ' + y + 'px, 0)'

            }


        }


        var backTop = document.getElementById("backTop");

        drag(backTop, { x: true, y: true });

    </script>

</body>


</html>



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

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

2回答
好帮手慕慕子 2019-09-09 09:54:50

同学你好, 因为在移动端默认移动手指的时候, 页面会跟着滑动, 所以我们需要通过 e.preventDefault();防止阻止浏览器默认事件, 实现只有箭头被拖动的效果

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~~~

卡布琦诺 2019-09-08 19:04:49

http://img1.sycdn.imooc.com//climg/5d74e00f0001032308790197.jpghttp://img1.sycdn.imooc.com//climg/5d74e02a00016c9e05840474.jpghttp://img1.sycdn.imooc.com//climg/5d74e0470001636d09360647.jpg

希望可以帮到你!

  • 提问者 慕侠9181480 #1
    老师还有为什么 handleMove() 这个函数要阻止默认事件;(代码如下) function handleMove(e) { e.preventDefault();//需要阻止默认事件 var touch = e.changedTouches[0]; var diffPoint = {}, movePoint = {}; diffPoint.x = touch.pageX - startPoint.x; diffPoint.y = touch.pageY - startPoint.y; if (option.x) { movePoint.x = diffPoint.x + curPoint.x } if (option.y) { movePoint.y = diffPoint.y + curPoint.y } move(el, movePoint.x, movePoint.y); }
    2019-09-08 20:10:49
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
3.WebAPP开发与小程序
  • 参与学习           人
  • 提交作业       622    份
  • 解答问题       6815    个

微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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