CSS 伪元素模块第 4 级

W3C 工作草案

关于此文档的更多细节
此版本
https://w3org.cn/TR/2025/WD-css-pseudo-4-20250627/
最新发布版本
https://w3org.cn/TR/css-pseudo-4/
编辑草案
https://drafts.csswg.org/css-pseudo-4/
历史版本
历史
https://w3org.cn/standards/history/css-pseudo-4/
反馈
CSS 工作组问题仓库
文档内联
编辑
Elika J. Etemad / fantasai (Apple)
(Adobe Systems Inc.)
前任编辑
Daniel Glazman (Disruptive Innovations)
建议编辑此规范
GitHub 编辑器
问题列表
在编辑草案中追踪
测试套件
https://wpt.fyi/results/css/css-pseudo/

摘要

本 CSS 模块定义了伪元素,即代表 CSS 渲染树中可被选择和设置样式的部分的抽象元素。

CSS 是一种用于描述结构化文档(如 HTML 和 XML)在屏幕、纸张等介质上渲染方式的语言。

关于本文档

本节描述了本文档发布时的状态。当前的 W3C 出版物列表以及本技术报告的最新修订版,可在 W3C 标准和草案索引(https://w3org.cn/TR/)中找到。

本文档由 CSS 工作组推荐标准轨道发布为工作草案。作为工作草案发布并不意味着 W3C 及其成员的背书。

这是一份草案文档,可能会随时被其他文档更新、替换或废弃。将其作为非进行中工作引用是不恰当的。

请通过 在 GitHub 中提交 issue 发送反馈(推荐),标题中请包含规范代码“css-pseudo”,例如:“[css-pseudo] …评论摘要…”。所有 issue 和评论都会被 存档。此外,也可以将反馈发送至(已 存档 的)公共邮件列表 www-style@w3.org

本文档受 2023 年 11 月 3 日版 W3C 流程文档管辖。

本文档由在一个受 W3C 专利政策约束下运作的团体编写。W3C 维护着一份与该团体交付成果相关的专利披露公开列表;该页面还包含了披露专利的说明。任何知晓其认为包含 必要权利要求 (Essential Claim(s)) 的个人,必须根据 W3C 专利政策第 6 节披露相关信息。

以下功能存在风险,可能会在 CR 期间被删除:

“风险(At-risk)”是 W3C 流程中的术语,并不一定意味着该特性面临被删除或推迟的危险。这表示工作组认为该特性可能难以及时实现互操作,将其标记为此类允许工作组在转向“建议推荐标准(Proposed Rec)”阶段时,在必要的情况下删除该特性,而无需先发布一个不包含该特性的新“候选推荐标准(Candidate Rec)”。

1. 引言

本节是资料性的。

伪元素代表文档中除了文档语言显式创建的元素之外的抽象元素。由于它们不限于融入文档树,因此可用于选择和设置文档中不一定映射到文档树结构的各个部分。例如,::first-line 伪元素可以在文本换行之后选择元素首个格式化行上的内容,从而允许该行以不同于段落其余部分的方式设置样式。

每个伪元素都与一个源元素相关联,且具有 ::name-of-pseudo 形式的语法。本模块定义了 CSS 中存在的伪元素以及如何设置它们的样式。有关伪元素的一般信息及其语法和与其他选择器的交互,请参阅 [SELECTORS-4]

注: 提醒一下,除非显式允许,否则伪元素不能链式连接。例如,不允许使用 ::marker::before;但允许使用 ::before::marker

2. 排版伪元素

2.1. 首行文本:::first-line 伪元素

::first-line 伪元素代表其源元素首个格式化行的内容。

测试
下面的规则意味着“将每个 p 元素首行的字母更改为大写”
p::first-line { text-transform: uppercase }

选择器 p::first-line 不匹配任何真实的文档元素。相反,它匹配用户代理将自动插入到每个 p 元素开头的伪元素。

注: 请注意,首行的长度取决于多种因素,包括页面的宽度、字体大小等。

例如,给定一个普通的 HTML [HTML5] 段落,如下所示
<P>This is a somewhat long HTML paragraph
that will be broken into several lines.
The first line will be styled
by the ‘::first-line’ pseudo-element.
The other lines will be treated
as ordinary lines in the paragraph.</P>

根据元素的宽度,其行可能会如下断开

THIS IS A SOMEWHAT LONG HTML PARAGRAPH THAT
will be broken into several lines. The first
line will be styled by the ‘::first-line’
pseudo-element. The other lines will be 
treated as ordinary lines in the paragraph.

或者如下所示

THIS IS A SOMEWHAT LONG
HTML paragraph that will
be broken into several
lines. The first line will
be styled by the
‘::first-line’ pseudo-
element. The other lines
will be treated as ordinary
lines in the paragraph.

2.1.1. 查找首个格式化行

在 CSS 中,::first-line 伪元素仅在附加到块容器时才能产生效果

注: 首个格式化行可以是空行。例如,在 <p><br>First… 中,p 的第一行不包含任何字母。因此,“First”一词不在首个格式化行上,不受 p::first-line 的影响。

注: 本身不参与块格式化上下文块容器的第一行不能是祖先元素的首个格式化行。因此,在 <DIV><P STYLE="display: inline-block">Hello<BR>Goodbye</P> etcetera</DIV> 中,DIV 的首个格式化行不是“Hello”那一行,而是包含整个内联块的那一行。

当一个首个格式化行由多个 ::first-line 伪元素代表时,它们按照其源元素的相同顺序嵌套。该行的内联级内容——包括其根内联盒片段——嵌套在最内层的 ::first-line 伪元素中。

考虑以下标记
<DIV>
  <P>First paragraph</P>
  <P>Second paragraph</P>
</DIV>

如果我们假设使用一个虚构标签序列来代表元素的 ::first-line 伪元素,它大概是这样的

<DIV>
  <P><DIV::first-line><P::first-line>First paragraph</P::first-line></DIV::first-line></P>
  <P><P::first-line>Second paragraph</P::first-line></P>
</DIV>

2.1.2. 设置 ::first-line 伪元素的样式

::first-line 伪元素生成的盒行为类似于内联级盒,但有一定的限制。以下 CSS 属性适用于 ::first-line 伪元素

用户代理也可以应用其他属性,但以下排除的属性除外

注:::first-line 上设置 line-height 会继承到包装首行内容的根内联盒片段,因此既可以增加也可以减少首行框的高度。

2.1.3. 继承与 ::first-line 伪元素

在 CSS 继承期间,出现在首行的子元素片段::first-line 伪元素继承任何标准继承属性(上面排除的属性除外)。对于所有其他属性,包括所有自定义属性 [CSS-VARIABLES-1],继承自非伪类父元素。(不出现在首行的子元素部分始终从非伪类父元素继承。)

在通常情况下(标准继承 CSS 属性),通过写出一个代表 ::first-line虚构标签序列,可以理解进出 ::first-line 伪元素的继承。考虑之前的例子;在第一种渲染情况下,虚构标签序列将是
<P><p::first-line>This is a somewhat long HTML paragraph
that</p::first-line> will be broken into several lines.
The first line will be styled
by the ‘::first-line’ pseudo-element.
The other lines will be treated
as ordinary lines in the paragraph.</p>

而在第二种渲染情况下

<p><p::first-line>This is a somewhat long</p::first-line> HTML paragraph
that will be broken into several lines.
The first line will be styled
by the ‘::first-line’ pseudo-element.
The other lines will be treated
as ordinary lines in the paragraph.</p>
如果一个伪元素拆分了一个真实元素,其效果通常可以通过闭合然后重新开启该元素的虚构标签序列来描述。假设我们用一个包含第一句的 span 元素来标记之前的例子
<p><span>This is a somewhat long HTML paragraph
that will be broken into several lines.</span>
The first line will be styled
by the ‘::first-line’ pseudo-element.
The other lines will be treated
as ordinary lines in the paragraph.</p>

第一种渲染的效果类似于以下虚构标签序列

<p><p::first-line><span>This is a somewhat long HTML paragraph
that</span></p::first-line><span> will be broken into several lines.</span>
The first line will be styled
by the ‘::first-line’ pseudo-element.
The other lines will be treated
as ordinary lines in the paragraph.</p>

2.2. 首字母文本:::first-letter 伪元素及其 ::prefix::suffix 子元素

测试
A drop-cap initial letter, including the opening quotation mark before it.

::first-letter 伪元素代表其源元素首个格式化行上的第一个字母、数字或符号(Unicode 类别 L*N*S*排版字符单元(即首字母)及其关联的标点符号。统称这些文本为首字母文本::first-letter 伪元素可用于创建“首字母大写”和“首字下沉”,这些都是常见的排版效果。

例如,以下规则使用 [CSS-INLINE-3] 中定义的 initial-letter 属性,在 2 级标题后的每个段落上创建 2 行首字下沉
h2 + p::first-letter { initial-letter: 3; }

注: 首字母实际上可能是一个数字,例如“67 million dollars is a lot of money”中的“6”。

为了允许对首字母本身及其相邻标点符号进行独立样式设置,关联的前置标点由 ::first-letter 伪元素::prefix 子伪元素代表(::first-letter::prefix);而关联的后置标点由 ::first-letter 伪元素::suffix 子伪元素代表(::first-letter::suffix)。请参阅下文 § 2.2.1 首字母及关联标点

2.2.1. 首字母及关联标点

CSS Text 3 § 1.4 字符与字母中所述,一个排版字符单元可以包含多个 Unicode 码位。例如,组合字符必须与其基准字符保持在一起。此外,语言可能对于如何处理某些字母组合有额外的规则。例如在荷兰语中,如果字母组合 "ij" 出现在元素的开头,则两个字母都应被视为处于 ::first-letter 伪元素之内。[UAX29] 在选择首字母时,UA 应调整其排版字符单元的定义,以反映 ::first-letter 伪元素的包含块内容语言的首字母传统。

前置和后置标点也必须包含在 ::first-letter 伪元素的首字母文本中,具体如下

非正式地,这里的首字母文本模式可以粗略地(忽略 Zs 中的排除项)表示为“正则表达式” (P (Zs|P)*)? (L|N|S) ((Zs|P−(Ps|Pd))* (P−(Ps|Pd))? ——或者另一种方式 ([P] [Zs P]*)? [L N S] ([Zs [P--[Ps Pd]]]* [P--[Ps Pd]])? ——其中 Unicode 类别简写代表属于该类别的所有排版字符单元的集合。
P P Zs L N S P − (Ps ∪ Pd) P − (Ps ∪ Pd) Zs

有关排版字符单元及其 Unicode 属性的更多信息,请参阅 CSS Text 3 § 1.4 字符与字母CSS Text 3 § E 字符与属性[CSS-TEXT-3]

2.2.2. 查找首字母文本

::first-line 一样,::first-letter 伪元素仅在附加到块容器时才能产生效果。其首字母文本是参与其源元素首个格式化行内联格式化上下文中的第一个此类内联级内容,前提是该行上没有先于它的任何其他流内内容(如图像或内联表格)。

为此,任何标记盒都会被忽略,就像它们是流外的一样。但是,如果一个元素具有流内 ::before::after 内容,则会从包含该生成内容的元素内容中选择首字母文本

示例:在应用规则 p::before {content: "Note: "} 后,选择器 p::first-letter 匹配 "Note" 中的 "N"。

如果不存在符合条件的文本,则没有首字母文本,也没有 ::first-letter 伪元素。

注:首个格式化行为空时,::first-letter 不会匹配任何内容。例如,在 HTML 片段 <p><br>First... 中,第一行不包含任何字母,因此 ::first-letter 不匹配任何内容。特别是,它不匹配位于第二行的 "First" 中的 "F"。

注:::first-line 一样,不参与块格式化上下文块容器首字母文本不能是祖先元素的首字母文本。因此,在 <DIV><P STYLE="display: inline-block">Hello<BR>Goodbye</P> etcetera</DIV> 中,DIV首字母不是 "H"。实际上,该 DIV 没有首字母

首字母文本中被换行到下一行的任何部分都不再属于 ::first-letter 伪元素的一部分。

2.2.3. 首字母伪元素的继承与盒树结构

::first-letter 伪元素紧紧包裹在它所代表的首字母文本周围,即使该文本位于后代元素中。当首字母文本由多个 ::first-letter 伪元素代表时,它们按照其源元素的相同顺序嵌套。继承的行为依此类推。

考虑以下标记
<div>
  <p><span>The first few words</span>
  and the rest of the paragraph.
</div>

如果我们假设使用一个虚构标签序列来代表元素的 ::first-letter 伪元素,它大概是这样的

<div>
  <p><span><div::first-letter><p::first-letter>T</…></…>he first few words</span>
  and the rest of the paragraph.
</div>

如果存在任何 ::first-letter::prefix::first-letter::suffix 伪元素,它们将嵌套在最内层的 ::first-letter 中,除此之外其解释类似于 ::first-letter 本身。

考虑以下标记
<div>
  <p><span>“The first few words</span>
  and the rest of the quotation.
</div>

如果我们假设使用一个虚构标签序列来代表元素的 ::first-letter 伪元素,它大概是这样的

<div>
  <p><span><div::first-letter><p::first-letter><div::first-letter::prefix><p::first-letter::prefix></…></…>T</…></…>he first few words</span>
  and the rest of the paragraph.
</div>

如果构成首字母文本的字符并不都在同一个元素中(如 <p>‘<em>T... 中的 ‘T),用户代理可以从其中一个元素、或所有元素中创建 ::first-letter 伪元素(及其 ::prefix::suffix 子元素,如果有的话),或者干脆不创建伪元素。此外,如果首字母文本不在行首(例如由于双向重排序,或者由于具有 list-style-position: inside列表项标记),则不要求用户代理创建伪元素。

::first-letter 伪元素包含在任何 ::first-line 伪元素中,因此(可能间接地)继承自 ::first-line,就像同一行上的任何内联盒一样。

2.2.4. 设置首字母伪元素的样式

在 CSS 中,::first-letter 伪元素(及其 ::prefix::suffix 子元素)类似于内联盒。以下属性适用于 ::first-letter::first-letter::prefix::first-letter::suffix 伪元素

用户代理也可以应用其他属性。但是,在任何情况下,将此类未列出的属性应用于 ::first-letter 都不得更改该 ::first-letter 所代表的首字母文本内容。

注: 在以前的 CSS 版本中,允许用户代理根据字母形状选择行高、宽度和高度,以接近字体大小;并在执行布局时考虑字形轮廓。此类定义松散的“魔法”已被有意移除,因为它被证明是预期用例(首字下沉和抬高首字母)的一个糟糕解决方案,且会导致互操作性问题。有关显式处理首字下沉和抬高首字母的方法,请参阅 [CSS-INLINE-3] 中的 initial-letter

3. 高亮伪元素

3.1. 选择高亮内容:::selection::search-text::target-text::spelling-error::grammar-error 以及 ::highlight() 伪元素

测试

高亮伪元素代表文档中被赋予特定状态的部分,通常会以不同的样式呈现,以向用户指示该状态。例如,文档的选择部分通常会被高亮显示(赋予交替的背景色和前景色,或色彩洗刷效果)以指示其被选中状态。定义了以下高亮伪元素

::selection
::selection 伪元素代表文档中被选为某些未来用户代理操作目标或对象的部分。例如,它适用于可编辑文本字段中被选中的文本,这些文本将通过复制操作被复制或通过粘贴操作被替换。
测试
::search-text
::search-text 伪元素代表由用户代理的页内查找功能识别的文本。由于并非所有 UA 都会以可以用高亮伪元素表达的方式来设置匹配文本的样式,因此该伪元素是可选实现的。

:current 伪类(但不包括 ::current())可以与 ::search-text 结合使用,以代表当前获得焦点的匹配实例。:past:future 伪类被保留用于未来类似的用途。任何这些伪类与 ::search-text 的不支持组合必须被视为无效。

::target-text
::target-text 伪元素代表由文档 URL 的片段(如果有的话)直接定位的文本。

注:URL 片段定位到一个元素时,可以使用 :target 伪元素来选择它,但 ::target-text 不会匹配任何内容。它只匹配文本本身被 [片段] 定位的情况。

测试
::spelling-error
::spelling-error 伪元素代表被用户代理标记为拼写错误的一段文本。
测试
::grammar-error
::grammar-error 伪元素代表被用户代理标记为语法错误的一段文本。
测试
::highlight(<custom-ident>)
::highlight() 函数式伪元素代表与给定自定义高亮名称标识的自定义高亮关联的文档部分。参数 <custom-ident> 是必需的。详情请参阅 [CSS-HIGHLIGHT-API-1]

高亮伪元素不一定符合元素树结构,可以任意跨越元素边界,而不必遵守其嵌套结构。

3.2. 设置高亮样式

高亮伪元素只能由一组有限的属性设置样式,这些属性不会影响布局,并且可以在高度动态的环境中高效应用——此外(为确保互操作性),它们在所需区域内的渲染不依赖于(由 UA 确定的)高亮叠加层的精确边界。

以下属性适用于高亮伪元素

这里是否还应包含其他属性?

注:从历史上看(以及在编写本文时),只有 colorbackground-color 得到了互操作性的支持。

注:color 属性设置文本以及由源元素及其祖先和后代应用于文本的所有行装饰(下划线、上划线、贯穿线)和强调标记(text-emphasis)的颜色。

对于未在上方列出但解析适用属性的值所必需的任何属性,它们的计算值是从源元素的计算值中复制而来的,忽略在高亮伪元素本身上指定的任何值。例如:

如果对于给定的高亮伪元素,在作者源中指定了颜色,则必须按指定尊重这些颜色;即 UA 不得应用任何额外处理(例如使用半透明洗刷效果)。但是,如果作者源中没有颜色,则 UA 可以应用额外的颜色处理。

注:这是为了确保在解释给定作者样式表的所有用户代理中都能保持颜色对比度。

供应商前缀属性(如 -webkit-text-fill-color)不适用于高亮伪元素

3.3. 默认 UA 样式

建议在默认 UA 样式表中添加以下内容:

/* Represent default spelling/grammar error styling in an adjustable way */
:root::spelling-error { text-decoration: spelling-error; }
:root::grammar-error  { text-decoration: grammar-error; }

一些高亮伪元素应该具有成对的默认高亮颜色——由 UA 提供的默认 colorbackground-color,它们要么一起被使用,要么一起被覆盖,请参见 § 3.3.1 成对默认值。对于 ::selection,它们应对应于 HighlightTextHighlight,而对于 ::target-text,它们应对应于 MarkTextMark

UA 可以应用额外的效果来增强高亮内容的呈现,例如使高亮文本以外的内容变暗,或根据用户交互或时间淡出高亮样式。这些不受 CSS 控制。

关于 UA 以受 CSS 控制的方式对高亮呈现进行微调,目前正在 Issue 6853 中进行讨论。

3.3.1. 成对默认值

出于兼容性原因,只有当 colorbackground-color 都没有从作者源获得级联值(或从作者源继承其值)时,才必须使用成对的默认高亮颜色。当高亮颜色为 revertrevert-layer 时,回滚级联之后的源决定了级联值的

注:由于此规则是出于兼容性原因,因此它不适用于其他类似属性,如 fill-colorstroke-color

例如,对于以下标记:
<p>Highlight this <em>and this</em>.</p>

如果作者提供了以下任何规则,都将抑制 <em> 元素中 ::selection 的默认 background-color

em::selection { color: initial; }
em::selection { color: inherit; }
em::selection { color: unset; }
em::selection { color: green; }
p::selection { color: green; }
测试

3.4. 高亮区域

对于每种类型的高亮(参见 § 3.1 选择高亮内容:::selection、::search-text、::target-text、::spelling-error、::grammar-error 和 ::highlight() 伪元素),整个文档都存在一个唯一的高亮叠加层,其活动部分由相应的高亮伪元素表示。每个盒子拥有叠加层中与其直接包含的任何文本或替换内容相对应的部分。

请参阅 F2F 会议纪要dbaron 的邮件Daniel 的讨论串Gecko 注释Opera 注释Webkit 注释

不确定这是否是描述事物运作方式的正确方式。

3.5. 级联和每元素高亮样式

每个元素绘制其自身在高亮叠加层中的活动部分,这些部分接收由相应高亮伪元素样式指定的样式,而该元素即为这些样式的源元素。当多种样式发生冲突时,通过级联来确定最终胜出的样式。

当级联未给任何受支持属性赋予值,或者赋予的值为 inheritunset 时,其指定值通过从其源元素的父元素的相应高亮伪元素继承来确定。无论该属性是否为继承属性,都会发生这种情况。

此外,对于源自根元素的高亮伪元素,color 的继承值为 currentColor,而不是初始值

所有自定义属性都从源元素继承,无论该属性是否为注册为可继承的自定义属性。

测试
例如,如果应用以下规则:
p::selection      { color: yellow; background: green; }
p > em::selection { color: orange; }
em::selection     { color:    red; }

到以下标记:

<p>Highlight this <em>and this</em>.</p>

选择高亮将在整个范围内显示为绿色,在 <em> 元素之外显示黄色文本,在元素之内显示橙色文本。

测试

希望使用多种选择样式的作者应该对他们的文档级选择样式使用 :root::selection,因为这将允许在后代中进行清晰的覆盖。单独的 ::selection 适用于树中的每个元素,会覆盖任何祖先的更具体样式。

例如,如果作者指定:
::selection          { background: blue; }
p.warning::selection { background:  red; }

且文档包含:

<p class="warning">Some <strong>very important information</strong></p>

在“very important information”上的高亮将是蓝色的,因为 <strong> 元素的 ::selection 也匹配 ::selection { background: blue; } 规则。(请记住,当缺少标签选择器时,隐含 *。)能够产生预期行为(在 p.warning 内为红色高亮,其他地方为蓝色)的样式规则是:

:root::selection     { background: blue; }
p.warning::selection { background:  red; }
测试

以下示例演示了自定义属性的继承。

例如,如果作者指定:
:root {
   --background-color: green;
   --decoration-thickness: 10px;
   --decoration-color: purple;
 }
 ::selection {
   --decoration-thickness: 1px;
   --decoration-color: green;
 }
 div::selection {
   --decoration-color: blue;
   background-color: var(--background-color, red);
   text-decoration-line: underline;
   text-decoration-style: line;
   text-decoration-thickness: var(--decoration-thickness, 5px);
   text-decoration-color: var(--decoration-color, red);
 }

通用的 ::selection 使用用户代理的默认样式,因为它只定义了自定义属性,没有定义影响外观的属性。div 的选择高亮将对选定内容应用绿色背景,并带有 10px 厚的蓝色下划线。由于 --background-color--decoration-thickness 自定义属性未在 div::selection 伪元素上指定,它们将从其源元素 div 继承,而 div 本身又从根元素继承自定义属性。然而,由于 --decoration-color 是在 div::selection 本身上指定的,因此不使用来自源元素的值。

注:这种行为允许以与预先存在的实现兼容的方式,使用自定义属性来控制选择。

3.6. 绘制高亮

测试

3.6.1. 背景

每个高亮伪元素在相应部分的高亮叠加层上绘制其背景,在任何定位后代之下(即在 CSS2.2 § E.2 中的步骤 8 之前)进行绘制。::selection 叠加层绘制在 ::target-text 叠加层之上,后者又绘制在 ::spelling-error 叠加层之上,再其后是 ::grammar-error 叠加层,最后是 ::highlight 叠加层。::search-text 叠加层根据 UA 的不同直接绘制在 :selection 叠加层之上或之下,并绘制在所有其他叠加层之上。

测试

3.6.2. 阴影

应用于高亮伪元素的任何 text-shadow 都会绘制在相应的高亮叠加层背景之上。此类文本阴影也会相互叠加(并叠加在应用于文本及其装饰的任何原始 text-shadow 之上,该阴影将继续适用)。

注:由于每个高亮叠加层背景都绘制在属于下方层的任何阴影之上,因此高亮叠加层背景可能会遮挡低层级的阴影。

3.6.3. 文本和文本装饰

高亮伪元素会抑制任何关联文本的正常绘制,以及应用于该文本的文本装饰(阴影除外)。相反,最顶层的活动高亮叠加层使用该高亮自身的 color,在所有高亮叠加层背景上重新绘制该文本(及这些装饰)。

注:这意味着与阴影不同,行装饰和强调标记不会被为关联文本绘制的任何高亮叠加层背景所遮挡。

为此,高亮伪元素color 属性上的 currentColor 代表下方下一个活动高亮伪元素层的颜色,最终回退到原本会使用的颜色(由源元素或中间的伪元素::first-line::first-letter 应用的颜色)。

注:因此,当伪元素的 color 不是 currentColor 时,元素自身的文本装饰(行装饰强调标记)将以伪元素自身的颜色绘制,而不管其原始颜色或填充规范如何。

由每个高亮伪元素引入的任何文本装饰都以与其背景相同的顺序堆叠在文本的原始装饰之上,并全部被绘制,每种装饰都使用其自身的颜色。应用正常的绘制顺序,因此根据 CSS2 附录 E,所有下划线都绘制在顶划线之下,顶划线绘制在文本之下,文本绘制在任何贯穿线之下。然而,由 ::selection 应用的文本装饰可以改为与文本一起作为位于所有其他装饰之上的最顶层的一组层来绘制。

例如,假设原始文本具有下划线和删除线,::selection 应用下划线,而 ::target-text 应用顶划线和删除线,以下均为符合规范的绘制顺序:
  1. 原始下划线
  2. ::selection 下划线
  3. ::target-text 顶划线
  4. ::selection 颜色的文本
  5. 原始删除线
  6. ::target-text 删除线
  1. 原始下划线
  2. ::target-text 顶划线
  3. 原始删除线
  4. ::target-text 删除线
  5. ::selection 下划线
  6. ::selection 颜色的文本

高亮伪元素引入的行装饰仅适用于与其源元素关联的文本,并且除了通过属性继承(如上文所述)之外,不会传播到后代。

注:与源元素自身的装饰不同,在高亮伪元素上声明的装饰会传播到流外元素行内块,其厚度和位置在后代之间各不相同。

测试

3.6.4. 替换元素

对于非替换内容,UA 必须按照指定尊重 colorbackground-color(包括它们的 Alpha 通道)。但是,对于替换内容,UA 应该创建一个半透明的洗刷层来覆盖内容,以便内容可以透出。如果指定的 background-color 不是 transparent,则此洗刷层应采用指定的颜色,否则采用指定的 color;但是 UA 可以调整 Alpha 通道。

测试

3.7. 高亮显示的安全性考虑

因为拼写和语法错误的样式可能会泄露有关用户词典内容的信息(其中可能包含用户的姓名,甚至包含其地址簿的内容!),实现 ::spelling-error::grammar-error 的 UA 必须防止页面能够读取此类高亮片段的样式。

4. 遵守树结构的伪元素

遵守树结构的伪元素始终符合盒子树结构。它们从其源元素继承任何可继承属性;非继承属性照常取其初始值[CSS-CASCADE-4] 其中一个子集是完全可设置样式的伪元素;所有适用于真实元素的属性也适用于完全可设置样式的伪元素。

测试

4.1. 生成内容伪元素:::before::after

当它们的计算 content 值不是 none 时,这些伪元素会生成盒子,就好像它们是其源元素的直接子元素一样,其内容由 content 指定。

::before
代表紧接在源元素实际内容之前的可设置样式的子伪元素。
::after
代表紧接在源元素实际内容之后的可设置样式的子伪元素。
测试

::before::after 都是完全可设置样式的伪元素:对哪些属性适用于它们没有限制。

例如,以下规则在每个 class 属性值为 note<p> 元素内容之前插入字符串 “Note: ”:
p.note::before { content: "Note: " }

由于 display 的初始值是 inline,这将生成一个行内盒子。与 <p> 的其他行内子元素一样,它将参与 <p> 的行内格式化上下文,可能与其他内容共享一行。

与常规元素的内容一样,::before:after 伪元素的生成内容可以构成应用于其源元素的任何 ::first-line::first-letter 伪元素的一部分。同样,与常规子元素一样,当它们的父元素(即源元素)被替换时,::before::after 伪元素会被抑制。

4.2. 列表标记:::marker 伪元素

::marker 伪元素代表列表项自动生成的标记盒。(参见 [CSS-DISPLAY-3][CSS-LISTS-3]。)

测试

::marker 的内容在被 ::first-letter 处理时会被忽略(不选中)。

::marker::first-line 的交互目前正在 Issue 4506 中讨论。

::marker 是一个树结构伪元素,但并非完全可设置样式的;只有有限的一组属性可以用于 ::marker 伪元素。此列表定义在 CSS Lists 3 § 3.1.1 适用于 ::marker 的属性中。

::before::marker::after::marker 选择器是有效的,可用于表示恰好是列表项::before::after 伪元素的标记框。然而 ::marker::marker 是无效的,并且 ::marker 上的 display 计算值总是会失去任何 list-item 方面的特性。

::marker 是否也应该具有 ::prefix::suffix 子元素?

4.3. 占位符输入:::placeholder 伪元素

::placeholder 伪元素表示输入字段中的占位符文本:即表示输入并为用户如何填写表单提供提示的文本。例如,日期输入字段可能具有占位符文本“YYYY/MM/DD”,以说明应按年-月-日的顺序输入数字日期。它是一个树结构伪元素

测试
例如,根据 [HTML] 的语义,inputtextarea 元素上的 placeholder 属性提供占位符文本。当显示此类文本时,::placeholder 伪元素即代表该文本。

注意:还存在一个 :placeholder-shown,它适用于显示占位符文本时的(真实)元素,并可用于对这些元素进行特殊样式设置。::placeholder 特指占位符文本本身,因此其能力相对有限。

所有适用于 ::first-line 伪元素的属性也适用于 ::placeholder 伪元素,但 [CSS-INLINE-3] 中定义的属性除外。

在交互式媒体中,一旦用户输入内容,占位符文本通常会被隐藏;然而这并非强制要求,输入值和占位符文本也可以同时可见。确切的行为由 UA(用户代理)定义。请注意,在静态媒体(如打印件)中,即使在用户输入之后,占位符文本仍会存在。

作者们似乎希望将 text-align 加入支持的属性列表中。参见例如 此处的评论

注意:有建议提出 ::placeholder 还可以引用在元素树中具有相应元素的占位符。目前尚不清楚这应该如何运作,但可能值得一做。参见 Issue 2417

5. 元素支持的伪元素

元素支持的伪元素与大多数 CSS 和其他平台功能的交互方式就如同它们是真实元素一样(事实上,它们通常确实是无法以其他方式选中的真实元素)。

元素支持的伪元素始终是树结构化的。除非另有说明,它们是完全可设置样式的,并继承自其源元素,就像标准的树结构伪元素一样;但它们也可以被定义为继承自另一个元素。(例如,::part() 继承自它在 Shadow Tree 中所代表元素的父元素。)

所有伪类伪元素在语法上都允许出现在元素支持的伪元素之后(例如 x-button::part(label):hoverx-button::part(label)::before),就像该伪元素是一个类型选择器一样;但有些伪类被禁止匹配。

一个元素支持的伪元素可以将其自身定义为代表一个真实元素(可能是当前树中无法访问的元素)。如果它这样做,所有未被禁止的伪类和伪元素(见上文)将像在该真实元素上一样匹配。如果它不这样做,它必须定义它在何时匹配哪些伪类;然而,除非另有说明,任何允许在树结构伪元素上使用的伪类始终允许在元素支持的伪元素上使用。

5.1. 文件选择按钮:::file-selector-button 伪元素

::file-selector-button 伪元素的目标是 type=file<input> 元素内部的 <button>(如果 UA 渲染了此类按钮)。

测试

对于哪些属性适用于 ::file-selector-button 伪元素没有限制。

例如,以下示例应在文件选择按钮周围显示绿色边框
::file-selector-button { border: 3px solid green }

5.2. details 元素的可展开内容:::details-content 伪元素

::details-content 伪元素的目标是 details 元素中可以展开或折叠的附加信息。它是一个元素支持的伪元素

测试

details 元素


对于哪些属性适用于 ::details-content 伪元素没有限制。

例如,以下示例将在 details 元素打开时为附加信息的不透明度设置动画
details::details-content {
  opacity: 0;
  transition: content-visibility 300ms allow-discrete, opacity 300ms;
}

details[open]::details-content {
  opacity: 1;
}

6. 重叠伪元素的交互

回想一下:

以下 CSS 和 HTML 示例说明了重叠伪元素是如何交互的

<style>
p { color: red; font-size: 12pt }
p::first-letter { color: green; font-size: 200% }
p::first-line { color: blue }
</style>

<p>Some text that ends up on two lines</p>

每个 P 元素的第一个字母将为绿色,字体大小为 '24pt'。第一个格式化行的其余部分将为蓝色,而段落的其余部分将为红色。

假设在单词 "ends" 之前会发生换行,此片段的虚拟标签序列可能是

<p>
  <p::first-line>
    <p::first-letter>
      S
    </p::first-letter>
    ome text that
  </p::first-line>
  ends up on two lines
</p>

7. 对 CSS 对象模型的补充

测试

7.1. CSSPseudoElement 接口

CSSPseudoElement 接口允许伪元素成为事件目标。

[Exposed=Window]
interface CSSPseudoElement : EventTarget {
    readonly attribute CSSOMString type;
    readonly attribute Element element;
    readonly attribute (Element or CSSPseudoElement) parent;
    CSSPseudoElement? pseudo(CSSOMString type);
};

该接口正处于设计开发阶段,本草案更多的是寻求反馈而非实现。CSSWG 特别希望听取有关用例和问题的意见。

type 属性是代表伪元素类型的字符串。这可以是以下值之一:

"::before"
代表 ::before 伪元素。
"::after"
代表 ::after 伪元素。
"::marker"
代表 ::marker 伪元素。

element 属性是该伪元素最终源元素

parent 属性是该伪元素的源元素。对于大多数伪元素,parentelement 将返回相同的 Element;对于子伪元素parent 将返回一个 CSSPseudoElement,而 element 则返回一个 Element

pseudo(type) 方法返回代表其参数中所引用的子伪元素CSSPseudoElement 接口(如果此类子伪元素可能存在且有效),否则返回 null。参见下文的 pseudo()

注意:该接口将来可能会扩展到其他伪元素类型,和/或允许通过 CSSStyleDeclaration style 属性设置样式信息。目前的功能仅限于支持 [web-animations-1] 所需的功能。

7.2. Element 接口的 pseudo() 方法

Element 接口增加了一个新方法,用于检索由给定元素为给定类型创建的伪元素:

partial interface Element {
  CSSPseudoElement? pseudo(CSSOMString type);
};
pseudo(CSSOMString type) 方法用于检索与该元素关联的类型与 type 匹配的 CSSPseudoElement 实例。调用该方法时,执行以下步骤:
  1. type 参数解析<pseudo-element-selector>,并将结果设为 type

  2. 如果 type 为解析失败,则返回 null。

  3. 否则,返回代表该伪元素的 CSSPseudoElement 对象,该伪元素将匹配以 this 作为其源元素的选择器 type

代表同一源元素上同一伪元素的返回值,只要是可观察到的,必须始终是同一个 CSSPseudoElement 对象。(为了方便或提高性能,如果这是不可观察的,UA 可能会丢弃或重新生成该对象。)

pseudo() 方法返回值的同一性、生命周期和 null 性(以及潜在的错误情况)仍在讨论中。参见 Issue 3607Issue 3603

7.3. getComputedStyle()

当第二个参数 pseudoElt 指向一个高亮伪元素时,getComputedStyle() 返回的样式就如同该高亮处于激活状态,而所有其他高亮处于非激活状态。这避免了返回结果依赖于实际高亮状态所带来的潜在歧义和隐私风险。

8. 兼容性语法

为了与针对 CSS Level 2 [CSS2] 编写的现有样式表兼容,用户代理还必须接受以前的单冒号表示法(:before:after:first-letter:first-line),用于表示 ::before::after::first-letter::first-line 伪元素。

安全性考虑

关于高亮显示,参见 § 3.7 高亮显示的安全性考虑

隐私性考虑

尚未针对本模块提出新的隐私考虑。

变更 (Changes)

2022 年 12 月 30 日工作草案以来的重大变化包括:

2020 年 12 月 31 日工作草案以来的重大变化包括:

2019 年 2 月 25 日工作草案以来的重大变化包括:

2016 年 6 月 7 日工作草案以来的变化包括:

致谢

编辑们要特别鸣谢以下个人对本规范作出的贡献:Tab Atkins、Delan Azabani、David Baron、Oriol Brufau、Razvan Caliman、Stephen Chenney、Chris Coyier、Anders Grimsrud、Vincent Hardy、François Remy。

一致性

文档约定

一致性要求通过描述性断言和 RFC 2119 术语相结合来表达。本文档规范性部分中的关键词“MUST”(必须)、“MUST NOT”(不得)、“REQUIRED”(必需)、“SHALL”(应)、“SHALL NOT”(不应)、“SHOULD”(推荐)、“SHOULD NOT”(不推荐)、“RECOMMENDED”(建议)、“MAY”(可以)和“OPTIONAL”(可选)应按照 RFC 2119 中的描述进行解释。然而,为了可读性,这些词在本文档中不以全大写形式出现。

本规范的所有文本均为规范性文本,明确标记为非规范性的部分、示例和注释除外。 [RFC2119]

本规范中的示例均以“例如”开头,或使用 class="example" 与规范性文本隔开,如下所示

这是一个说明性示例。

提示性说明以“Note”开头,并使用 class="note" 与规范性文本隔开,如下所示

注意,这是一个说明性注释。

建议(Advisements)是旨在引起特别注意的规范性部分,并使用 <strong class="advisement"> 与其他规范性文本隔开,如下所示: UA 必须提供可访问的替代方案。

测试

与本规范内容相关的测试可记录在“Tests”块中,就像这一个一样。任何此类块都是非规范性的。


一致性类别

本规范为三类一致性定义了一致性要求。

样式表
一份 CSS 样式表
渲染器
一种 用户代理 (UA),它解释样式表的语义并渲染使用它们的文档。
创作工具
一种 用户代理 (UA),用于编写样式表。

如果样式表包含的所有使用本模块定义语法的语句,根据通用 CSS 语法及本模块定义的各功能语法均有效,则该样式表符合本规范。

如果渲染器除了按相应规范解释样式表外,还通过正确解析本规范定义的所有功能并相应地渲染文档来支持这些功能,则该渲染器符合本规范。然而,由于设备限制导致 UA 无法正确渲染文档,并不意味着该 UA 不符合规范。(例如,UA 无需在单色显示器上渲染颜色。)

如果创作工具编写的样式表根据通用 CSS 语法及本模块中各功能的语法是句法正确的,并符合本模块中描述的所有其他样式表一致性要求,则该创作工具符合本规范。

部分实现

为了使作者能够利用前向兼容的解析规则来指定后备值,CSS 渲染器 **必须** 将其无法使用支持级别的任何 @规则、属性、属性值、关键字和其他语法结构视为无效(并 适当忽略)。特别地,用户代理 **不得** 在单一多值属性声明中选择性地忽略不支持的组件值而保留支持的值:如果任何值被视为无效(因为不支持的值必须如此),CSS 要求忽略整个声明。

不稳定和专有特性的实现

为了避免与未来稳定的 CSS 功能发生冲突,CSS 工作组建议在实施不稳定功能和私有扩展遵循最佳实践

非实验性实现

一旦规范达到候选推荐阶段,非实验性实现即可成为可能,实现者应发布他们能够证明根据规范正确实现的任何 CR 级别特性的无前缀实现。

为建立并保持 CSS 在不同实现间的互操作性,CSS 工作组请求非实验性的 CSS 渲染器在发布任何 CSS 功能的无前缀实现之前,向 W3C 提交一份实现报告(并在必要时提交用于该实现报告的测试用例)。提交给 W3C 的测试用例需经 CSS 工作组审阅和修正。

有关提交测试用例和实现报告的详细信息,请访问 CSS 工作组网站 https://w3org.cn/Style/CSS/Test/。问题可发送至 public-css-testsuite@w3.org 邮件列表。

索引

本规范定义的术语

通过引用定义的术语

引用

规范性引用

[COMPAT]
Mike Taylor. 兼容性标准. 活标准 (Living Standard). URL: https://compat.spec.whatwg.org/
[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS 背景与边框模块 3 级 (CSS Backgrounds and Borders Module Level 3). 2024年3月11日. CRD. URL: https://w3org.cn/TR/css-backgrounds-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS 分片模块 Level 4. 2018 年 12 月 18 日. FPWD. URL: https://w3org.cn/TR/css-break-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2022年1月13日. CR. URL: https://w3org.cn/TR/css-cascade-5/
[CSS-CASCADE-6]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS 级联与继承 Level 6. 2024 年 9 月 6 日. 工作草案 (WD). URL: https://w3org.cn/TR/css-cascade-6/
[CSS-COLOR-4]
Chris Lilley; Tab Atkins Jr.; Lea Verou. CSS 颜色模块 Level 4. 2025 年 4 月 24 日. CRD. URL: https://w3org.cn/TR/css-color-4/
[CSS-COLOR-ADJUST-1]
Elika Etemad; 等。 CSS Color Adjustment Module Level 1。2022 年 6 月 14 日。候选推荐草案。URL: https://w3org.cn/TR/css-color-adjust-1/
[CSS-CONTENT-3]
Elika Etemad; Dave Cramer. CSS Generated Content Module Level 3. 2019年8月2日. WD. URL: https://w3org.cn/TR/css-content-3/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS 显示模块 Level 4. 2024 年 12 月 19 日. FPWD. URL: https://w3org.cn/TR/css-display-4/
[CSS-FONTS-4]
Chris Lilley. CSS Fonts Module Level 4. 2024年2月1日. WD. URL: https://w3org.cn/TR/css-fonts-4/
[CSS-HIGHLIGHT-API-1]
Florian Rivoal; Sanket Joshi; Megan Gardner。 CSS Custom Highlight API Module Level 1。2021 年 12 月 15 日。工作草案。URL: https://w3org.cn/TR/css-highlight-api-1/
[CSS-INLINE-3]
Elika Etemad. CSS 内联布局模块 Level 3. 2024 年 12 月 18 日. 工作草案 (WD). URL: https://w3org.cn/TR/css-inline-3/
[CSS-LISTS-3]
Elika Etemad; Tab Atkins Jr.. CSS Lists and Counters Module Level 3. 2020年11月17日. WD. URL: https://w3org.cn/TR/css-lists-3/
[CSS-MULTICOL-2]
Florian Rivoal; Rachel Andrew. CSS 多列布局模块 Level 2。2024 年 12 月 19 日。FPWD。URL: https://w3org.cn/TR/css-multicol-2/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS 伪元素模块 Level 4. 2022年12月30日. WD. URL: https://w3org.cn/TR/css-pseudo-4/
[CSS-RUBY-1]
Elika Etemad; et al. CSS Ruby Annotation Layout Module Level 1. 2022年12月31日. WD. URL: https://w3org.cn/TR/css-ruby-1/
[CSS-SCOPING-1]
Tab Atkins Jr.; Elika Etemad. CSS 作用域模块 Level 1. 2014 年 4 月 3 日. FPWD. URL: https://w3org.cn/TR/css-scoping-1/
[CSS-SHADOW-PARTS-1]
Tab Atkins Jr.; Fergal Daly。 CSS Shadow Parts。2018 年 11 月 15 日。首个工作草案。URL: https://w3org.cn/TR/css-shadow-parts-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS 语法模块 3 级 (CSS Syntax Module Level 3). 2021年12月24日. CRD. URL: https://w3org.cn/TR/css-syntax-3/
[CSS-TABLES-3]
François Remy; Greg Whitworth; David Baron. CSS Table Module Level 3. 2019年7月27日. WD. URL: https://w3org.cn/TR/css-tables-3/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS 文本模块 Level 3. 2024 年 9 月 30 日. CRD. URL: https://w3org.cn/TR/css-text-3/
[CSS-TEXT-4]
Elika Etemad; 等. CSS 文本模块 Level 4. 2024 年 5 月 29 日. WD. URL: https://w3org.cn/TR/css-text-4/
[CSS-TEXT-DECOR-4]
Elika Etemad; Koji Ishii. CSS Text Decoration Module Level 4. 2022年5月4日. WD. URL: https://w3org.cn/TR/css-text-decor-4/
[CSS-UI-4]
Florian Rivoal. CSS Basic User Interface Module Level 4. 2021年3月16日. WD. URL: https://w3org.cn/TR/css-ui-4/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 值与单位模块 4 级 (CSS Values and Units Module Level 4). 2024年3月12日. WD. URL: https://w3org.cn/TR/css-values-4/
[CSS-VARIABLES-1]
Tab Atkins Jr.. CSS Custom Properties for Cascading Variables Module Level 1. 2022年6月16日. CR. URL: https://w3org.cn/TR/css-variables-1/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 3. 2019年12月10日. REC. URL: https://w3org.cn/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 2019年7月30日. CR. URL: https://w3org.cn/TR/css-writing-modes-4/
[CSS2]
Bert Bos; et al. 层叠样式表 2 级修订版 1 (CSS 2.1) 规范 (Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification). 2011年6月7日. REC. URL: https://w3org.cn/TR/CSS2/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 2021年8月26日. WD. URL: https://w3org.cn/TR/cssom-1/
[DOM]
Anne van Kesteren. DOM 标准. Living Standard. URL: https://dom.spec.whatwg.org/
[FILL-STROKE-3]
Elika Etemad; Tab Atkins Jr.. CSS Fill and Stroke Module Level 3. 13 April 2017. FPWD. URL: https://w3org.cn/TR/fill-stroke-3/
[HTML]
Anne van Kesteren; et al. HTML 标准. Living Standard. URL: https://html.whatwg.cn/multipage/
[RFC2119]
S. Bradner. RFC 中用于指示要求级别的关键词. 1997年3月. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 选择器第 4 级. 2022 年 11 月 11 日. WD. URL: https://w3org.cn/TR/selectors-4/
[UAX44]
Ken Whistler。 Unicode Character Database。2024 年 8 月 27 日。Unicode 标准附件 #44。URL: https://www.unicode.org/reports/tr44/tr44-34.html
[URL]
Anne van Kesteren. URL 标准. 生活标准. URL: https://url.spec.whatwg.org/
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL 标准. Living Standard. URL: https://webidl.spec.whatwg.org/

参考资料

[CSS-BACKGROUNDS-4]
Bert Bos; Elika J. Etemad; Lea Verou。 CSS Backgrounds and Borders Module Level 4。CSS 模块提案。URL: https://drafts.csswg.org/css-backgrounds-4/
[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS 层叠与继承第 4 级. 2022年1月13日. CR. URL: https://w3org.cn/TR/css-cascade-4/
[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 3. 2023年3月30日. CR. URL: https://w3org.cn/TR/css-display-3/
[CSS22]
Bert Bos。 Cascading Style Sheets Level 2 Revision 2 (CSS 2.2) Specification。2016 年 4 月 12 日。首个工作草案。URL: https://w3org.cn/TR/CSS22/
[HTML5]
Ian Hickson; et al. HTML5。2018 年 3 月 27 日。REC。URL: https://w3org.cn/TR/html5/
[SELECTORS-3]
Tantek Çelik; et al. 选择器第 3 级. 2018 年 11 月 6 日. REC. URL: https://w3org.cn/TR/selectors-3/
[UAX29]
Josh Hadley。 Unicode Text Segmentation。2024 年 8 月 28 日。Unicode 标准附件 #29。URL: https://www.unicode.org/reports/tr29/tr29-45.html
[WEB-ANIMATIONS-1]
Brian Birtles; 等人. Web Animations. 2023年6月5日. WD. URL: https://w3org.cn/TR/web-animations-1/

IDL 索引

[Exposed=Window]
interface CSSPseudoElement : EventTarget {
    readonly attribute CSSOMString type;
    readonly attribute Element element;
    readonly attribute (Element or CSSPseudoElement) parent;
    CSSPseudoElement? pseudo(CSSOMString type);
};

partial interface Element {
  CSSPseudoElement? pseudo(CSSOMString type);
};

问题索引

还有其他应该包含在这里的属性吗?
UA 对高亮显示呈现方式进行的、*受* CSS 控制的微调,目前正在 Issue 6853 中讨论。
参见 F2F 会议纪要dbaron 的邮件Daniel 的讨论串Gecko 备注Opera 备注Webkit 备注
不确定这是否是描述其工作方式的正确方式。
::marker::first-line 的交互目前正在 Issue 4506 中讨论。
::marker 是否也应该具有 ::prefix::suffix 子元素?
作者们似乎希望将 text-align 包含在支持的属性列表中。参见例如这里的评论
此接口正处于设计开发阶段,本草案更多是在征求反馈而非寻求实现。CSSWG 特别希望了解相关用例和问题。
pseudo() 方法返回值的标识、生命周期和空值性(以及潜在的错误情况)仍处于讨论中。参见 Issue 3607Issue 3603