У меня есть div на HTML-странице, и всякий раз, когда я нажимаю кнопку мыши и перемещаю его, он показывает, что курсор «не может опустить», как будто он что-то выбирает. Есть ли способ отключить выделение? Я пробовал CSS user-select безуспешно.
Ответы:
Запатентованные варианты user-select
будут работать в большинстве современных браузеров:
*.unselectable {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
/*
Introduced in IE 10.
See http://ie.microsoft.com/testdrive/HTML5/msUserSelect/
*/
-ms-user-select: none;
user-select: none;
}
Для IE <10 и Opera вам нужно будет использовать unselectable
атрибут элемента, который вы хотите отключить. Вы можете установить это с помощью атрибута в HTML:
<div id="foo" unselectable="on" class="unselectable">...</div>
К сожалению, это свойство не наследуется, а это означает, что вы должны поместить атрибут в начальный тег каждого элемента внутри <div>
. Если это проблема, вы можете вместо этого использовать JavaScript, чтобы сделать это рекурсивно для потомков элемента:
function makeUnselectable(node) {
if (node.nodeType == 1) {
node.setAttribute("unselectable", "on");
}
var child = node.firstChild;
while (child) {
makeUnselectable(child);
child = child.nextSibling;
}
}
makeUnselectable(document.getElementById("foo"));
-moz-none
это путь. Я поправлю свой ответ.
-moz-none
Firebug , похоже, не выполняет автозаполнение, хотя none
это: -moz-user-select: none
(работает)
user-select
имеет дело только с текстом и никакими другими элементами
Кажется, что пользовательский выбор CSS не предотвращает перетаскивание изображения ... так что ...
HTML:
<img src="ico.png" width="20" height="20" alt="" unselectable="on" /> Blabla bla blabla
CSS:
* {
user-select: none;
-khtml-user-select: none;
-o-user-select: none;
-moz-user-select: -moz-none;
-webkit-user-select: none;
}
::selection { background: transparent;color:inherit; }
::-moz-selection { background: transparent;color:inherit; }
JS:
$(function(){
$('*:[unselectable=on]').mousedown(function(event) {
event.preventDefault();
return false;
});
});
Использую cancelBubble=true
и stopPropagation()
в мышке вниз и перемещаю обработчики.
event.preventDefault()
похоже, помогает (проверено в IE7-9 и Chrome):
jQuery('#slider').on('mousedown', function (e) {
var handler, doc = jQuery(document);
e.preventDefault();
doc.on('mousemove', handler = function (e) {
e.preventDefault();
// refresh your screen here
});
doc.one('mouseup', function (e) {
doc.off('mousemove', handler);
});
});
У вас есть какое-то прозрачное изображение, которое вы выбрали? Обычно при перетаскивании изображения появляется значок «не может упасть». В противном случае он обычно выделяет текст при перетаскивании. В таком случае вам, возможно, придется поместить изображение позади всего, используя z-index.