У событий есть переменные, которые вы можете использовать.
В этом примере я использую x и y и позиционирую изображение с абсолютной позицией с помощью этой строки кода
nodeCopy.setAttribute("style", "position:absolute; left:"+ ev.x +"px;top:"+ ev.y+"px");
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
var nodeCopy = document.getElementById(data);
if (nodeCopy.classList.contains('insideBox')){
nodeCopy.setAttribute("style", "position:absolute; left:"+ ev.x +"px;top:"+ ev.y+"px;transform:translate(-"+nodeCopy.width/2+"px,-"+nodeCopy.height/2+"px)");
}
else{
nodeCopy=nodeCopy.cloneNode(true)
nodeCopy.classList.add("insideBox");
nodeCopy.id = "newId"+Math.random(100);
nodeCopy.setAttribute("style", "position:absolute; left:"+ ev.x +"px;top:"+ ev.y+"px;transform:translate(-"+nodeCopy.width/2+"px,-"+nodeCopy.height/2+"px)");
ev.target.appendChild(nodeCopy);
}
}
*{
margin:0;
padding:0;
}
.box {
display: block;
height: 300px;
width: 300px;
background-color: red;
}