在两个<ul>
元素之间拖动<li>
元素(不使用jQuery)涉及到HTML5的拖放API。以下是实现这一功能的基础概念、优势、类型、应用场景以及具体的实现步骤和示例代码。
dragstart
、dragover
、drop
等事件来实现拖放功能。以下是一个简单的示例,展示如何在两个<ul>
元素之间拖动<li>
元素:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Drag and Drop List</title>
<style>
ul {
list-style-type: none;
padding: 0;
margin: 10px;
border: 1px solid #ccc;
width: 200px;
}
li {
padding: 10px;
border-bottom: 1px solid #eee;
cursor: grab;
}
li:active {
cursor: grabbing;
}
</style>
</head>
<body>
<ul id="list1">
<li draggable="true" ondragstart="drag(event)">Item 1</li>
<li draggable="true" ondragstart="drag(event)">Item 2</li>
<li draggable="true" ondragstart="drag(event)">Item 3</li>
</ul>
<ul id="list2">
<li draggable="true" ondragstart="drag(event)">Item 4</li>
<li draggable="true" ondragstart="drag(event)">Item 5</li>
<li draggable="true" ondragstart="drag(event)">Item 6</li>
</ul>
<script>
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
document.addEventListener('dragover', (event) => {
event.preventDefault();
});
document.addEventListener('drop', (event) => {
event.preventDefault();
const data = event.dataTransfer.getData("text");
const draggedElement = document.getElementById(data);
const dropTarget = event.target.closest('ul');
if (dropTarget && dropTarget !== draggedElement.parentNode) {
dropTarget.appendChild(draggedElement);
}
});
</script>
</body>
</html>
<ul>
列表,每个<li>
元素都设置了draggable="true"
属性。drag
函数:在拖动开始时,将当前元素的ID存储到dataTransfer
对象中。dragover
事件:阻止默认行为以允许放置。drop
事件:获取拖动的元素并将其添加到目标<ul>
中。<ul>
元素,避免错误地将元素放置到其他位置。通过以上步骤和代码示例,可以在不使用jQuery的情况下实现两个<ul>
元素之间的<li>
拖放功能。
没有搜到相关的沙龙