选择器的部分和部分的正确术语和单词

时间:2012-03-24 02:12:48

标签: css css-selectors terminology

以逗号分隔的CSS选择器部分的正确用语是什么?

    body.foo .login , body.bar .login { ... }
/*                  |
           Part 1   |  Part 2         */

在这些部分中,由组合器分隔的部分(空格,+>等)的术语是什么?

    body.foo .login , ... { ... }
/*          |
   Part 1   |   Part 2    */

3 个答案:

答案 0 :(得分:11)

  

以逗号分隔的CSS选择器部分的正确用语是什么?

目前,这些只是简称为选择器,这对我来说并不合适。 In future,他们会更好地定义为复杂选择器

整个以逗号分隔的列表称为选择列表或组。

  

在这些部分中,由组合器分隔的部分(空格,+>等)的术语是什么?

目前,这些被称为简单选择器序列。将来,它们将被称为复合选择器

因此,选择器列表由一个或多个由逗号分隔的复杂选择器组成,每个复杂选择器由两个主要部分组成:复合选择器和组合器。它还可以选择包含伪元素。


因为我在这里,所以其余的定义......

Selectors level 3总结如下:

  • 简单选择器是选择器的一个基本组件。它是以下任何一种:

  • 组合子是选择器的另一个基本组件。它是一个符号或标记,用于分隔两个化合物选择器,在两个化合物选择器所代表的两个元素之间建立关系。目前有四种组合器在使用:

    • 后裔组合子:

      article p
      
    • 儿童组合子:

      /* 
       * The extra spaces in between are whitespace,
       * and are therefore insignificant.
       */
      ul > li
      
    • 相邻兄弟组合子:

      header + section
      
    • 一般同胞组合子:

      h2 ~ p
      

    以后的规范中可能会引入更多的组合器。

  • 简单选择器序列是一组未被组合子分隔的简单选择器:

    a:not([rel="external"]):hover
    
  • 选择器(我讨厌这个定义)是由组合器链接的选择器序列组成的完整字符串:

    nav[role="main"] > ul:first-child > li
    

Selectors level 4重新定义了一些术语,因此使事情变得模糊不清,不那么笨拙:

  • 一系列简单选择器现在称为复合选择器

  • 名称复杂选择器现在被赋予"选择器"的CSS3定义。 (即一串复合选择器和组合器)。

  • 一组一个或多个复合/复合选择器现在正式称为选择器列表。这个术语本身目前没有区别,我不会很快看到这种变化。

    但是,如果您阅读某些功能伪类的语法,它将描述他们正在寻找的选择器列表类型。例如,enhanced :not() pseudo-class接受复合选择器列表,而原始版本只允许一个简单选择器作为其参数。

  • 术语选择器已经一般化,因此为了简单和简洁起见,它现在可以引用以下任何

    • 简单选择器
    • 复合选择器
    • 复杂选择器
    • 选择列表(例如"选择器"样式规则的组件)

一些个人笔记:

  • 术语"键选择器"由浏览器供应商创造,用于选择器实现,并不是一个官方术语。它通常用于表示选择者的主题"但是,因为实现碰巧使用选择器的主题作为确定匹配的关键。

  • 术语"伪选择器" Web作者创造的混合伪类和伪元素,并不是一个官方的,或确实有意义的术语。虽然你可以在一些早期的W3C CSS2 / 3草案中找到它,但这可能是一个错误。 Please don't use this term,因为它试图将两个完全不同的概念组合成一个总括性术语,从而造成混乱。

  • 伪元素(::pseudo-element)不是简单的选择器,因此不能出现在只能匹配实际元素的地方。但是,它们仍然被认为是用于CSS解析的选择器。

  • CSS中的典型样式规则(或规则集)包含选择器声明块

  • 命名空间前缀本身不是选择器,但它们可以应用于类型选择器,通用选择器和属性选择器,以匹配文档中(或不是)命名空间的组件。

    < / LI>
  • 选择器的specificity目前仅指单个复杂选择器的{{3}}。匹配规则时,列表中与给定元素匹配的任何复杂选择器都将被考虑用于特异性计算。如果多个复杂选择器与元素匹配,则最具体的选择器将用于计算。

    一些4级选择器的特异性将是一个更复杂的问题,特别是:nth-match():nth-last-match()。由于它们仍在被推测,因此还没有决定如何实施这些措施。

答案 1 :(得分:4)

specification提供了以下术语:

  

选择器是由组合子分隔的一个或多个简单选择器序列的链。一个伪元素可以附加到选择器中的最后一个简单选择器序列。

     

一系列简单的选择器是一系列简单的选择器,它们没有被组合器分开。它始终以类型选择器或通用选择器开头。序列中不允许使用其他类型选择器或通用选择器。

     

简单的选择器是类型选择器,通用选择器,属性选择器,类选择器,ID选择器或伪类。

     

组合符是:空格,“大于号”(U + 003E,&gt;),“加号”(U + 002B,+)和“波浪号”(U + 007E,〜)。组合器与其周围的简单选择器之间可能出现空白区域。只有字符“空格”(U + 0020),“标签”(U + 0009),“换行”(U + 000A),“回车”(U + 000D)和“换页”(U + 000C) )可以在空白区域内发生。其他类似空格的字符,例如“em-space”(U + 2003)和“表意空间”(U + 3000),从不是空白的一部分。

CSS 2和3之间存在一些小的术语差异

  

基本定义列表(选择器,选择器组,简单选择器等)已更改;特别是,CSS2中作为简单选择器引用的内容现在称为简单选择器序列,术语“简单选择器”现在用于此序列的组件

答案 2 :(得分:1)

用逗号分隔的部分称为选择器。

在选择器中我们有simple_selectors和combinators。

请参阅the grammar