:enabled
使用 CSS3 选择器的行为或浏览器支持是否存在差异not(:disabled)
?
我希望它们在功能上是相同的,因为它们都是 CSS3 选择器,所以浏览器支持也应该是相同的。
:enabled
使用 CSS3 选择器的行为或浏览器支持是否存在差异not(:disabled)
?
我希望它们在功能上是相同的,因为它们都是 CSS3 选择器,所以浏览器支持也应该是相同的。
是的,有一个区别——:not(:disabled)
可以匹配既不是 :enabled
也不是:disabled
。这些是启用/禁用语义根本不适用的元素,例如div
, p
,ul
等。
规范证实了这一点:
什么构成启用状态、禁用状态和用户界面元素取决于语言。在典型的文档中,大多数元素既不是
:enabled
也不是:disabled
。
有趣的是,不能说同样的话:checked
——没有相应:unchecked
的伪类,尽管并非所有元素都具有已检查/未检查的语义。请参阅我对这个问题的回答。
如果您使用类型选择器(例如input
,select
或textarea
)或类选择器来限定这些伪类,您可能不必担心这一点。尽管如此,使用它:enabled
比使用:not(:disabled)
.
大多数 3 级伪类的浏览器支持确实是相同的——没有已知的浏览器支持:enabled
或:disabled
仅支持其中一个。但是,根据 MDN,看起来 Opera 9.0 和 Safari 3.1不支持:not()
,尽管它们确实支持:enabled
and :disabled
,并且 IE7 支持一些其他功能,例如子字符串匹配属性选择器和通用兄弟组合器,但~
存在一些问题和一点点IE8更好。