我正在嘗試使用拖放操作將圖片從一個<div>
移動到另一個。在JavaScript中捕捉拖放項目
目前,我可以將圖片移動到目的地<div>
的任何地方,但我真正想要的是當圖片掉落時,它們會一起對齊。理想情況下,他們將能夠在任何一方(不僅僅是,例如在底部或右側)對齊在一起。
我試過幾個不同的東西(包括使用<canvas>
),它沒有奏效。
這是我到目前爲止有:
var clone;
var offsetx = null;
var offsety = null;
var isClone = false;
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
offsetx = ev.target.offsetLeft - event.clientX;
offsety = ev.target.offsetTop - event.clientY;
ev.dataTransfer.setData("text", ev.target.id);
}
function dropTrash(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var remove = document.getElementById(data);
remove.parentNode.removeChild(remove);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
}
function dropClone(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var num = Math.random() * (1000 - 1) + 1;
isClone = true;
clone = document.getElementById(data).cloneNode(true);
clone.id = "newId" + num.toString();
clone.style.position = "absolute";
clone.style.left = (event.clientX+offsetx)+"px";
clone.style.top = (event.clientY+offsety)+"px";
ev.target.appendChild(clone);
} \t
html, body {
height: 100%;
padding: 0;
margin: 0;
}
div {
width: 50%;
height: 50%;
float: left;
}
#div1 {
background: #DDD;
}
#div2 {
background: #AAA;
}
#div3 {
background: #777;
}
#div4 {
background: #444;
}
#imgDiv {
width: 611px;
height: 324px;
border: 5px solid #DDD;
}
<div id="div1">
</div>
<div id="div2">
</div>
<div id="div3" ondrop="dropTrash(event)" ondragover="allowDrop(event)">
<img id="drag1" src="https://upload.wikimedia.org/wikipedia/commons/thumb/1/18/Bartagame_fcm.jpg/1200px-Bartagame_fcm.jpg" draggable="true" ondragstart="drag(event)" width="105" height="105">
<img id="drag2" src="http://www.earthtimes.org/newsimage/lizard_Ngo_Van_Tri_big_281.jpg" draggable="true" ondragstart="drag(event)" width="105" height="105"> \t
</div>
<div id="div4">
<div align="center" id="imgDiv" ondrop="dropClone(event)" ondragover="allowDrop(event)"></div>
</div>
這根本不適用於我。 :/ – Yikes
@Yikes哪部分工作不正確?你的意思是_snap together_你只是想讓圖像並排排列,而不是將它們自由地移動到任意位置? – Danziger
不,你完全理解我想要它做什麼(並感謝你花時間寫出所有這些)!無論什麼原因,當我嘗試運行這段代碼時,甚至沒有正常的下降。圖像只會反彈回原來的位置。我甚至無法測試將它們拼湊在一起的部分。 – Yikes