是否存在术语相邻选择器?

Posted

技术标签:

【中文标题】是否存在术语相邻选择器?【英文标题】:Does the term adjacent selector exist? 【发布时间】:2021-05-09 10:52:21 【问题描述】:

link 中的 MDN 讨论了使用相邻的兄弟组合器,specs. 也讨论了组合器,但他们从未将由相邻组合器组合的两个选择器称为选择器。人们通常将相邻组合器的结果称为相邻选择器,这是该术语的非正式用法吗?

【问题讨论】:

从未听说过它被称为“相邻选择器”,但我听说过它被称为“相邻 sibling 选择器”。 W3Schools(与 W3C 无关)也将它们称为sibling selectors。 W3Schools 不像以前那么糟糕了,但是有更可靠的来源,比如 MDN,你已经知道了 使用组合器算作选择器吗?我确实看到其他消息来源说是的,但是规格。不要将它们归类为选择器。 @乔恩P 是的,整个事情,例如:.a + .b 算作一个选择器,由其他选择器组成:developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/… 还要进一步引用MDN,强调我的:“组合器最后一组选择器组合其他选择器以定位我们文档中的元素。以下示例选择段落是使用子组合符 (>) 的 元素的直接子元素:"
我明白了,我想我误解了规格。也是。我为规格设置的链接。导致关于选择器和组合器的部分属于它们,现在我看到了。 @乔恩P 【参考方案1】:

术语“子选择器”和“相邻兄弟选择器”是 CSS2 规范使用的旧术语,而“选择器”是一个更宽松的术语(现在仍然如此,但他们现在更一致地使用它)。它与“上下文选择器”有关,这是 CSS1 所称的使用后代组合器的选择器。 CSS2 引入了术语“组合器”来指代符号本身,但组合器本身在技术上并不是选择器,因为它们自己不会选择任何东西。相反,它们表示两个(或多个)选择器之间的关系。 MDN 在调用组合器选择器时并不真正正确,但话又说回来,这只是语义。

要回答您的问题,是的,“相邻兄弟选择器”是一个非正式术语。即使在今天,您也可以使用它,因为到目前为止它比“一对具有相邻兄弟组合子的复合选择器”更容易说。顺便说一下,Selectors 4 使用了更清晰明确的名称“next-sibling combinator”。

举个例子:

+ 是相邻的兄弟组合器(选择器 4 中的下一个兄弟组合器),并且 E + F 是一个相邻的兄弟选择器(next-sibling selector),匹配任何直接跟在E 之后的F

【讨论】:

以上是关于是否存在术语相邻选择器?的主要内容,如果未能解决你的问题,请参考以下文章

CSS系列之后代选择器子选择器和相邻兄弟选择器

CSS相邻兄弟选择器

CSS相邻兄弟选择器

在css中 比较 后代选择器和相邻选择器有啥区别 设计一个示例

包含类、子选择器和相邻兄弟选择器的 CSS 选择器的等效 XPath 是啥?

关于css的相邻兄弟选择器