拖拽时 开始:dragstart 进行中:drag 结束:dragend
进入区域:进入时:dragenter 进入后:dragover 离开:dragleave 放置:drop
思路:开始拖拽时:给事件设置e.dataTransfer.set('XXXX',e.target.id)
取消进入后和放置的默认事件 e.preventDefault()
放置时获取元素id let data = e.dataTransfer.get('XXXX')
通过元素ID获取DOM 进行添加 e.target.appendChild(document.getElementById(data))
<style>
.start {
height: 200px;
width: 150px;
background-color: pink;
}
.end {
margin: 200px auto;
height: 300px;
width: 200px;
border: 1px solid black;
}
</style>
</head>
<body>
<div class="start" draggable="true" id="123123"></div>
<div class="end"></div>
<script>
let aaa = document.getElementsByClassName('start')[0]
let end = document.getElementsByClassName('end')[0]
aaa.addEventListener('dragstart', (e) => {
e.dataTransfer.setData('DRAG_ID', e.target.id)
}, false)
end.addEventListener('dragover', (e) => {
e.preventDefault()
})
end.addEventListener('drop', (e) => {
e.preventDefault()
let data = e.dataTransfer.getData('DRAG_ID')
e.target.appendChild(document.getElementById(data))
})
// 拖动时 开始 dragstart 进行中drag 结束dragend
//进入区域 进入时 dragenter 进入后 dragover 离开 dragleave 放置 drop
</script>