此页面 已准备就绪

注意: WebPlatform 项目在 2012 年至 2015 年间由多个维护者支持,现已停止维护。该网站现在可在 github 上找到。

CSS 选择器

摘要

选择器代表一种结构。这种结构可以用作条件(例如,在 CSS 规则中),以确定选择器在文档树中匹配哪些元素,或者作为对应于该结构的 HTML 或 XML 片段的平面描述。

选择器范围可以从简单的元素名称到丰富的上下文表示。

CSS 选择器参考

类型选择器

通用选择器

属性选择器

类选择器

ID 选择器

伪类

动态伪类

目标伪类

语言伪类

UI 元素状态伪类

结构伪类

否定伪类

伪元素

组合器

后代组合器

子组合器

相邻兄弟组合器

通用兄弟组合器

大小写敏感性

所有选择器语法在 ASCII 范围内(即 [a-z] 和 [A-Z] 等效)不区分大小写,但选择器不受控制的部分除外。选择器中文档语言元素名称、属性名称和属性值的区分大小写取决于文档语言。例如,在 HTML 中,元素名称不区分大小写,但在 XML 中,它们区分大小写。命名空间前缀的大小写敏感性在 CSS3NAMESPACE 中定义。

选择器语法

选择器是简单选择器的一个或多个序列,由组合器分隔。伪元素可以附加到选择器中最后一个简单选择器序列的末尾。简单选择器的序列是未由组合器分隔的简单选择器的链。它始终以类型选择器或通用选择器开头。序列中不允许其他类型选择器或通用选择器。

简单选择器可以是类型选择器、通用选择器、属性选择器、类选择器、ID 选择器或伪类。

组合器是:空格、“大于号” (U+003E, >)、“加号” (U+002B, +) 和 “波浪线” (U+007E, ~)。空格可以出现在组合器及其周围的简单选择器之间。只有字符“空格” (U+0020)、“制表符” (U+0009)、“换行符” (U+000A)、“回车符” (U+000D) 和 “换页符” (U+000C) 可以出现在空格中。其他类似空格的字符,例如“em-space” (U+2003) 和 “表意文字空格” (U+3000),绝不属于空格。

文档树中由选择器表示的元素是选择器的主体。由单个简单选择器序列组成的选择器表示满足其要求的任何元素。将另一个简单选择器序列和组合器前置到序列会施加额外的匹配约束,因此选择器的主体始终是最后一个简单选择器序列所表示的元素的子集。

空选择器,不包含任何简单选择器序列和伪元素,是一个无效的选择器。选择器中的字符可以使用与 CSS 相同的转义规则进行转义。CSS21

某些选择器支持命名空间前缀。使用命名空间前缀的机制应由使用选择器的语言指定。如果该语言未指定命名空间前缀声明机制,则不声明任何前缀。在 CSS 中,命名空间前缀使用 @namespace 规则声明。CSS3NAMESPACE

选择器组

逗号分隔的选择器列表表示列表中每个单独选择器选择的所有元素的并集。(逗号是 U+002C。)例如,在 CSS 中,当多个选择器共享相同的声明时,可以将它们组合成逗号分隔的列表。逗号之前和/或之后可以出现空格。

在本例中,我们将具有相同声明的三个规则合并为一个。

h1 { font-family: sans-serif }
h2 { font-family: sans-serif }
h3 { font-family: sans-serif }

等效于

h1, h2, h3 { font-family: sans-serif }

警告:在本例中等效性成立,因为所有选择器都是有效选择器。如果这些选择器中只有一个无效,则整个选择器组将无效。这将使所有三个标题元素的规则失效,而在后一种情况下,只有三个单独标题规则中的一个会失效。

无效 CSS 示例

h1 { font-family: sans-serif }
h2..foo { font-family: sans-serif }
h3 { font-family: sans-serif }

不等效于

h1, h2..foo, h3 { font-family: sans-serif }

因为上面的选择器 (h1, h2…foo, h3) 整个无效,并且整个样式规则都会被丢弃。(当选择器未分组时,只有 h2…foo 的规则会被丢弃。)

参见

Related topics

选择器列表

[css/selectors/-ms-scrollbar-shadow-color](/css/selectors/-ms-scrollbar-shadow-color) [css/selectors/ID](/css/selectors/ID) [css/selectors/Namespaced](/css/selectors/Namespaced)
[css/selectors/Type](/css/selectors/Type) [css/selectors/Universal](/css/selectors/Universal) [css/selectors/attribute selector](/css/selectors/attribute_selector)
[css/selectors/attributes/equality](/css/selectors/attributes/equality) [css/selectors/attributes/existence](/css/selectors/attributes/existence) [css/selectors/attributes/hyphen](/css/selectors/attributes/hyphen)
[css/selectors/attributes/prefix](/css/selectors/attributes/prefix) [css/selectors/attributes/substring](/css/selectors/attributes/substring) [css/selectors/attributes/suffix](/css/selectors/attributes/suffix)
[css/selectors/attributes/whitespace](/css/selectors/attributes/whitespace) [css/selectors/border-image](/css/selectors/border-image) [css/selectors/class](/css/selectors/class)
[css/selectors/class selector](/css/selectors/class_selector) [css/selectors/combinators/adjacent sibling](/css/selectors/combinators/adjacent_sibling) [css/selectors/combinators/child](/css/selectors/combinators/child)
[css/selectors/combinators/descendant](/css/selectors/combinators/descendant) [css/selectors/combinators/general sibling](/css/selectors/combinators/general_sibling) [css/selectors/cursor](/css/selectors/cursor)
[css/selectors/id selector](/css/selectors/id_selector) [css/selectors/outline](/css/selectors/outline) [css/selectors/outline-color](/css/selectors/outline-color)
[css/selectors/outline-style](/css/selectors/outline-style) [css/selectors/outline-width](/css/selectors/outline-width) [css/selectors/pseudo-classes](/css/selectors/pseudo-classes)
[css/selectors/pseudo-classes/:-ms-input-placeholder](/css/selectors/pseudo-classes/:-ms-input-placeholder) [css/selectors/pseudo-classes/:active](/css/selectors/pseudo-classes/:active) [css/selectors/pseudo-classes/:checked](/css/selectors/pseudo-classes/:checked)
[css/selectors/pseudo-classes/:disabled](/css/selectors/pseudo-classes/:disabled) [css/selectors/pseudo-classes/:empty](/css/selectors/pseudo-classes/:empty) [css/selectors/pseudo-classes/:enabled](/css/selectors/pseudo-classes/:enabled)
[css/selectors/pseudo-classes/:first-child](/css/selectors/pseudo-classes/:first-child) [css/selectors/pseudo-classes/:first-of-type](/css/selectors/pseudo-classes/:first-of-type) [css/selectors/pseudo-classes/:focus](/css/selectors/pseudo-classes/:focus)
[css/selectors/pseudo-classes/:hover](/css/selectors/pseudo-classes/:hover) [css/selectors/pseudo-classes/:in-range](/css/selectors/pseudo-classes/:in-range) [css/selectors/pseudo-classes/:indeterminate](/css/selectors/pseudo-classes/:indeterminate)
[css/selectors/pseudo-classes/:invalid](/css/selectors/pseudo-classes/:invalid) [css/selectors/pseudo-classes/:lang(c)](/css/selectors/pseudo-classes/:lang(c)) [css/selectors/pseudo-classes/:last-child](/css/selectors/pseudo-classes/:last-child)
[css/selectors/pseudo-classes/:last-of-type](/css/selectors/pseudo-classes/:last-of-type) [css/selectors/pseudo-classes/:link](/css/selectors/pseudo-classes/:link) [css/selectors/pseudo-classes/:not](/css/selectors/pseudo-classes/:not)
[css/selectors/pseudo-classes/:nth-child(n)](/css/selectors/pseudo-classes/:nth-child(n)) [css/selectors/pseudo-classes/:nth-last-child(n)](/css/selectors/pseudo-classes/:nth-last-child(n)) [css/selectors/pseudo-classes/:nth-last-of-type(n)](/css/selectors/pseudo-classes/:nth-last-of-type(n))
[css/selectors/pseudo-classes/:nth-of-type(n)](/css/selectors/pseudo-classes/:nth-of-type(n)) [css/selectors/pseudo-classes/:only-child](/css/selectors/pseudo-classes/:only-child) [css/selectors/pseudo-classes/:only-of-type](/css/selectors/pseudo-classes/:only-of-type)
[css/selectors/pseudo-classes/:optional](/css/selectors/pseudo-classes/:optional) [css/selectors/pseudo-classes/:required](/css/selectors/pseudo-classes/:required) [css/selectors/pseudo-classes/:root](/css/selectors/pseudo-classes/:root)
[css/selectors/pseudo-classes/:target](/css/selectors/pseudo-classes/:target) [css/selectors/pseudo-classes/:valid](/css/selectors/pseudo-classes/:valid) [css/selectors/pseudo-classes/:visited](/css/selectors/pseudo-classes/:visited)
[css/selectors/pseudo-classes/Dynamic pseudo-classes](/css/selectors/pseudo-classes/Dynamic_pseudo-classes) [css/selectors/pseudo-classes/Structural pseudo-classes](/css/selectors/pseudo-classes/Structural_pseudo-classes) [css/selectors/pseudo-classes/ui element states pseudo-classes](/css/selectors/pseudo-classes/ui_element_states_pseudo-classes)
[css/selectors/pseudo-elements](/css/selectors/pseudo-elements) [css/selectors/pseudo-elements/::after](/css/selectors/pseudo-elements/::after) [css/selectors/pseudo-elements/::before](/css/selectors/pseudo-elements/::before)
[css/selectors/pseudo-elements/::first-letter](/css/selectors/pseudo-elements/::first-letter) [css/selectors/pseudo-elements/::first-line](/css/selectors/pseudo-elements/::first-line) [css/selectors/pseudo-elements/::region](/css/selectors/pseudo-elements/::region)
[css/selectors/pseudo-elements/::selection](/css/selectors/pseudo-elements/::selection) [css/selectors/type](/css/selectors/type) [css/selectors/universal selector](/css/selectors/universal_selector)
[css/selectors/user-select](/css/selectors/user-select) [css/selectors/zoom](/css/selectors/zoom)
## 相关规范
选择器 Level 3
推荐