JavaScript 拖拽复制是指通过鼠标操作(如拖拽)将页面上的元素复制到另一个位置。这个过程涉及到浏览器的事件处理,如 mousedown
、mousemove
和 mouseup
事件。
以下是一个简单的 JavaScript 拖拽复制示例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Drag and Copy Example</title>
<style>
.draggable {
width: 100px;
height: 100px;
background-color: #f00;
margin: 10px;
cursor: grab;
}
</style>
</head>
<body>
<div class="draggable" id="draggable"></div>
<script>
let draggedElement = null;
document.addEventListener('mousedown', (event) => {
if (event.target.classList.contains('draggable')) {
draggedElement = event.target;
draggedElement.style.position = 'absolute';
draggedElement.style.zIndex = '1000';
}
});
document.addEventListener('mousemove', (event) => {
if (draggedElement) {
draggedElement.style.left = event.clientX + 'px';
draggedElement.style.top = event.clientY + 'px';
}
});
document.addEventListener('mouseup', (event) => {
if (draggedElement) {
let clone = draggedElement.cloneNode(true);
clone.style.left = event.clientX + 'px';
clone.style.top = event.clientY + 'px';
document.body.appendChild(clone);
draggedElement = null;
}
});
</script>
</body>
</html>
getBoundingClientRect()
方法获取元素的精确位置,并考虑页面滚动的影响。transform
属性代替 left
和 top
来移动元素,因为 transform
不会触发回流。cloneNode(true)
来复制所有子节点,并手动重新绑定事件监听器。通过以上方法,可以有效实现并优化JavaScript中的拖拽复制功能。
领取专属 10元无门槛券
手把手带您无忧上云