有没有办法让DIV无法select?

这里有一个有趣的CSS问题给你!

我有一个透明背景textarea覆盖一些文字,我想用作一种水印。 文字很大,占据了textarea的大部分。 它看起来不错,问题是当用户点击textarea时,它有时select水印文本。 我想水印文本永远不可select。 我期待如果z-index中的东西比较低,那么它将不会被select,但是浏览器在select项目时似乎并不关心z-index图层。 有没有一个技巧或方法,使这个DIV永远不可select?

我写了一个简单的jQuery扩展来禁用一些select:在jQuery中禁用select 。 你可以通过$('.button').disableSelection();来调用它$('.button').disableSelection();

或者,使用CSS(跨浏览器):

 .button { user-select: none; -moz-user-select: none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; } 

以下CSS代码几乎适用于现代浏览器:

 .unselectable { -moz-user-select: -moz-none; -khtml-user-select: none; -webkit-user-select: none; -o-user-select: none; user-select: none; } 

对于IE,你必须使用JS或插入HTML标签的属性。

 <div id="foo" unselectable="on" class="unselectable">...</div> 

只需更新aleemb原来的,大量的解决scheme,并添加了一些CSS。

我们一直在使用下面的组合:

 .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条目的build议:
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'; 

正如约翰内斯已经提出的那样,背景图像在CSS中是最好的方法。

一个JavaScript解决scheme也将不得不影响“dragstart”在所有stream行的浏览器中都是有效的。

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); 

丰富

你可以试试这个:

 <div onselectstart="return false">your text</div> 

不会一个简单的textarea背景图片就足够了吗?

你可以使用pointer-events: none; 在你的CSS

 div { pointer-events: none; } 

WebKit浏览器(例如Google Chrome和Safari)具有与Mozilla的类似的CSS解决scheme-moz-user-select:none

 .no-select{ -webkit-user-select: none; cursor:not-allowed; /*makes it even more obvious*/ } 

另外在IOS中,如果你想摆脱出现在ontouch灰色半透明覆盖,添加CSS:

 -webkit-tap-highlight-color: rgba(0,0,0,0); -webkit-touch-callout: none; 

使用

onselectstart =“返回false”

它可以防止复制您的内容。

确保你明确地将位置设置为绝对或相对z-index来select。 我有一个类似的问题,这解决了我的问题。

不确定你的用例,但你可以使它拖曳。