以下是一个使用纯 JavaScript 实现的简单拖动示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
#draggable {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
top: 50px;
left: 50px;
cursor: move;
}
</style>
</head>
<body>
<div id="draggable"></div>
<script>
const draggable = document.getElementById('draggable');
let isDragging = false;
let offsetX = 0;
let offsetY = 0;
draggable.addEventListener('mousedown', (e) => {
isDragging = true;
offsetX = e.clientX - draggable.offsetLeft;
offsetY = e.clientY - draggable.offsetTop;
});
document.addEventListener('mousemove', (e) => {
if (isDragging) {
draggable.style.left = e.clientX - offsetX + 'px';
draggable.style.top = e.clientY - offsetY + 'px';
}
});
document.addEventListener('mouseup', () => {
isDragging = false;
});
</script>
</body>
</html>
这个示例中,创建了一个可拖动的红色方块。当鼠标按下时,记录下鼠标位置与方块左上角的偏移量,并将 isDragging
标记为 true
。在鼠标移动过程中,如果 isDragging
为 true
,则根据鼠标位置和偏移量更新方块的位置。当鼠标松开时,将 isDragging
标记为 false
,停止拖动。
这种拖动实现的优势在于简单直观,易于理解和修改。适用于一些简单的页面交互场景,例如拖动调整元素位置、拖放排序等。
可能出现的问题及解决方法: