边界限制问题

边界限制问题

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        .container {
            width: 100%;
            height: 1400px;
        }

        #box {
            width: 100px;
            height: 100px;
            background: red;
            margin: 0 auto;
        }
    </style>
</head>

<body>
    <div class="container">
        <div id="box"></div>
    </div>


    <script>
        var box = document.getElementById("box");
        var curPoint = {
            x: 0,
            y: 0
        }




        box.addEventListener("touchstart", function (e) {
            startPointX = e.changedTouches[0].pageX;
            startPointY = e.changedTouches[0].pageY;


        });




        box.addEventListener("touchmove", function (e) {
            e.preventDefault();
            movePointX = e.changedTouches[0].pageX - startPointX;
            movePointY = e.changedTouches[0].pageY - startPointY;
            afterPointX = movePointX + curPoint.x;
            afterPointY = movePointY + curPoint.y;
            box.style.transform = 'translate3d(' + afterPointX + 'px, ' + afterPointY + 'px, 0)';


        });




        box.addEventListener("touchend", function (e) {
            curPoint.x = e.changedTouches[0].pageX - startPointX + curPoint.x;
            curPoint.y = e.changedTouches[0].pageY - startPointY + curPoint.y;



        });




    </script>
</body>

</html>

边界限制问题无法实现,麻烦老师提供下具体的思路和实现的原理

正在回答

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

1回答

同学你好,对于你的问题解答如下:

  1. transform属性只是在视觉上改变了元素的位置,实际上元素占据页面的位置并未发生改变。建议:去掉盒子的margin属性,默认在左上角显示即可。

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

  2. 边界限制,以水平方向为例:

    (1)当向左移动的距离小于等于0的时候,将afterPointX的值设置为0,限制方块移出窗口左侧。

    (2)当向右移动的距离大于等于页面的宽度减去盒子自身的宽度,将afterPointX设置为窗口的宽度减去盒子自身的宽度的值,限制方块移出窗口右侧。

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

  3. 垂直方向是相同的实现思路, 示例:

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

同学可以测试理解下

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

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

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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