IE 11 - 用户选择覆盖值未应用于子元素

时间:2015-02-06 19:44:31

标签: html css internet-explorer

对于任务,产品所有者希望禁用通过Ctrl-A突出显示的大多数HTML元素。我这样做的方法是设置

body {
  -{$prefix}-user-select: none;
  user-select: none;
}

div.element-to-select {
  -{$prefix}-user-select: all;
  user-select: all;
}

我还在http://codepen.io/daredevil82/pen/zxPzbJ编写了一个代码表来进行演示。在此示例中,当鼠标焦点位于白色区域时,Ctrl-A按下将突出显示选择文本,但无选择文本将保持未突出显示在Firefox 35+和Chrome中,但在IE 11中不会选择这两个元素。

IE有这种行为吗?

1 个答案:

答案 0 :(得分:3)

CSS3的工作草稿用户界面定义user-select,如下所示:

  

此属性不是继承的,但确实会影响到的   与display: none相同,它限制了它。那是一个元素   是user-select: noneuser-select值无关紧要   是它的孩子,元素的内容或它的儿童内容   无法选择。

根据该草案,Firefox实施了-moz-user-select: none;并且还实现了-moz-user-select: -moz-none,允许使用-moz-user-select: text在子元素上重新启用选择。

但是,从Firefox 21开始,由于Bug 816298-moz-user-select: none的行为与-moz-user-select: -moz-none类似:

  

我们的-moz-user-select: none的行为与css3-userint TR中的建议相同   但是WebKit,IE和Opera的-XXX-user-select: none表现得像   -moz-user-select: -moz-none

不确定错误是否错误,IE也遵循提议的规范,或者IE是否稍后改变了行为。但现在IE似乎是唯一跟随它的主要浏览器。

但是,你不能依赖那个草案。 CSS3模块的用户界面已被CSS Basic User Interface Module Level 3 (CSS3 UI)取代,但不包括user-select

因此,由于user-select不再是标准,因此实现者可能不会更改其实现,以便在不同的浏览器之间具有共同的行为。