HTMLページにdivがあり、マウスを押して移動すると、何かを選択するようにカーソルを「ドロップできない」と表示されます。選択を無効にする方法はありますか?CSSユーザー選択を試しましたが、何も成功しませんでした。
回答:
の独自のバリエーションは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を使用してすべての背後に画像を配置する必要があるかもしれません。