老师,我不会限定他的边界,要怎么做?可以教教我吗?

老师,我不会限定他的边界,要怎么做?可以教教我吗?

老师,我不会限定他的边界,要怎么做?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximun-scale=1,minimum-scale=1, user-scalable=no">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>touch</title>
    <style>
        .box{
            width: 50px;
            height: 50px;
            background-color: red;
            left: 20px;
            top: 20px;
        }
        body{
            height: 2000px;
            background-color: pink;
        }
    </style>
</head>
<body>
    <div id="box" class="box"></div>
    
    <script>
        var boxEI = document.getElementById('box');
        boxEI.addEventListener('touchstart',handleStart,false);
        boxEI.addEventListener('touchmove',handleMove,false);
        boxEI.addEventListener('touchend',handleEnd,false);

        var currentPos = {
                x:0,
                y:0
            },
            distance = {},
            currentPage = {},
            targetPage = {};

        function handleStart(ev){
            var touch = ev.changedTouches[0];
            // get start pos
            currentPage.x = touch.pageX;
            currentPage.y = touch.pageY;
        }
        function handleMove(ev){
            var touch = ev.changedTouches[0];
            // get end pos
            targetPage.x = touch.pageX;
            targetPage.y = touch.pageY;
            // caculate distance
            distance.x = targetPage.x - currentPage.x;
            distance.y = targetPage.y - currentPage.y;
            // move
            move(this, distance.x+currentPos.x, distance.y+currentPos.y);
        }
        function handleEnd(ev){
            currentPos.x += distance.x;
            currentPos.y += distance.y;
        }
        function move(el, x, y){
            el.style.transform = "translate3d("+ x + "px," + y + "px, 0)";
        }
    </script>
</body>
</html>

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

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

1回答
好帮手慕星星 2019-06-19 10:37:49

你好,可以参考下面代码进行修改:

1、清除页面默认间隙:

http://img1.sycdn.imooc.com//climg/5d099f7800018a5b02320112.jpg

否则下面获取页面宽高的时候会有问题。

2、边界问题:在全局中定义一个对象,存储移动结束的位置,然后获取页面宽高以及元素宽高进行判断:

http://img1.sycdn.imooc.com//climg/5d099eed00017a8a02830120.jpg

http://img1.sycdn.imooc.com//climg/5d099f4a0001781607270679.jpg

3、当元素进行上移的时候,滚动条会移动,不是元素移动,这是浏览器默认事件,需要阻止一下:

http://img1.sycdn.imooc.com//climg/5d099fbb00018d0f04750183.jpg

4、如果只是对元素进行点击,并不移动,也会触发更新位置,所以建议设置一个标志,判断是否进行了移动,参考:

http://img1.sycdn.imooc.com//climg/5d099feb0001697f05220251.jpg

http://img1.sycdn.imooc.com//climg/5d099ff500010cba04400167.jpg

自己可以重新测试下,祝学习愉快!

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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