1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<head>
<style>
.square {
width: 50px;
height: 50px;
background-color: blue;
}
</style>
</head>
<body>
<div class="square"></div>
<script>
let dragEl = null;
function createDragEl (clientX, clientY) {
console.log(clientX, clientY)
// 创建一个DIV元素
const dragItem = document.createElement('div');
dragItem.className = "dragEl"
dragItem.style.width = '50px';
dragItem.style.height = '50px';
dragItem.style.backgroundColor = 'blue';
dragItem.style.position = 'absolute';
dragItem.style.top = clientY - 25 + "px";
dragItem.style.left = clientX - 25 + "px";
dragItem.style.zIndex = 999;
// 将元素添加到文档中
document.body.appendChild(dragItem);
dragEl = dragItem;

// 拖拽逻辑
dragItem.addEventListener('mousedown', function(e) {
const offsetX = e.clientX - dragItem.getBoundingClientRect().left;
const offsetY = e.clientY - dragItem.getBoundingClientRect().top;

function drag(e) {
dragItem.style.position = 'absolute';
dragItem.style.left = (e.clientX - offsetX) + 'px';
dragItem.style.top = (e.clientY - offsetY) + 'px';
}

function stopDrag() {
document.removeEventListener('mousemove', drag);
document.removeEventListener('mouseup', stopDrag);
}

document.addEventListener('mousemove', drag);
document.addEventListener('mouseup', stopDrag);
});
}
const el = document.querySelector(".square");
el.addEventListener("mousedown", function (e) {
createDragEl(e.clientX, e.clientY);
});
document.addEventListener("mousemove", function (e) {
if (!dragEl)return;
dragEl.style.top = e.clientY - 25 + "px";
dragEl.style.left = e.clientX - 25 + "px";
});
document.addEventListener("mouseup", function (e) {
if(!dragEl)return;
dragEl = null;
});
</script>
</body>

最后更新: 2024年03月25日 17:05