在 JavaScript 中实现拖拽排序,通常会结合 HTML5 的拖放 API 来完成。以下是一个基础的示例代码,展示如何实现列表项的拖拽排序功能:
<!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-list {
list-style-type: none;
padding: 0;
}
.draggable-item {
padding: 10px;
border: 1px solid #ccc;
margin-bottom: 5px;
cursor: move;
}
</style>
</head>
<body>
<ul class="draggable-list" id="draggableList">
<li class="draggable-item" draggable="true">Item 1</li>
<li class="draggable-item" draggable="true">Item 2</li>
<li class="draggable-item" draggable="true">Item 3</li>
<li class="draggable-item" draggable="true">Item 4</li>
</ul>
<script>
const list = document.getElementById('draggableList');
let draggedItem = null;
list.addEventListener('dragstart', (e) => {
draggedItem = e.target;
e.dataTransfer.effectAllowed = 'move';
});
list.addEventListener('dragover', (e) => {
e.preventDefault();
const overItem = e.target.closest('.draggable-item');
if (overItem && overItem !== draggedItem) {
const rect = overItem.getBoundingClientRect();
const offset = e.clientY - rect.top;
if (offset < rect.height / 2) {
list.insertBefore(draggedItem, overItem);
} else {
list.insertBefore(draggedItem, overItem.nextSibling);
}
}
});
list.addEventListener('dragend', () => {
draggedItem = null;
});
</script>
</body>
</html>
优势:
应用场景:
可能出现的问题及解决方法:
领取专属 10元无门槛券
手把手带您无忧上云