CSS疑似要素モジュール レベル4

W3C作業草案,

この文書の詳細
このバージョン:
https://www.w3.org/TR/2025/WD-css-pseudo-4-20250627/
最新公開バージョン:
https://www.w3.org/TR/css-pseudo-4/
編集者草案:
https://drafts.csswg.org/css-pseudo-4/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/css-pseudo-4/
フィードバック:
CSSWG課題リポジトリ
仕様内インライン
編集者:
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://www.w3.org/TR/ でご確認いただけます。

本書はCSSワーキンググループより 作業草案(Working Draft)として 勧告トラックを用いて公開されました。 作業草案としての公開は W3Cおよびその会員による承認を意味するものではありません。

この文書はドラフトであり、随時更新・置換・廃止される可能性があります。 他の進行中の作業以外として引用することは不適切です。

ご意見・フィードバックは GitHub課題(推奨)で「css-pseudo」をタイトルに含めて投稿してください(例: “[css-pseudo] …コメント要約…”)。 すべての課題・コメントはアーカイブされます。 また、(アーカイブあり) 公開メーリングリスト www-style@w3.org へ送信することもできます。

この文書は2023年11月3日W3Cプロセス文書のもとで管理されています。

本書はW3C特許ポリシーに基づき運営されるグループによって作成されました。 W3Cはグループ成果物に関連した特許開示の公開リストを管理しています。 そのページには特許開示の方法も記載されています。 ある特許が本質的クレームを含むと信じる場合は、 W3C特許ポリシー第6節に従って情報を開示する必要があります。

以下の機能は「リスクあり」とされており、CR期間中に削除される可能性があります:

「リスクあり」はW3Cプロセス用語であり、必ずしも機能が廃止・遅延されることを意味するものではありません。 WGがその機能の相互運用可能な実装が難しいと考えている場合に記載されており、 こうすることで、提案勧告移行時に新しい候補勧告を発行せずとも機能の削除が可能となります。

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 の最初の行が <p><br>First… の場合、最初の行には文字がありません。 したがって "First" という単語は最初の整形行にはなく、p::first-lineの影響を受けません。

注: ブロックコンテナ自身が ブロック整形コンテキストに参加しない場合、 その最初の行は祖先要素の最初の整形行にはなりません。 例えば、 <DIV><P STYLE="display: inline-block">Hello<BR>Goodbye</P> etcetera</DIV> では、DIV の最初の整形行は "Hello" の行ではなく、そのインラインブロック全体を含む行となります。

ひとつの最初の整形行が 複数の::first-line 疑似要素で表現される場合、 疑似要素はその発生要素の順序に従い入れ子になります。 この行のインラインレベル内容(root inline boxフラグメントも含む)は、最も内側の::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 疑似要素に適用されます:

ユーザーエージェントは他にもプロパティを適用してよいですが、 以下の除外プロパティは適用できません:

注: line-height::first-line に設定すると、 その行をラップするroot inline boxフラグメントにも継承され、 最初の行ボックスの高さを増減させることができます。

2.1.3. 継承と ::first-line 疑似要素

CSSの継承処理時、 最初の行に現れる子のフラグメントは、前述の除外プロパティを除く標準的な継承プロパティ::first-line 疑似要素から継承します。 それ以外のプロパティ(カスタムプロパティ [CSS-VARIABLES-1] を含む)は 非疑似の親から継承します。 (子要素内で最初の行に現れない部分は常に非疑似親から継承されます。)

標準的な継承CSSプロパティの場合、 継承の流れは ::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>

2番目のレンダリングでは:

<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 子要素

テスト
ドロップキャップの初期文字(前に引用符含む)の例。

::first-letter 疑似要素は、 文字組字単位としての最初の文字・数字・記号 (Unicodeカテゴリ L*, N*, S*) およびその関連する句読点を、 最初の整形行発生要素内(最初の文字)として表します。 これらのテキスト全体を first-letter text(最初の文字テキスト)と呼びます。 ::first-letter 疑似要素は いわゆる「イニシャルキャップ」や「ドロップキャップ」など、 典型的な組版効果を作るために利用できます。

例えば、以下の規則は 2行分のドロップキャップを レベル2見出しの直後の段落すべてに作成します。 initial-letter プロパティは [CSS-INLINE-3] で定義されています:
h2 + p::first-letter { initial-letter: 3; }

注: 最初の文字は実際には数字の場合もあります。 例:「67 million dollars is a lot of money.」の "6"。

最初の文字自身と隣接する句読点を個別にスタイリングできるよう、 関連する前置句読点は ::prefix サブ疑似要素::first-letter::prefix)で、 関連する後置句読点は ::suffix サブ疑似要素::first-letter 疑似要素::first-letter::suffix)で表されます。 詳細は § 2.2.1 最初の文字と関連句読点 を参照してください。

2.2.1. 最初の文字と関連句読点

CSS Text 3 § 1.4 Characters and Letters にて説明されている通り、 文字組字単位は 複数のUnicodeコードポイントを含む場合があります。 例えば、結合文字は基底文字と一体化して扱う必要があります。 また、言語によっては特定の文字の組み合わせをどのように扱うか追加の規則がある場合があります。 例えばオランダ語では、要素の先頭に "ij" の文字組み合わせが現れた場合、 両方の文字を ::first-letter 疑似要素内とみなすべきです。[UAX29] 最初の文字の選択にあたり、 UAは 文字組字単位の定義を ::first-letter 疑似要素の 包含ブロックコンテンツ言語の first-letter伝統に合わせて調整するべきです。

前置・後置の句読点も first-letter text(最初の文字テキスト)の一部として ::first-letter 疑似要素に含める必要があります:

非公式には、first-letter textのパターンは (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

詳細は CSS Text 3 § 1.4 Characters and Letters および CSS Text 3 § E Characters and Properties を参照してください。文字組字単位とそのUnicodeプロパティについての情報は [CSS-TEXT-3]

2.2.2. 最初の文字テキストの検出

::first-line と同様に、 ::first-letter 疑似要素は ブロックコンテナに付与された場合のみ効果があります。 その first-letter text は、インラインレベル内容のうち、 インライン整形コンテキストに参加する 発生要素最初の整形行で 先頭に他のin-flow内容(画像やインラインテーブル等)がない場合の最初のものです。

この目的のため、マーカーボックスは、out-of-flowとして無視されます。 ただし、要素にin-flowの ::before または ::after 内容がある場合、 first-letter text は その生成された内容も含めた要素内容から選択されます。

例: 下記の規則 p::before {content: "Note: "} の後、 セレクター p::first-letter は "Note" の "N" に一致します。

一致するテキストが存在しない場合は、 first-letter text::first-letter 疑似要素もありません。

注: 最初の整形行が空の場合、::first-letter は何にも一致しません。 例えばこのHTML断片: <p><br>First... では、最初の行に文字が含まれないため ::first-letter は何にも一致しません。 特に "First" の "F" は一致せず、2行目に現れます。

注: ::first-line と同様、 first-letter textブロックコンテナ自身が ブロック整形コンテキストに参加しない場合、 祖先要素の first-letter text にはなりません。 例えば <DIV><P STYLE="display: inline-block">Hello<BR>Goodbye</P> etcetera</DIV> では DIV最初の文字 は "H" ではありません。 実際、DIV には 最初の文字はありません。

first-letter text の一部が改行で次行に回された場合、 その部分は ::first-letter 疑似要素の一部ではなくなります。

2.2.3. 最初の文字疑似要素の継承とボックスツリー構造

::first-letter 疑似要素は、 表す first-letter text の周囲に直ちにラップされます(そのテキストが子孫であっても)。 first-letter text が複数の ::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>

first-letter text を構成する文字がすべて同じ要素にない場合 (‘T<p>‘<em>T... のような場合)、 UAは ::first-letter 疑似要素 (および ::prefix::suffix サブ要素があればそれも)を、いずれかの要素またはすべての要素から生成するか、単に疑似要素を生成しないこともできます。 また、first-letter text が行頭にない場合 (双方向リオーダや、リスト項目markerlist-style-position: inside がある場合等)、 UAは疑似要素を生成する必要はありません。

::first-letter 疑似要素は すべての ::first-line 疑似要素内に含まれ、 したがって(間接的にでも)::first-line から継承します。 これは同じ行上の インラインボックスと同様です。

2.2.4. 最初の文字疑似要素のスタイリング

CSSでは ::first-letter 疑似要素 (および ::prefix::suffix サブ要素)は インラインボックスに類似しています。 以下のプロパティが ::first-letter::first-letter::prefix::first-letter::suffix 疑似要素に適用されます:

UAは他にもプロパティを適用してもよいですが、 どのような未記載プロパティでも ::first-letter に適用されることで その first-letter text の内容が変わってはなりません。::first-letter の表す内容が変化してはなりません。

注: CSSの以前のレベルでは、 UAは文字の形状に基づいて行高・幅・高さを選択したり、フォントサイズを概算したり、 レイアウト時にグリフアウトラインを考慮したりすることが許可されていました。 このような曖昧な魔法的仕様は利用例(ドロップキャップやレイズドキャップ)に対して適切な解決策ではなく、 相互運用性問題を引き起こしたため、意図的に排除されました。 ドロップキャップやレイズドキャップの明確な扱いについては initial-letter[CSS-INLINE-3])参照。

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 は何にも一致しません。 この疑似要素は、[fragment]自体でターゲットされたテキストにのみ一致します。

テスト
::spelling-error
::spelling-error 疑似要素は、 ユーザーエージェントによってスペルミスとしてフラグ付けされたテキスト部分を表します。
テスト
::grammar-error
::grammar-error 疑似要素は、 ユーザーエージェントによって文法的誤りとしてフラグ付けされたテキスト部分を表します。
テスト
::highlight(<custom-ident>)
::highlight() 関数型疑似要素は、 指定されたカスタムハイライトカスタムハイライト名で識別されるドキュメントの部分を表します。 <custom-ident> 引数は必須です。 詳細は [CSS-HIGHLIGHT-API-1] を参照してください。

ハイライト疑似要素は必ずしも要素ツリーに収まる必要はなく、 入れ子構造を守らずに任意に要素境界をまたいで適用されることがあります。

3.2. ハイライトのスタイリング

ハイライト疑似要素は レイアウトに影響せず、動的な環境でも高いパフォーマンスで適用できる限られたプロパティのみで スタイリングできます。また(相互運用性確保のため)、 必要領域内の描画が ハイライトオーバーレイの (UAが決定する)正確な境界に依存しないことが条件です。

以下のプロパティがハイライト疑似要素に適用されます:

他にもここに含めるべきプロパティはありますか?

注: 歴史的に(執筆時点でも)、color および background-color のみが相互運用的にサポートされています。

注: color プロパティは、 テキスト自体、すべてのライン装飾(下線、上線、打ち消し線)、 強調マーク(text-emphasis)に対して、 発生要素およびその祖先・子孫によって適用されたものすべての色を設定します。

上記に記載されていないプロパティで、適用プロパティの値を解決する必要があるものについては、 それらの算出値発生要素の値からコピーされ、 ハイライト疑似要素自身に指定された値は無視されます。 例:

特定のハイライト疑似要素について 著者起源で色が指定されている場合、 その色は指定どおりに尊重されなければなりません。 つまりUAは追加処理(半透明ウォッシュを使うなど)をしてはなりません。 ただし著者起源に色指定がない場合は、 UAが追加の色処理を行うことがあります。

注: この仕様は、指定された著者スタイルシートを解釈するすべてのユーザーエージェント間で 色のコントラストが保たれることを保証するためのものです。

ベンダープレフィックス付きプロパティ(例:-webkit-text-fill-color)は ハイライト疑似要素には適用できません。

3.3. UAのデフォルトスタイル

UAスタイルシートのデフォルトへの追加として、以下を推奨します:

/* デフォルトのスペル/文法エラーのスタイルを調整可能な方法で表現 */
: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では制御できません。

CSSで制御可能な方法で UAによるハイライト表示の調整については Issue 6853で議論中です。

3.3.1. ペアのデフォルト

互換性維持のため、ペアのデフォルトハイライト色used値としてのみ使用されるべきであり、 colorbackground-colorcascaded value著者起源(またはその値が著者起源から継承)でなければならない。 ハイライト色が revert または revert-layer の場合、 カスケードをロールバックした後の起源が cascaded valueoriginを決定します。

注: この規則は互換性維持のためであり、 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. カスケードと要素ごとのハイライトスタイル

各要素は、その要素自身のアクティブなハイライトオーバーレイ部分を描画し、 その部分には該当するハイライト疑似要素のスタイルが適用されます。 その要素が発生要素である場合です。 複数のスタイルが競合した場合は、カスケードによって勝者が決定されます。

サポートされるプロパティがカスケードで値を持たない場合や、inherit または unset が指定された場合、 その指定値は 親要素の該当ハイライト疑似要素から継承されて決定されます。 この挙動は、そのプロパティが継承プロパティかどうかに関わらず発生します。

さらに、ハイライト疑似要素ルート要素に由来する場合、 color の継承値は currentColor となり、 初期値ではありません。

すべてのカスタムプロパティは、 そのプロパティがinheritで登録されているかどうかに関係なく、 発生要素から継承されます。

テスト
例えば、以下の規則が適用された場合:
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 は UAのデフォルトスタイルが適用されます。 これはカスタムプロパティのみ定義されていて、見た目に影響するプロパティがないためです。 divの選択ハイライトは、選択された内容に緑色の背景を適用し、 10pxの青色アンダーラインとなります。 --background-color--decoration-thickness の カスタムプロパティは div::selection 疑似要素に指定がないため、 発生元の div 要素から継承され、 さらにそれらはrootから継承されます。 一方 --decoration-colordiv::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を用いて、 そのテキスト(および装飾)をすべての ハイライトオーバーレイ背景の上に再描画します。

注: これはシャドウとは異なり、 ライン装飾や強調マークは 関連するテキストのために描画されるハイライトオーバーレイの背景によって 隠れないことを意味します。

この目的のため、currentColorハイライト疑似要素colorプロパティに指定された場合、 それは直下のアクティブな ハイライト疑似要素レイヤーの colorを表し、 最終的にはそれ以外の色(発生要素疑似要素::first-line::first-letter など)が 適用したもの)にフォールバックします。

注: 要素自身のテキスト装飾(ライン装飾強調マークの両方)は、 colorcurrentColor でない場合、 疑似要素自身の色で描画され、元の色や塗り指定は無視されます。

ハイライト疑似要素が導入するテキスト装飾は、 背景と同じ順序で重ねられ、 テキスト本来の装飾の上に重なり、それぞれの色で描画されます。 通常の描画順序が適用されるため、 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はcolor および background-color(アルファチャンネル含む)を 指定通りに尊重しなければなりません。 しかし置換内容の場合、UAは半透明のウォッシュを生成し、 選択部分の下にコンテンツが透けて見えるようにするべきです。 このウォッシュは、指定された background-colortransparent でなければその色で、 transparent なら指定された color で塗られますが、 UAはアルファチャンネルを調整しても構いません。

テスト

3.7. ハイライトのセキュリティ考慮事項

スペルおよび文法エラーのスタイリングは ユーザーの辞書内容(ユーザー名やアドレス帳の内容なども含まれる場合がある!)に関する情報漏洩につながり得るため、 ::spelling-error および ::grammar-error を実装するUAは、 これらのハイライトされた区間のスタイルを ページから読み取れないようにしなければなりません。

4. ツリー従属疑似要素

ツリー従属疑似要素は常にボックスツリー内に収まります。 それらは継承可能なプロパティを 発生要素から継承し、 非継承プロパティは通常通り初期値となります。[CSS-CASCADE-4] このうち一部は 完全スタイル可能疑似要素であり、 実際の要素に適用できるすべてのプロパティが 完全スタイル可能疑似要素にも適用されます。

テスト

4.1. 生成コンテンツ疑似要素: ::before および ::after

算出されたcontent 値が none でない場合、 これらの疑似要素は 発生要素の直下の子として 指定された content の内容を持つ ボックスを生成します。

::before
スタイル可能な子疑似要素であり、 発生要素の実際の内容の直前に位置します。
::after
スタイル可能な子疑似要素であり、 発生要素の実際の内容の直後に位置します。
テスト

::before::after完全スタイル可能疑似要素であり、 適用できるプロパティに制限はありません。

例えば、次のルールは <p> 要素で class 属性が note の場合、 内容の前に "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 は無効であり、 display の 算出値は ::marker 上では list-item の特性を常に失います。

::marker::prefix::suffix のサブ要素も必要かどうか?

4.3. プレースホルダー入力: ::placeholder 疑似要素

::placeholder 疑似要素は、 入力フィールド内のプレースホルダー文字列(入力内容を表し、フォームの記入方法をユーザーに示唆するヒントとなる文字列)を表します。 例えば日付入力フィールドの場合、 「YYYY/MM/DD」というプレースホルダー文字列により、数値の日付を年月日順で入力することが明示されます。 これは ツリー従属疑似要素です。

テスト
例えば、 [HTML] のセマンティクスによれば、 placeholder 属性は input 要素および textarea 要素で プレースホルダー文字列を提供します。 ::placeholder 疑似要素は、 そのような文字列が表示されているときにそれを表します。

注: :placeholder-shown 疑似クラスも存在し、 プレースホルダー文字列が表示されている(実際の)要素に適用され、 そのような要素を特別にスタイリングするために使えます。 ::placeholder は プレースホルダー文字列そのものを表すため、できることは比較的限られています。

::first-line 疑似要素に適用できるすべてのプロパティは、 ::placeholder 疑似要素にも適用可能ですが、 [CSS-INLINE-3] で定義されたものは除きます。

インタラクティブメディアでは、ユーザーが入力するとプレースホルダー文字列が隠されることが多いですが、 これは必須ではなく、入力内容とプレースホルダー文字列が同時に表示される場合もあります。 挙動の詳細はUA依存です。 静的メディア(印刷など)では、ユーザーが入力した後でもプレースホルダー文字列は残ります。

著者は text-align をサポートプロパティ一覧に入れることを望んでいるようです。 例:こちらのコメント参照。

注: ::placeholder が 要素ツリー内に該当要素があるプレースホルダーを指すようにすべきという要望もあります。 その仕様方法は未定ですが、検討の価値はありそうです。 Issue 2417 参照。

5. 要素裏付け疑似要素

要素裏付け疑似要素は、 ほとんどのCSSや他のプラットフォーム機能と、 実際の要素として(実際に選択不可な実要素である場合も多い)連携します。

要素裏付け疑似要素は常に ツリー従属です。 特に指定がなければ 完全スタイル可能であり、 発生要素から継承します(標準的なツリー従属疑似要素と同様)。 ただし、他の要素から継承するよう定義される場合もあります。 (例:::part() は シャドウツリー内の要素の親から継承します。)

すべての 疑似クラスおよび 疑似要素は、 要素裏付け疑似要素(例:x-button::part(label):hoverx-button::part(label)::before)の後にも構文上許可されます。 これは、疑似要素が 型セレクタであるかのように扱われるためですが、 次のものは一致しません:

要素裏付け疑似要素は 実際の要素(現在のツリーでアクセスできないものも含む)を表すと定義することができます。 その場合、上記で特に禁止されていないすべての疑似クラスと疑似要素は その実要素上と同様に一致します。 そうでない場合は、一致する疑似クラスを定義する必要がありますが、 特に指定がなければ、 ツリー従属疑似要素で許可されている疑似クラスは 要素裏付け疑似要素でも常に許可されます。

5.1. ファイルセレクタボタン: ::file-selector-button 疑似要素

::file-selector-button 疑似要素は、 UAがそのようなボタンを描画する場合、 <input> 要素( type=file )内の <button> を対象とします。

テスト

::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 を返しますが、 サブ疑似要素の場合は parentCSSPseudoElement を、 elementElement を返します。

pseudo(type) メソッドは 引数で指定されたサブ疑似要素を表す CSSPseudoElement インターフェースを返します(そのような サブ疑似要素が存在し有効な場合)。 そうでなければ null を返します。 下記 pseudo() 参照。

注: このインターフェースは将来的に他の疑似要素型や CSSStyleDeclarationstyle 属性によるスタイル情報の設定などに拡張される可能性があります。 現在の機能は [web-animations-1] をサポートするために限定されています。

7.2. pseudo() メソッド(Element インターフェース)

Element インターフェースに新しいメソッドが追加され、 指定要素によって生成された指定型の疑似要素を取得できます:

partial interface Element {
  CSSPseudoElement? pseudo(CSSOMString type);
};
pseudo(CSSOMString type) メソッドは CSSPseudoElement のインスタンスを取得するために使います。 呼び出された際は、以下の手順を実行します:
  1. type引数をCSS文法に従ってパースし、 type に結果を格納します。

  2. type が失敗の場合、null を返します。

  3. それ以外の場合は、CSSPseudoElement オブジェクトを返します。 これは、type セレクタに一致し、this発生要素となる疑似要素です。

同じ疑似要素および同じ発生要素を表す返り値は、 観測可能な限り常に同じ CSSPseudoElement オブジェクトでなければなりません。 (UAは利便性やパフォーマンスのため、観測できない範囲でオブジェクトを破棄・再生成しても構いません)

pseudo() メソッドの返値の同一性・寿命・null性(およびエラーケース)については議論中です。 Issue 3607Issue 3603 参照。

7.3. getComputedStyle()

第2引数 pseudoEltハイライト疑似要素を参照する場合、 getComputedStyle() は、該当ハイライトがアクティブで他のハイライトが非アクティブであるかのようにスタイルを返します。 これにより、実際のハイライト状態に依存した結果による曖昧さやプライバシーリスクを避けられます。

8. 互換性構文

既存のCSS Level 2 [CSS2] 用スタイルシートとの互換性のため、 ユーザーエージェントは ::before::after::first-letter::first-line 疑似要素に対して 旧式のコロン1個表記(:before, :after, :first-letter, :first-line)も受け付けなければなりません。

セキュリティ考慮事項

ハイライトについては § 3.7 ハイライトのセキュリティ考慮事項 を参照してください。

プライバシー考慮事項

このモジュールに対する新たなプライバシー考慮事項はありません。

変更点

2022年12月30日 作業草案以降の主な変更点:

2020年12月31日作業草案(2020年12月31日作業草案)以降の主な変更点:

2019年2月25日作業草案(2019年2月25日作業草案)以降の主な変更点:

2016年6月7日作業草案(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"で区別されます。例:

これは情報的な例です。

情報的な注記は「注」で始まり、class="note"で区別されます。例:

注:これは情報的な注記です。

アドバイス文は、特別な注意を促すように規範的な内容として強調表示され、<strong class="advisement">で区別されます。例: UAはアクセシビリティ対応の代替手段を必ず提供しなければなりません。

テスト

この仕様の内容に関するテストは、このような “テスト” ブロックで記載される場合があります。 これらのブロックは非規範的です。


適合クラス

本仕様への適合性は、3つの適合クラスについて定義されています:

スタイルシート
CSS スタイルシート
レンダラー
UA。スタイルシートの意味論を解釈し、それらを使用した文書を描画するもの。
オーサリングツール
UA。スタイルシートを作成するもの。

スタイルシートが本仕様に適合するには、 このモジュールで定義されている構文を使うすべての記述が、 一般的なCSS文法および各機能ごとの個別文法に従って有効である必要があります。

レンダラーが本仕様に適合するには、 適切な仕様に従ってスタイルシートを解釈することに加え、 本仕様で定義されたすべての機能を正しくパースして文書を描画する必要があります。 ただし、デバイスの制限によりUAが文書を正しく描画できない場合でも、 それだけで非適合とはなりません(例:UAがモノクロモニター上で色を描画する必要はありません)。

オーサリングツールが本仕様に適合するには、 一般CSS文法および各機能ごとの個別文法に従い構文的に正しいスタイルシートを書き、 本モジュールに記載されたスタイルシートのその他すべての適合要件を満たす必要があります。

部分実装

著者が将来互換性のあるパース規則を活用してフォールバック値を指定できるようにするため、 CSSレンダラーは、サポートできないatルール・プロパティ・値・キーワード・構文などについては、必ず無効として(必要に応じて無視)扱わなければなりません。 特に、UAはサポートされない構成値のみを選択的に無視し、サポートされた値のみを1つの複数値プロパティ宣言で適用してはなりません。 いずれかの値が無効(=未サポート)とみなされる場合、CSSは宣言全体を無視することを要求します。

不安定/独自拡張機能の実装

将来の安定したCSS機能との競合を避けるため、 CSSWGは ベストプラクティス に従い、 不安定な機能独自拡張 を実装することを推奨します。

非実験的実装

仕様が候補勧告段階に達すると、非実験的実装が可能となり、 実装者は仕様通りに正しく実装できることを示せるCRレベルの機能について、プレフィックスなしでリリースすべきです。

CSSの実装間で相互運用性を確立・維持するため、 CSSワーキンググループは、非実験的CSSレンダラーがCSS機能のプレフィックスなし実装をリリースする前に、 実装報告(必要ならそのテストケースも)をW3Cに提出するよう求めます。 W3Cに提出されたテストケースはCSSワーキンググループによるレビューと修正の対象となります。

テストケースや実装報告の提出方法については、CSSワーキンググループのWebサイト https://www.w3.org/Style/CSS/Test/ を参照してください。質問は public-css-testsuite@w3.org メーリングリストへ。

索引

本仕様で定義される用語

参照によって定義される用語

参考文献

標準規範参考文献

[COMPAT]
Mike Taylor. 互換性標準. 常時標準. URL: https://compat.spec.whatwg.org/
[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS 背景と枠線モジュール レベル3. 2024年3月11日. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS 分割モジュール レベル4. 2018年12月18日. FPWD. URL: https://www.w3.org/TR/css-break-4/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS カスケードと継承 レベル5. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-CASCADE-6]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS カスケードと継承 レベル6. 2024年9月6日. WD. URL: https://www.w3.org/TR/css-cascade-6/
[CSS-COLOR-4]
Chris Lilley; Tab Atkins Jr.; Lea Verou. CSS カラーモジュール レベル4. 2025年4月24日. CRD. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-ADJUST-1]
Elika Etemad; 他. CSS カラー調整モジュール レベル1. 2022年6月14日. CRD. URL: https://www.w3.org/TR/css-color-adjust-1/
[CSS-CONTENT-3]
Elika Etemad; Dave Cramer. CSS 生成コンテンツモジュール レベル3. 2019年8月2日. WD. URL: https://www.w3.org/TR/css-content-3/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS 表示モジュール レベル4. 2024年12月19日. FPWD. URL: https://www.w3.org/TR/css-display-4/
[CSS-FONTS-4]
Chris Lilley. CSS フォントモジュール レベル4. 2024年2月1日. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-HIGHLIGHT-API-1]
Florian Rivoal; Sanket Joshi; Megan Gardner. CSS カスタムハイライトAPIモジュール レベル1. 2021年12月15日. WD. URL: https://www.w3.org/TR/css-highlight-api-1/
[CSS-INLINE-3]
Elika Etemad. CSS インラインレイアウトモジュール レベル3. 2024年12月18日. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-LISTS-3]
Elika Etemad; Tab Atkins Jr.. CSS リストおよびカウンターモジュール レベル3. 2020年11月17日. WD. URL: https://www.w3.org/TR/css-lists-3/
[CSS-MULTICOL-2]
Florian Rivoal; Rachel Andrew. CSS マルチカラムレイアウトモジュール レベル2. 2024年12月19日. FPWD. URL: https://www.w3.org/TR/css-multicol-2/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS 疑似要素モジュール レベル4. 2022年12月30日. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-RUBY-1]
Elika Etemad; 他. CSS ルビ注釈レイアウトモジュール レベル1. 2022年12月31日. WD. URL: https://www.w3.org/TR/css-ruby-1/
[CSS-SCOPING-1]
Tab Atkins Jr.; Elika Etemad. CSS スコープモジュール レベル1. 2014年4月3日. FPWD. URL: https://www.w3.org/TR/css-scoping-1/
[CSS-SHADOW-PARTS-1]
Tab Atkins Jr.; Fergal Daly. CSS シャドウパーツ. 2018年11月15日. FPWD. URL: https://www.w3.org/TR/css-shadow-parts-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS 構文モジュール レベル3. 2021年12月24日. CRD. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TABLES-3]
François Remy; Greg Whitworth; David Baron. CSS テーブルモジュール レベル3. 2019年7月27日. WD. URL: https://www.w3.org/TR/css-tables-3/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS テキストモジュール レベル3. 2024年9月30日. CRD. URL: https://www.w3.org/TR/css-text-3/
[CSS-TEXT-4]
Elika Etemad; 他. CSS テキストモジュール レベル4. 2024年5月29日. WD. URL: https://www.w3.org/TR/css-text-4/
[CSS-TEXT-DECOR-4]
Elika Etemad; Koji Ishii. CSS テキスト装飾モジュール レベル4. 2022年5月4日. WD. URL: https://www.w3.org/TR/css-text-decor-4/
[CSS-UI-4]
Florian Rivoal. CSS 基本ユーザーインターフェースモジュール レベル4. 2021年3月16日. WD. URL: https://www.w3.org/TR/css-ui-4/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 値と単位モジュール レベル4. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-VARIABLES-1]
Tab Atkins Jr.. CSS カスケーディング変数用カスタムプロパティモジュール レベル1. 2022年6月16日. CR. URL: https://www.w3.org/TR/css-variables-1/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS 書字モード レベル3. 2019年12月10日. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS 書字モード レベル4. 2019年7月30日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS2]
Bert Bos; 他. カスケーディングスタイルシート レベル2 リビジョン1 (CSS 2.1) 仕様. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS2/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS オブジェクトモデル (CSSOM). 2021年8月26日. WD. URL: https://www.w3.org/TR/cssom-1/
[DOM]
Anne van Kesteren. DOM 標準. 常時標準. URL: https://dom.spec.whatwg.org/
[FILL-STROKE-3]
Elika Etemad; Tab Atkins Jr.. CSS 塗りと線モジュール レベル3. 2017年4月13日. FPWD. URL: https://www.w3.org/TR/fill-stroke-3/
[HTML]
Anne van Kesteren; 他. HTML 標準. 常時標準. URL: https://html.spec.whatwg.org/multipage/
[RFC2119]
S. Bradner. RFCで要件レベルを示すためのキーワード. 1997年3月. ベストカレントプラクティス. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. セレクタ レベル4. 2022年11月11日. WD. URL: https://www.w3.org/TR/selectors-4/
[UAX44]
Ken Whistler. Unicode 文字データベース. 2024年8月27日. Unicode Standard Annex #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 標準. 常時標準. URL: https://webidl.spec.whatwg.org/

参考情報文献

[CSS-BACKGROUNDS-4]
Bert Bos; Elika J. Etemad; Lea Verou. CSS 背景と枠線モジュール レベル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://www.w3.org/TR/css-cascade-4/
[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS 表示モジュール レベル3. 2023年3月30日. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS22]
Bert Bos. カスケーディングスタイルシート レベル2 リビジョン2 (CSS 2.2) 仕様. 2016年4月12日. FPWD. URL: https://www.w3.org/TR/CSS22/
[HTML5]
Ian Hickson; 他. HTML5. 2018年3月27日. REC. URL: https://www.w3.org/TR/html5/
[SELECTORS-3]
Tantek Çelik; 他. セレクタ レベル3. 2018年11月6日. REC. URL: https://www.w3.org/TR/selectors-3/
[UAX29]
Josh Hadley. Unicode テキスト分割. 2024年8月28日. Unicode Standard Annex #29. URL: https://www.unicode.org/reports/tr29/tr29-45.html
[WEB-ANIMATIONS-1]
Brian Birtles; 他. Web アニメーション. 2023年6月5日. WD. URL: https://www.w3.org/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() メソッドの戻り値の識別性・寿命・null性 (およびエラーケース)はまだ議論中です。 詳細は Issue 3607Issue 3603 を参照。