鼠标拖动一个方块到某个区域如果方块在区域内则方块无法被拖动没在区域内则自动返回原位置用js写一个
时间: 2024-02-11 17:06:43 浏览: 155
好的,可以使用以下代码实现:
HTML:
```
<div id="block" draggable="true">拖动我</div>
<div id="area">放置区域</div>
```
JavaScript:
```
var block = document.getElementById("block");
var area = document.getElementById("area");
// 阻止拖动事件的默认行为
block.addEventListener("dragstart", function(event) {
event.preventDefault();
});
// 监听拖动事件
block.addEventListener("drag", function(event) {
// 计算方块的位置
var x = event.clientX - block.offsetWidth / 2;
var y = event.clientY - block.offsetHeight / 2;
// 设置方块的位置
block.style.left = x + "px";
block.style.top = y + "px";
// 检查方块是否在放置区域内
var areaRect = area.getBoundingClientRect();
var blockRect = block.getBoundingClientRect();
if (
blockRect.left >= areaRect.left &&
blockRect.right <= areaRect.right &&
blockRect.top >= areaRect.top &&
blockRect.bottom <= areaRect.bottom
) {
// 在放置区域内,禁用拖动
block.draggable = false;
} else {
// 不在放置区域内,启用拖动
block.draggable = true;
}
});
// 监听拖动结束事件
block.addEventListener("dragend", function(event) {
// 检查方块是否在放置区域内
var areaRect = area.getBoundingClientRect();
var blockRect = block.getBoundingClientRect();
if (
blockRect.left >= areaRect.left &&
blockRect.right <= areaRect.right &&
blockRect.top >= areaRect.top &&
blockRect.bottom <= areaRect.bottom
) {
// 在放置区域内,保持方块位置不变
} else {
// 不在放置区域内,返回原位置
block.style.left = "";
block.style.top = "";
}
});
```
这段代码会创建一个可拖动的方块和一个放置区域。当用户拖动方块时,会检查方块是否在放置区域内,如果在则禁用拖动,否则启用拖动。当用户松开鼠标时,如果方块在放置区域内,则保持位置不变,否则返回原位置。
阅读全文