: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(),尽管它们确实支持:enabledand :disabled,并且 IE7 支持一些其他功能,例如子字符串匹配属性选择器和通用兄弟组合器,但~存在一些问题和一点点IE8更好。