这是一个有趣的CSS问题给你!
我有一个透明背景的textarea覆盖了一些TEXT,我想用它作为一种水印。文本很大,占据了textarea的大部分。它看起来不错,问题是当用户点击textarea时,它有时会选择水印文本。我希望水印文本永远不会被选中。我期待如果z-index中的某些内容较低,则无法选择,但浏览器在选择项目时似乎并不关心z-index层。是否有一种技巧或方法可以使DIV永远不可选择?
答案 0 :(得分:183)
我写了一个简单的jQuery扩展来禁用一段时间的选择:Disabling Selection in jQuery。您可以通过$('.button').disableSelection();
或者,使用CSS(跨浏览器):
.button {
user-select: none;
-moz-user-select: none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
}
答案 1 :(得分:60)
以下CSS代码几乎适用于现代浏览器:
.unselectable {
-moz-user-select: -moz-none;
-khtml-user-select: none;
-webkit-user-select: none;
-o-user-select: none;
user-select: none;
}
对于IE,您必须在html标记中使用JS或insert属性。
<div id="foo" unselectable="on" class="unselectable">...</div>
答案 2 :(得分:36)
只需添加一些对css的补充,即可更新aleemb原创的,备受推崇的答案。
我们一直在使用以下组合:
.unselectable {
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
}
我们建议添加webkit-touch条目:
http://phonegap-tips.com/articles/essential-phonegap-css-webkit-touch-callout.html
2015年4月:只需使用可能派上用场的变体更新我自己的答案。如果你需要动态地选择/不可选择DIV并且愿意使用Modernizr,那么以下工作在javascript中整齐地工作:
var userSelectProp = Modernizr.prefixed('userSelect');
var specialDiv = document.querySelector('#specialDiv');
specialDiv.style[userSelectProp] = 'none';
答案 3 :(得分:22)
正如约翰内斯已经建议的那样,背景图像可能是仅在CSS中实现这一目标的最佳方式。
JavaScript解决方案还必须影响“dragstart”才能在所有流行的浏览器中生效。
JavaScript的:
<div onselectstart="return false;" ondragstart="return false;">your text</div>
jQuery的:
var _preventDefault = function(evt) { evt.preventDefault(); };
$("div").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault);
富
答案 4 :(得分:7)
你可以试试这个:
<div onselectstart="return false">your text</div>
答案 5 :(得分:6)
textarea的简单背景图片不会足够吗?
答案 6 :(得分:6)
您可以在CSS中使用pointer-events: none;
div {
pointer-events: none;
}
答案 7 :(得分:3)
WebKit浏览器(即Google Chrome和Safari)的解决方案类似于Mozilla的-moz-user-select:none
.no-select{
-webkit-user-select: none;
cursor:not-allowed; /*makes it even more obvious*/
}
答案 8 :(得分:2)
同样在IOS中如果你想摆脱出现在触控上的灰色半透明叠加层,请添加css:
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-touch-callout: none;
答案 9 :(得分:-1)
使用
onselectstart =“return false”
它可以防止复制您的内容。
答案 10 :(得分:-1)
确保将z-index的位置显式设置为绝对或相对,以便进行选择。我有一个类似的问题,这解决了我。
答案 11 :(得分:-2)
不确定您的用例,但您可以将其设置为可拖动。