Ich habe diesen Code gefunden, mit dem Sie ein Element innerhalb eines bestimmten Bereichs ziehen und ablegen können. Ich kann ihn jedoch nicht umschreiben, um das Ziehen und Ablegen mehrerer Elemente zu ermöglichen, da ich nicht weiß, wie ich das Drag-Objekt vom drop_handler erhalten kann Funktions-ID.
let offsetX; let offsetY; onDragStart = function(ev) { const rect = ev.target.getBoundingClientRect(); offsetX = ev.clientX - rect.x; offsetY = ev.clientY - rect.y; }; drop_handler = function(ev) { ev.preventDefault(); const left = parseInt(id2.style.left); const top = parseInt(id2.style.top); id1.style.position = 'absolute'; id1.style.left = ev.clientX - left - offsetX + 'px'; id1.style.top = ev.clientY - top - offsetY + 'px'; id2.appendChild(document.getElementById("id1")); }; dragover_handler = function(ev) { ev.preventDefault(); ev.dataTransfer.dropEffect = "move"; };
<div id="id1" draggable="true" ondragstart="onDragStart(event)" style="border:2px solid green; cursor:pointer;width:100px;height:50px;">拖动的Div</div> <div id="id2" style="position:absolute;left:200px;top:50px;border:2px solid red; cursor:pointer;width:200px;height:200px;" ondrop="drop_handler(event)" ondragover="dragover_handler(event)">放置的Div </div>
在
onDragStart
中,“保存”dragElement
。这样你就可以在drop_handler
中使用这个变量来移动物品。我为
dropElement
添加了一个const
,因为它不会改变。