Есть ли способ запретить пользователю видеть призрак изображения, которое он пытается перетащить (не забота о безопасности изображений, а опыт).
Я попробовал это, что устраняет проблему с синим выделением текста и изображений, но не с призрачным изображением:
img {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
(Я также попытался вложить изображение в div с теми же правилами, что и для div). Спасибо
javascript
html
css
user885355
источник
источник
Ответы:
Вы можете установить
draggable
атрибутfalse
в разметку или код JavaScript.источник
<img id="myImage" src="http://placehold.it/150x150" draggable="false">
-moz-user-select: none
. Возможное решение: допpointer-events: none
.draggable
дляfalse
полностью отключить перетащить & падение.Я думаю, что вы можете изменить свой
в
источник
Попытайся:
и стараться избегать
источник
Вы можете использовать свойство CSS для отключения изображений в браузерах webkit.
источник
-ms-user-drag
,-moz-user-drag
иuser-drag
. Отличное решение только для CSS!Это отключит перетаскивание изображения во всех браузерах , сохраняя при этом другие события, такие как щелчок и наведение. Работает до тех пор, пока доступны любой из HTML5, JS или CSS.
<img draggable="false" onmousedown="return false" style="user-drag: none" />
Если вы уверены, что у пользователя будет JS, вам нужно всего лишь использовать атрибут JS и т. Д. Для большей гибкости посмотрите на ondragstart, onselectstart и некоторые CSS для WebKit.
источник
onmousedown="return false"
достаточно. Также необходимо избегать выбора пользователем изображения при его перетаскивании, что позволит им перетаскивать выделение.Обработка
dragstart
события иreturn false
.источник
Вы можете назначить альтернативное изображение-призрак, если вам действительно нужно использовать события перетаскивания и вы не можете установить draggable = false. Так что просто присвойте пустой png вот так:
источник
setDragImage
, даже если они поддерживают перетаскивание, например, IE10 / 11.dragIcon.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
Поместите изображение в качестве фона пустого элемента или под прозрачным элементом. Когда пользователь нажимает на изображение, чтобы перетащить, они нажимают на div.
См. Http://www.flickr.com/photos/thefella/5878724253/?f=hp
источник
Для Firefox вам нужно пойти немного глубже с этим:
Наслаждаться.
источник
Я обнаружил, что для IE вы должны добавить атрибут draggable = "false" к изображениям и привязкам, чтобы предотвратить перетаскивание. Параметры CSS работают для всех других браузеров. Я сделал это в JQuery:
источник
Здесь гораздо более простое решение, чем добавление пустых слушателей событий. Просто установите
pointer-events: none
свое изображение. Если вам все еще нужно, чтобы он был кликабельным, добавьте вокруг него контейнер, который запускает событие.источник
источник
Протестировано на Firefox: удаление и возврат изображения работает! И это прозрачно при исполнении тоже. Например,
РЕДАКТИРОВАТЬ : Это работает только на IE и Firefox, как ни странно. Я также добавил
draggable = false
на каждом изображении. Все еще призрак с Chrome и Safari.РЕДАКТИРОВАТЬ 2 : решение для фонового изображения является действительно лучшим. Единственная тонкость в том, что
background-size
свойство должно быть переопределено при каждом изменении фонового изображения! Или так, как это выглядело с моей стороны. Более того, у меня была проблема с обычнымиimg
тегами под IE, когда IE не удалось изменить размер изображений. Теперь изображения имеют правильные размеры. Просто:Также, возможно, рассмотрим те, которые:
источник
Вы можете установить изображение, которое отображается при перетаскивании элемента. Протестировано с Chrome.
setDragImage
использование
В качестве альтернативы, как уже упоминалось в ответах, вы можете установить
draggable="false"
элемент HTML, если не существует возможности перетаскивания элемента вообще.источник
Be-all-end-all, без выбора или перетаскивания, со всеми префиксами браузера:
Вы также можете установить
draggable
атрибут наfalse
. Вы можете сделать это с помощью встроенного HTML:,draggable="false"
с помощью Javascript:elm.draggable = false
или с помощью jQuery:elm.attr('draggable', false)
.Вы также можете обращаться с
onmousedown
функцией кreturn false
. Вы можете сделать это с помощью встроенного HTML:,onmousedown="return false"
с помощью Javascript:elm.onmousedown=()=>return false;
или с помощью jQuery:elm.mousedown(()=>return false)
источник
Эта работа для меня, я использую некоторые скрипты лайтбокса
источник