问题:
CSS 选择器级别 3 规范要求包含无效选择器的规则被丢弃。为什么这是必要的,而不是简单地删除无法识别的选择器并保留规则集?
基本原理:
根据 CSS2.1 规范:
即使选择器的其余部分在 CSS 2.1 中看起来可能很合理,但整个语句应该是如果选择器中的任何地方出现错误,则忽略,因为不知道逗号在 CSS 的未来更新中是否会获得其他含义。CSS 选择器级别 4 规范引入了功能伪类接受选择器组作为参数,例如 :not()。这可能会导致解析中出现歧义,从而使实现很难在不造成潜在布局中断的情况下准确处理无效选择器。
此外:
- 解析错误可能会在多个点发生,从而使其不确定在哪里结束无效的选择器、选择器列表或声明块。
- 规范没有区分无法识别的和无法识别的格式错误的选择器,简化了错误处理。
- 某些布局引擎的行为有所不同,例如 WebKit 会忽略带有前缀的无法识别的选择器并应用自己的选择器。
- 更改此行为可能会破坏依赖它的现有网站选择器黑客和过滤。
因此,忽略无效选择器的规则可以保持一致性在错误处理中,确保向前兼容性,并防止潜在的布局问题。
以上是为什么带有无效选择器的 CSS 规则会被丢弃,而不是仅仅删除无效部分?的详细内容。更多信息请关注PHP中文网其他相关文章!