通过两次点击,使元素在自定义坐标上移动至第二次点击的位置
时间: 2024-02-25 18:53:41 浏览: 16
实现这个功能可以分为以下几个步骤:
1. 给元素添加点击事件,记录第一次点击的位置。
2. 再次点击时,计算出第二次点击的位置和第一次点击的位置之间的距离。
3. 根据距离和步长,以一定速度逐步移动元素,直到移动到第二次点击的位置。
下面是一个实现该功能的示例代码:
HTML代码:
```html
<div id="box" style="position: absolute; left: 0; top: 0; width: 50px; height: 50px; background-color: red;"></div>
```
JavaScript代码:
```javascript
var box = document.getElementById('box');
var firstClick = true;
var startX, startY, endX, endY, distanceX, distanceY, stepX, stepY, currentX, currentY, timer;
box.addEventListener('click', function(e) {
if (firstClick) {
startX = e.clientX;
startY = e.clientY;
firstClick = false;
} else {
endX = e.clientX;
endY = e.clientY;
distanceX = endX - startX;
distanceY = endY - startY;
stepX = distanceX / 100; // 步长
stepY = distanceY / 100;
currentX = startX;
currentY = startY;
clearInterval(timer);
timer = setInterval(function() {
currentX += stepX;
currentY += stepY;
box.style.left = currentX + 'px';
box.style.top = currentY + 'px';
if (Math.abs(currentX - endX) < Math.abs(stepX) && Math.abs(currentY - endY) < Math.abs(stepY)) {
clearInterval(timer);
}
}, 10);
firstClick = true;
}
});
```
解释一下代码:
首先获取元素和一些变量的初始值,其中`firstClick`用于判断是否是第一次点击,`startX`和`startY`表示第一次点击的位置,`endX`和`endY`表示第二次点击的位置,`distanceX`和`distanceY`表示两次点击的距离,`stepX`和`stepY`表示每次移动的步长,`currentX`和`currentY`表示当前元素的位置。
然后给元素添加点击事件,当第一次点击时记录下位置,当第二次点击时计算出距离和步长,并使用定时器逐步移动元素,直到移动到第二次点击的位置。在移动过程中,需要判断当前位置是否已经到达目标位置,如果到达了就停止定时器。
注意,这只是一个简单的示例代码,实际应用中可能需要考虑更多的情况,比如元素的边界问题、停止移动的条件等。