拖動圖像時如何去除重影?我們試過代碼,它在Firefox和chrome上可以用,但在Safari上不行。請任何人幫助我的代碼是什么錯誤。 https://jsfiddle.net/rajamsr/Lfuq5qb6/
document.addEventListener("dragstart", function( event ) {
dragged = event.target;
event.dataTransfer.setDragImage(dragged, 11111110, 10);
}, false);
# # #您可以通過顯示空白/透明圖像來防止顯示重影預覽:
document.addEventListener("dragstart", function( event ) {
var img = new Image();
img.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAUEBAAAACwAAAAAAQABAAACAkQBADs=';
event.dataTransfer.setDragImage(img, 0, 0);
}, false);
# # #不要使用event.target作為setDragImage的參數,這可能會導致此處的內存問題。
您可以隨時添加自定義圖像,該圖像也可以是透明的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>
# # #您可以只使用event.target并使用窗口的outerWidth和outerHeight定位它
document.addEventListener("dragstart", function( event ) {
event.dataTransfer.setDragImage(event.target, window.outerWidth, window.outerHeight);
}, false);
###JSfiddle不再打開,所以我不明白上下文,但在Chrome中對我有效
const canvas = document.createElement('canvas');
event.dataTransfer.setDragImage(canvas, 0, 0);
canvas.remove();
# # #您的代碼導致了內存問題。
相反,使用css來阻止用戶的拖動/選擇,這在大多數瀏覽器中都有效,但在firefox中似乎有一個錯誤,它不起作用,所以添加ondragstart = " return false"要解決這個問題,請參見https://jsfiddle.net/Lfuq5qb6/1/
<img class="normal-logo hidden-xs" src="..." alt="logo" ondragstart="return false;"/>
img{
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
}
# # #在此輸入鏈接描述
# # #可以將img draggable屬性設置為false。
<img id="" src="..." draggable="false">
要禁用圖像選擇,您可以使用
<style>
img{
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
}
</style>