边界限制问题
<!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>边界限制问题无法实现,麻烦老师提供下具体的思路和实现的原理
28
收起
正在回答
1回答
同学你好,对于你的问题解答如下:
transform属性只是在视觉上改变了元素的位置,实际上元素占据页面的位置并未发生改变。建议:去掉盒子的margin属性,默认在左上角显示即可。

边界限制,以水平方向为例:
(1)当向左移动的距离小于等于0的时候,将afterPointX的值设置为0,限制方块移出窗口左侧。
(2)当向右移动的距离大于等于页面的宽度减去盒子自身的宽度,将afterPointX设置为窗口的宽度减去盒子自身的宽度的值,限制方块移出窗口右侧。

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

同学可以测试理解下
如果我的回答帮助到了你,欢迎采纳,祝学习愉快~
3.WebAPP开发与小程序
- 参与学习 人
- 提交作业 622 份
- 解答问题 6815 个
微信带火了小程序,也让前端工程师有了更多的展现机会,本阶段带你从移动基础知识的学习到webAPP开发,及小程序开发,让你PC端与移动端两端通吃。
了解课程



恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星