setDragImage
의 인수로 event.target
을 사용하지 마십시오. 여기에서 메모리 문제가 발생할 가능성이 높습니다.
언제나 사용자 지정 이미지를 추가 할 수 있으며 이미지는 투명한 PNG 일 수도 있습니다.
다음은 어떻게 진행되는지 보여줍니다.
var dragMe = document.getElementById("drag-me"),
img = new Image();
img.onload = function() {
dragMe.addEventListener("dragstart", function(e) {
e.dataTransfer.setDragImage(img, 0, 0);
}, false);
}
img.src = "http://placehold.it/150/000000/ffffff?text=GHOST";
#drag-me {
width: 100px;
height: 100px;
background-color: black;
line-height: 100px;
text-align: center;
}
#drag-me > img {
vertical-align: middle;
}
<div id="drag-me">
<img src="https://jsfiddle.net/img/logo.png" draggable="true" />
</div>
또 다른 옵션은 단지 노드 요소를 복제하고 visibility
hidden
에 설정하는 것입니다
. 그러나이 옵션을 사용하려면 복제 된 요소를 DOM에 추가해야합니다.
복제 된 노드의 예는 다음과 같습니다. 노드를 완전히 숨기고 있지 않아 어떤 일이 일어나고 있는지 확인할 수 있습니다.
var dragMe = document.getElementById("drag-me");
dragMe.addEventListener("dragstart", function(e) {
var clone = this.cloneNode(true);
clone.style.opacity = 0.1; // use opacity or
//clone.style.visibility = "hidden"; // visibility or
//clone.style.display = "none"; // display rule
document.body.appendChild(clone);
e.dataTransfer.setDragImage(clone, 0, 0);
}, false);
#drag-me {
width: 100px;
height: 100px;
background-color: black;
line-height: 100px;
text-align: center;
}
#drag-me > img {
vertical-align: middle;
}
<div id="drag-me">
<img src="https://jsfiddle.net/img/logo.png" draggable="true" />
</div>
바로 여기 내가 이미지를 드래그하기 시작 100 % 내 기억을 뛰어 코드, 그것은 그렇게 생각하고, 왜 이미지 드래그를 숨기고 싶어한다? – madalinivascu