6

:enabled使用 CSS3 选择器的行为或浏览器支持是否存在差异not(:disabled)

我希望它们在功能上是相同的,因为它们都是 CSS3 选择器,所以浏览器支持也应该是相同的。

4

1 回答 1

9

是的,有一个区别——:not(:disabled)可以匹配既不是 :enabled也不是:disabled。这些是启用/禁用语义根本不适用的元素,例如div, p,ul等。

规范证实了这一点:

什么构成启用状态、禁用状态和用户界面元素取决于语言。在典型的文档中,大多数元素既不是:enabled也不是:disabled

有趣的是,不能说同样的话:checked——没有相应:unchecked的伪类,尽管并非所有元素都具有已检查/未检查的语义。请参阅我对这个问题的回答。

如果您使用类型选择器(例如inputselecttextarea)或类选择器来限定这些伪类,您可能不必担心这一点。尽管如此,使用它:enabled比使用:not(:disabled).

大多数 3 级伪类的浏览器支持确实是相同的——没有已知的浏览器支持:enabled:disabled仅支持其中一个。但是,根据 MDN,看起来 Opera 9.0 和 Safari 3.1不支持:not(),尽管它们确实支持:enabledand :disabled,并且 IE7 支持一些其他功能,例如子字符串匹配属性选择器和通用兄弟组合器,但~存在一些问题和一点点IE8更好。

于 2015-09-30T09:08:15.083 回答