无效的CSS选择器导致规则被删除:理由是什么?

时间:2012-12-11 08:58:26

标签: css css-selectors w3c

我正在寻找更多关于邮件列表讨论等的链接,而不是猜测。

任何人都可以帮助我找出CSS Selectors Level 3规范中引用的错误处理规则背后的基本原理。

  

用户代理必须遵守处理解析错误的规则:

     
      
  • 包含未声明的命名空间前缀的简单选择器无效
  •   
  • 包含无效简单选择器,无效组合符或无效标记的选择器无效。
  •   
  • 包含无效选择器的一组选择器无效。
  •   
     

规范重用选择器必须定义如何处理解析错误。 (对于CSS,将删除使用选择器的整个规则。)

我有以下规则:

#menu li.last, #menu li:last-child {
  ...
}

为了弥补IE8缺乏最后一个孩子的支持,我使用了一个类和一个JavaScript垫片。但是,这不起作用,因为IE8符合错误处理的CSS规范,并丢弃整个规则,因为它无法识别一个选择器。这可以通过将两个选择器分成单独的规则来解决。

为什么这是可取的?为什么规范建议不要简单地丢弃无法识别的选择器,而是保留规则的其余部分?

我想知道其基本原理,因为这些规则目前看似违反直觉。

0 个答案:

没有答案