关系优先查询

时间:2012-05-28 22:06:14

标签: javascript css css-selectors

我正在为服务器端JS(have a look编写一个CSS选择器引擎!)。为了拥有坚实的基础,我开始使用Qwery(现有的选择器引擎)的测试。在那里,我发现a number of tests用于“关系优先查询”。显然,CSSselect(我的项目)没有显示预期的行为,但我不确定预期的是什么。

我已经搜索了文档,但找不到任何有用的信息。我目前的实现解释如下:

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

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

2 个答案:

答案 0 :(得分:2)

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

  • >:not(:root):root表示文档根目录,因此对于除一个元素之外的所有元素,您的“相等”都是正确的。相反,它是[direct] child combinator
  • ~:not(:first-child)+。主要是因为~+彼此不同,等同性是可传递的。两者都是兄弟组合,一个是general,另一个是adjacent组合。
  • 我猜这个空白应该被忽略。还有什么代表? descendant combinator需要两个简单选择器。您可能也对The grammar of Selectors感兴趣。

当然,儿童组合子暗示孩子不是文件根,而相邻的组合子暗示兄弟姐妹不是第一个孩子。

答案 1 :(得分:1)

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