CSS 选择器中的空格
Whitespace in CSS selectors
在选择器中 space 可以表示后代。但是,我看到spaces也可以忽略。
根据我的测试,这是我认为的意思:
- 可以在
,
和上下文字符(例如 +
和 >
)周围使用空格。
- 空格可以不用于伪class和元素字符(
:
和::
)以及属性选择器([…]
).
- 空格可以不用于class和id字符(
.
和#
)。
- "string" 中的空格很重要。
- 所有其他 space 将被忽略。这包括属性选择器内的填充。
问题是 (a) 这在官方上是正确的吗? (b) 这涵盖在哪里?
你所有的结论都是正确的。在我对 this question.
的回答中涵盖了属性选择器中关于空格的细微差别
grammar 中涵盖了关于空格可能出现或不出现的所有确切规则。出于语法的目的,您引用的 "contextual characters (such as +
and >
)" 正式称为组合器。 (术语 "contextual selector" 首次在 CSS1 中使用,但此后没有出现。)
另外请记住,分隔两个简单选择器的任意数量的连续空白字符都被视为后代组合符,这实际上是空白不在伪元素定界符周围的原因之一,"allowed",伪classes、属性选择器、class选择器和ID选择器——因为它很重要,因此它的存在改变了选择器的含义。
在选择器中 space 可以表示后代。但是,我看到spaces也可以忽略。
根据我的测试,这是我认为的意思:
- 可以在
,
和上下文字符(例如+
和>
)周围使用空格。 - 空格可以不用于伪class和元素字符(
:
和::
)以及属性选择器([…]
). - 空格可以不用于class和id字符(
.
和#
)。 - "string" 中的空格很重要。
- 所有其他 space 将被忽略。这包括属性选择器内的填充。
问题是 (a) 这在官方上是正确的吗? (b) 这涵盖在哪里?
你所有的结论都是正确的。在我对 this question.
的回答中涵盖了属性选择器中关于空格的细微差别grammar 中涵盖了关于空格可能出现或不出现的所有确切规则。出于语法的目的,您引用的 "contextual characters (such as +
and >
)" 正式称为组合器。 (术语 "contextual selector" 首次在 CSS1 中使用,但此后没有出现。)
另外请记住,分隔两个简单选择器的任意数量的连续空白字符都被视为后代组合符,这实际上是空白不在伪元素定界符周围的原因之一,"allowed",伪classes、属性选择器、class选择器和ID选择器——因为它很重要,因此它的存在改变了选择器的含义。