0

我目前正在为服务器端 JS 编写一个 CSS 选择器引擎(看看!)。为了打下坚实的基础,我开始使用Qwery(一个现有的选择器引擎)的测试。在那里,我发现了一些“关系优先查询”的测试。显然,CSSselect(我的项目)没有显示预期的行为,但我不确定预期的结果。

我已经搜索了文档,但找不到任何有用的东西。我当前的实现将它们解释如下:

  • >相当于:not(:root)
  • ~并且+等价于:not(:first-child)
  • 开头的空格被忽略

Qwery 的解释似乎有所不同,但有什么官方的吗?

4

2 回答 2

2

不,您可以查看http://www.w3.org/TR/CSS21/selector.htmlhttp://www.w3.org/TR/css3-selectors/ (CSS3)。

  • >:not(:root):root表示文档根目录,因此您的“相等”对于除一个元素之外的每个元素都是正确的。相反,它是[直接] 子组合子
  • ~:not(:first-child)+。主要是因为~+彼此不同,并且等价是传递性的。两者都是兄弟组合子,一个是通用的,另一个是相邻的。
  • 我猜应该忽略空格。它还能代表什么?后代组合器周围需要两个简单的选择器。您也可能对Selectors 的语法感兴趣。

当然,孩子组合器暗示孩子不是文档根,相邻组合器暗示兄弟姐妹不是第一个孩子。

于 2012-05-28T22:23:59.890 回答
1

这些“关系优先”选择器是非标准扩展,因此没有“官方”定义它们。根据您的描述> foo+ foo~ foo似乎分别相当于* > foo* + foo* ~ foo

于 2012-07-28T08:30:38.443 回答