Javascript 关系优先查询
我目前正在为服务器端JS(!)编写CSS选择器引擎。为了有一个坚实的基础,我开始使用(现有的选择器引擎)的测试。在那里,我找到了“关系优先查询”的。显然,CSSselect(我的项目)没有显示预期的行为,但我不确定预期的是什么 我已经搜索了文档,但找不到任何有用的东西。我当前的实现对它们的解释如下:Javascript 关系优先查询,javascript,css,css-selectors,Javascript,Css,Css Selectors,我目前正在为服务器端JS(!)编写CSS选择器引擎。为了有一个坚实的基础,我开始使用(现有的选择器引擎)的测试。在那里,我找到了“关系优先查询”的。显然,CSSselect(我的项目)没有显示预期的行为,但我不确定预期的是什么 我已经搜索了文档,但找不到任何有用的东西。我当前的实现对它们的解释如下: 相当于:not(:root) ~和+等同于:不是(:第一个孩子) 忽略开头的空白 QWERY的解释似乎不同,但有什么官方的吗?没有。你可以看看和(CSS3) ≠ :非(:根):root表示文档
相当于:not(:root)
和~
等同于+
:不是(:第一个孩子)
- 忽略开头的空白
QWERY的解释似乎不同,但有什么官方的吗?没有。你可以看看和(CSS3)
≠ <代码>:非(:根)<代码>:root表示文档根,因此除了一个元素外,您的“equal”将为真。相反,这是最重要的
≠ <代码>:不是(:第一个孩子)≠ <代码>+。主要是因为~
和~
彼此不同,等价是可传递的。两个都是兄弟组合,一个为一,另一个为一+
- 我想应该忽略空白。它还能代表什么?在它周围需要两个简单的选择器。你也可能会对这个问题感兴趣
当然,子组合符暗示子文档不是文档根,相邻的组合符暗示兄弟姐妹不是第一个子文档。否。您可以查看and(CSS3)
≠ <代码>:非(:根)<代码>:root表示文档根,因此除了一个元素外,您的“equal”将为真。相反,这是最重要的
≠ <代码>:不是(:第一个孩子)≠ <代码>+。主要是因为~
和~
彼此不同,等价是可传递的。两个都是兄弟组合,一个为一,另一个为一+
- 我想应该忽略空白。它还能代表什么?在它周围需要两个简单的选择器。你也可能会对这个问题感兴趣
当然,子组合符暗示子节点不是文档根节点,相邻组合符暗示兄弟节点不是第一个子节点。这些“关系优先”选择器是非标准扩展,因此没有任何“官方”定义它们。根据您的描述,
>foo
,+foo
和~foo
似乎分别等同于*>foo
,*+foo
和*~foo
。这些“关系优先”选择器是非标准扩展,因此没有任何“官方”定义它们。从你的描述来看,>foo
,+foo
和~foo
似乎分别等同于*>foo
,*+foo
和*~foo
。你所说的
是什么意思?一个是组合符,另一个是伪类。>tag
相当于tag:not(:root)
此外,您的引擎还包括许多jQuery扩展:has()
和:selected
也是jQuery扩展,不是CSS的一部分。但这与本例无关。我还致力于支持Sizzle测试,而不是删除大多数测试,我希望功能尽可能完整。您所说的
等同于:而不是(:root)
是什么意思?一个是组合符,另一个是伪类。>tag
相当于tag:not(:root)
此外,您的引擎还包括许多jQuery扩展:has()
和:selected
也是jQuery扩展,不是CSS的一部分。但这与本例无关。我还致力于支持Sizzle测试,而不是删除大多数测试,我希望功能尽可能完整。“后代组合器需要两个简单的选择器。”或者更确切地说,两个复合选择器。但这是未来的定义……语法是我一直在寻找的。谢谢@哦,对了。正确地引用当前语句:“…是分隔两个简单选择器序列的空格。”“后代组合器需要两个简单选择器围绕它。”或者更确切地说,是两个复合选择器。但这是未来的定义……语法是我一直在寻找的。谢谢@哦,对了。正确地引用当前语句:“……是分隔两个简单选择器序列的空白。”我最近发现,似乎正在采用这些扩展,称它们为“相对选择器”,用于find()
和findAll()
。这将变得非常有趣。@BoltClock,显然它们的意思与:scope
是预先指定的,并且仅在某些上下文中(当存在范围时)才被接受。我最近发现,似乎正在采用这些扩展,称它们为“相对选择器”,用于find()
和findAll()
。这将变得非常有趣。@BoltClock,显然它们的意思与:scope
是预先指定的一样,并且只在某些上下文中被接受(当存在范围时)