基本上,我想实现的是在另一个容器内拖动一些 div。当内部 div 到达容器 div 的边缘时,应该停止。我完成了大部分工作,但问题在于,如果我慢慢、小心地拖动内部 div,则会在边缘处停止,但如果我拖动得更快一些,有时它会溢出边缘或在边缘之前停止。这里的问题是什么?我该怎么做才能解决?这是完整的代码。
上述代码在鼠标移动事件上运行,改变内部div的位置。
function mouseMove(e) {
e.preventDefault();
console.log("mouse moving");
if(isMouseDown > 0 && currentElement) {
mouseX = e.clientX;
mouseY = e.clientY;
var diffX = mouseX - lastMouseX;
var diffY = mouseY - lastMouseY;
if(diffX + lastElementX + elementWidth < rightLimit && diffX + lastElementX > leftLimit) {
lastElementX += diffX;
lastMouseX = mouseX;
}
if(diffY + lastElementY + elementHeight < bottomLimit && diffY + lastElementY > topLimit) {
lastElementY += diffY;
lastMouseY = mouseY;
}
setCurrentElementPosition(lastElementX, lastElementY);
}
}
上述代码在鼠标移动事件上运行,改变内部div的位置。