CSSカラー調整モジュール レベル1

W3C勧告候補ドラフト

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2025/CRD-css-color-adjust-1-20250812/
最新の公開バージョン:
https://www.w3.org/TR/css-color-adjust-1/
編集者ドラフト:
https://drafts.csswg.org/css-color-adjust-1/
以前のバージョン:
履歴:
https://www.w3.org/standards/history/css-color-adjust-1/
実装報告:
https://wpt.fyi/results/css/css-color-adjust?label=experimental&label=master&aligned
フィードバック:
CSSWG課題リポジトリ
仕様内インライン
編集者:
Elika J. Etemad / fantasai (Apple)
(Microsoft)
(Google)
Tab Atkins Jr. (Google)
この仕様への編集提案:
GitHub エディター
テストスイート:
https://wpt.fyi/results/css/css-color-adjust/

概要

このモジュールは、ユーザーエージェントによる自動色調整のモデルと制御を導入し、ユーザーの「ダークモード」、コントラスト調整、または特定の色設定などの好みに対応します。

CSSは、構造化文書(HTMLやXMLなど)のレンダリングを画面、紙などで記述するための言語です。

この文書のステータス

このセクションは、公開時点でのこの文書のステータスについて説明します。 現在のW3C公開物の一覧や、この技術報告書の最新改訂版はW3C標準とドラフトのインデックスで確認できます。

この文書はCSSワーキンググループによって勧告候補ドラフトとして勧告トラックを用いて公開されました。 勧告候補として公開されることは、W3Cおよびそのメンバーによる支持を意味するものではありません。 勧告候補ドラフトは、ワーキンググループが次の勧告候補スナップショットに含める予定の変更を前回の勧告候補から統合したものです。

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

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

この文書は2023年11月3日W3Cプロセス文書に準拠して管理されています。

この文書はW3C特許ポリシーの下で運営されるグループによって作成されました。 W3Cはグループの成果物に関連して提出された特許開示の公開リストを管理しており、 そのページには特許の開示方法の説明も記載されています。 個人が本質的な請求項を含むと信じる特許を実際に知っている場合は、W3C特許ポリシー第6節に従って情報を開示する必要があります。

1. はじめに

この仕様は、ユーザーエージェントによる色の自動調整の制御に関連する3つの新しい機能を導入します:

prefers-color-schemeprefers-contrastforced-colorsメディアクエリ [MEDIAQUERIES-5]と合わせて、 このモジュールは著者とユーザー間のカラースキームの調整を可能にします。

1.1. 値の定義

この仕様は、CSSプロパティ定義の慣例[CSS2])と、値定義の構文[CSS-VALUES-3])に従います。 本仕様で定義されていない値型はCSS Values & Units [CSS-VALUES-3]で定義されています。 他のCSSモジュールとの組み合わせにより、これらの値型の定義が拡張される場合があります。

定義ごとに記載されたプロパティ固有の値に加え、 この仕様で定義されるすべてのプロパティは、 CSS全体キーワードもプロパティ値として受け付けます。 可読性のため、これらは明示的に繰り返していません。

2. 優先カラースキーム

オペレーティングシステムやユーザーエージェントは、ユーザーにユーザーインターフェース要素の優先カラースキームを選択できる機能を提供することが多いです。 このカラースキームは、 通常、ユーザーエージェントのナビゲーションインターフェースやページ内のインターフェース要素(フォームコントロールやスクロールバーなど)のレンダリングに反映されます。

UAは、ユーザーが閲覧するページのカラースキームに対する好みを示すこともでき、 著者に対してページをその色の好みに合わせて調整するよう要求することができます。 (このような好みを必ずしも表明する必要はありません; ユーザーはオペレーティングシステムのインターフェースの色について好みを持っていても、 それをページに適用したくない場合もあります。)

最も一般的なカラースキームの好みは以下の通りです:

ライトダークカラースキームは、厳密なカラーパレット(白黒など)を示すものではなく、 さまざまなパレットの範囲を表します。 特定の色を保証するには、著者がその色を明示的に指定する必要があります。 そのため、 デフォルトや<system-color>の色と著者指定の色を組み合わせても、 特定のコントラストレベルは保証できません。 可読性を確保するためには、前景色と背景色の両方を同時に設定することが必要な場合があります [WCAG21]

ページがユーザーの優先カラースキームに適応できるように、 ユーザーエージェントはprefers-color-schemeメディアクエリを ユーザーの優先カラースキームに一致させます。 [MEDIAQUERIES-5] これを補完するため、本仕様で定義されるcolor-schemeプロパティは、 UAが提供するUIおよびページ内の色に対して適切なカラースキームを著者が指定できるようにします。

ユーザーエージェントは追加のカラースキームをサポートしてもよいですが、 CSSは追加のカラースキームのネゴシエーションをサポートしません: ユーザーエージェントはこれらのスキームの標準化を推進すべきであり、 prefers-color-schemecolor-schemeで追加の値を反映できるようにすべきです。

2.1. 優先カラースキームの選択:color-schemeプロパティ

名前: color-scheme
値: normal | [ light | dark | <custom-ident> ]+ && only?
初期値: normal
適用対象: すべての要素とテキスト
継承: はい
パーセンテージ: 該当なし
算出値: キーワードnormal、または指定されたカラースキームキーワードの順序付きリスト
標準順序: 文法通り
アニメーションタイプ: 離散
テスト

prefers-color-schemeメディア機能によって 著者はページの色をユーザーの優先カラースキームに合わせて調整できますが、 ページの多くの部分(フォームコントロール、スクロールバーなど)は著者が制御できません。 color-schemeプロパティは、 要素がどのカラースキームでレンダリングされるよう設計されているかを示すことができます。 これらの値はユーザーの設定とネゴシエートされ、 フォームコントロールやスクロールバーなどのデフォルト色に影響する 使用カラースキームを決定します。 (§ 2.2 使用カラースキームの効果参照。)

注: 多くのページがカラースキーム対応前に作成されたため、 ユーザーエージェントは制御下の要素の色を自動で調整できず、 周囲のページと色のコントラストが読みにくくなる可能性があります。

ホスト言語はページ対応カラースキームを定義できます。 これはそのページ上の全要素でデフォルト対応しているカラースキームのリストです。

注: [HTML]color-scheme meta タグを指定して、ページ対応カラースキームを設定できます。

値は以下の通りに定義されます:

normal

要素がページ対応カラースキームをサポートすることを示します。 それらが設定されていれば、またはそれ以外の場合はカラースキームを全くサポートしないことを示します。

light

要素がライトカラースキームをサポートすることを示します。

dark

要素がダークカラースキームをサポートすることを示します。

only

要素に対してユーザーエージェントがカラースキームの上書きを禁止することを示します。

<custom-ident>

<custom-ident>値は意味を持たず、将来の互換性のためだけに存在します。 将来追加されるカラースキームがレガシーユーザーエージェントでcolor-scheme宣言を無効化しないようにするためです。 ユーザーエージェントは<custom-ident>値に意味を持たせてはなりません。 追加で認識されるカラースキームはこのプロパティの文法に明示的に追加される必要があります。

注: 混乱を避けるため、 著者向けのチュートリアルやリファレンスでは<custom-ident>を省略するべきです。

normallightdarkonlyキーワードは、 このプロパティ内で有効な<custom-ident>ではありません。

注: ライトおよびダーク カラースキームは特定のカラーパレットではありません。 例えば、真っ白の背景に黒文字とセピア調の暗い背景に淡い文字の組み合わせはどちらもライトカラースキームとみなされます。 特定の前景色や背景色を保証したい場合は明示的に指定する必要があります。

要素の使用カラースキームの決定方法は以下の通りです:
  1. ユーザーの優先カラースキームprefers-color-schemeメディア機能で示される)が リストされたカラースキームに含まれ、ユーザーエージェントがサポートしている場合、 それがその要素の使用カラースキームとなります。

  2. そうでない場合、 ユーザーが選択したカラースキームを強制的に優先する意向を示し、 かつ要素のonlyキーワードが存在しない場合は、 ユーザーエージェントはユーザーの優先カラースキームカラースキームを上書きしなければなりません。 § 2.3 カラースキームの上書き参照。

  3. それ以外の場合、 ユーザーエージェントがリスト内の少なくとも1つのカラースキームをサポートしていれば、 使用カラースキームは リスト内の最初にサポートされているカラースキームです。

  4. さらにそれ以外の場合、 使用カラースキームはブラウザーのデフォルトです。 (normalと同じ。)

注: ユーザーエージェントは特定のカラースキームサポートする義務はありません。 そのため、color-scheme: darkのように単一キーワードのみを使用して 必須カラースキームを示しても、 要素のレンダリングに必ずしも影響するとは限りません。

ユーザーのライト/ダーク表示の好みに応じて prefers-color-schemeメディア機能で 使用する色を変更するページは、 ブラウザー制御UI(スクロールバー、入力等)も シンプルなグローバル宣言で合わせることができます:
:root {
  color-scheme: light dark;
}

ページがのみ<system-color>を使う場合、 上記のcolor-scheme宣言で 著者が@mediaを使わなくても ユーザーの優先カラースキームが反映されます。

ページがすべてのカラースキームに合理的に対応できない場合(ブランディングや演出等)でも、 color-schemeで 対応可能なカラースキームを明示でき、UIがそのスキームに合わせられます。

ページのカラースキームが主にライトの場合、以下で明示できます:

:root {
  color-scheme: light;
}

ページが主にダークの場合も、同様に明示することでより一貫した見た目になります:

:root {
  color-scheme: dark;
}

もちろん、両方のカラースキームに対応するほうが望ましいです。

ページ全体が複数のカラースキームに対応できても、 サブセクションだけ特定のカラースキームでレンダリングしたい場合があります。

例として、スタイルガイドでライト/ダークテーマのUI例を示す場合など、 以下のように指定できます:

:root {
  color-scheme: light dark;
}

.light-theme-example {
  color-scheme: light;
}

.dark-theme-example {
  color-scheme: dark;
}

.light-theme-example.dark-theme-exampleをルートにするサブセクションだけ ライトダークテーマに特化され、 その他のページ部分はユーザーの好みに従います。

注: color-scheme: light lightのようにキーワードを繰り返しても、 最初のキーワードの効果以上にはなりません。

2.2. 使用カラースキームの効果

すべての要素に対し、 ユーザーエージェントは以下を使用カラースキームに合わせなければなりません:

ルート要素では、 使用カラースキームはさらに canvasの表面色、 およびビューポートのスクロールバーにも影響を与えなければなりません。

期待される色のコントラストを維持するために、 通常透明なcanvas上で描画される埋め込み文書の場合 (HTMLの iframe 要素など)、 要素の使用カラースキームと 埋め込み文書ルート要素の使用カラースキームが一致しない場合、 UAは透明canvasの代わりに埋め込み文書の使用カラースキームに適した 不透明なcanvas色(Canvas色)を使用しなければなりません。 このルールは、グラフィックス用要素で埋め込まれる文書 (例: img 要素によるSVG文書)には適用されません。

注: 上記の少数の調整項目を除き、 ユーザーエージェントは一般にユーザーのカラースキームの好みに合わせて ページをさらに調整することはありません。 なぜなら、ページの表示を誤って損なうリスクが高いためです。 ただし、ユーザーが特定の色指定(アクセシビリティなど)が必要な場合、 より積極的な変更が適用される場合があります。 § 3 強制カラーパレット参照。

2.3. カラースキームの上書き

ユーザーが特定のカラースキームに強制的な好みを示し、 著者が(onlyキーワードで)これを禁止していない場合、 ユーザーエージェントはカラースキームを上書きして、 使用カラースキームを ユーザーの優先カラースキームに強制します。 要素がそのカラースキームをサポートしない場合、 ユーザーエージェントはその他の色もこの選択したカラースキームに自動調整しなければなりません。 例:明度の反転などを行い、ページの可読性に必要な色コントラストを維持します。 この場合、UAは置換要素、背景画像、その他外部リソース内の色も適切に自動調整することがあります。

注: このような自動調整の詳細はUA定義であり、 UAごとに異なる場合があります。 ただし、強制色モードのように すべての色を固定パレットに強制することが目的ではなく、 ページ上のすべての色を ダークまたはライトカラースキームのいずれかに合わせることが目的です。

例えばUAが「ダークルーム」モードを持つ場合、 すべてのページをダークカラースキームに強制できます。

すでにダークカラースキームをサポートし、 color-schemeプロパティ または color-scheme meta nameで明示しているページの場合、 dark値が prefers-color-scheme メディアクエリ で報告され、ダーク 使用カラースキームが選択される以外の影響はありません。

しかし、ページがダークカラースキームを明示的にサポートしておらず、 かつcolor-scheme: only lightでこの自動調整を明示的に禁止していない場合、 このモードはページの色を自動調整して 強制的に希望するダークカラースキームに適合させます。

3. 強制カラーパレット

強制色モードは 色コントラストによってテキストの読みやすさを高めることを目的としたアクセシビリティ機能です。 視力が低い方は、 前景色と背景色の間に特定のコントラストがあると コンテンツをより快適に読むことができます。

オペレーティングシステムはWindowsの高コントラスト黒地白文字や高コントラスト白地黒文字など、 組み込みのカラーテーマを提供できます。 ユーザーは独自のテーマ(低コントラストや色相コントラストなど)を カスタマイズすることもできます。

強制色モードでは、 ユーザーエージェントがページ上でユーザーの好みのカラーパレットを強制し、 著者が選択した特定プロパティの色を上書きします。 § 3.1 強制色モードで影響を受けるプロパティ参照。 また、テキストの下に「裏板」(::selection疑似要素の背景のようなもの)を 強制して可読性のための十分なコントラストを確保することもあります。

ページが強制色モードに対応できるように、 ユーザーエージェントはforced-colorsメディアクエリを一致させ、 必要なカラーパレットをCSSシステム色で提供しなければなりません ([CSS-COLOR-4]参照)。 さらに、UAがLab明度に基づき Canvas色が明るい(L > 67%)または暗い(L < 33%)と判断した場合、 prefers-color-schemeメディアクエリの 適切な値に一致させ、color-schemeに対応する ユーザーの好みを反映させなければなりません。 これによりライト/ダークカラースキームをサポートするページは 強制カラースキームに自動調整しやすくなります。 上記の明/暗閾値間での挙動はUA定義で、 ユーザーの好みとしてlightまたはdarkのいずれかを仮定する場合があります。

強制色テーマエミュレーションデータ取得が "none"でない場合、 ユーザーエージェントは上記OSカラーテーマをバイパスし、 代わりにユーザーが強制色モード強制色モードエミュレーションカラーパレットで 有効化したかのように動作すべきです。 その値は強制色テーマエミュレーションデータで決定されます。

3.1. 強制色モードで影響を受けるプロパティ

強制色モードが有効で、 かつ要素のforced-color-adjustauto(下記参照)の場合、 その要素のすべてのプロパティの<color>成分はユーザーの好みのカラーパレットに強制調整されます。

具体的には、強制色モードは以下の色プロパティ(およびそのショートハンド)に適用されます。 これは執筆時点で存在する色プロパティのリストですが、今後プロパティが追加されるにつれ完全なリストではなくなる場合があります:

プロパティの各<color>成分について、 算出値システム色以外の色の場合、 使用値は以下のように強制的にシステム色に変更されます:

さらに:

UAはこれらの強制色モードのヒューリスティックをさらに調整し、 より良いユーザー体験を提供してもかまいません。

著者はcolor-mix()のような機能を強制色モードで使用することもできます。 この場合、算出値は通常通り動作しますが、 使用値は適切なシステム色に上書きされます。
.example {
  color: color-mix(in srgb, CanvasText, Canvas);
}

算出値colorについて CanvasTextCanvasシステム色の50-50ブレンドとなります。 この値は子孫に継承され、computedStyleMap() などのAPIで参照できます。

使用値colorについて UAが選択したシステム色、例:CanvasTextになります。

3.2. 強制カラーパレットから除外する:forced-color-adjustプロパティ

名前: forced-color-adjust
値: auto | none | preserve-parent-color
初期値: auto
適用対象: すべての要素とテキスト
継承: はい
パーセンテージ: 該当なし
算出値: 指定通り
標準順序: 文法通り
アニメーションタイプ: アニメーション不可

forced-color-adjustプロパティは、 著者が特定の要素を強制色モードから除外し、 CSSによる色の完全な制御を復元することを可能にします。 値の意味は以下の通りです:

auto

要素の色は強制色モードでUAによって自動的に調整されます。

none

要素の色は強制色モードでUAによって自動的に調整されません。

著者は自身でユーザーの色・コントラストニーズに対応した色調整を行う場合、 及びその要素に対してUAのデフォルト調整を変更し、より適切なユーザー体験を提供する必要がある場合のみこの値を使うべきです。

preserve-parent-color

強制色モードでは、 colorプロパティが親から継承される場合 (カスケード値が無い、またはカスケード値currentColorinheritや他の親から継承されるキーワードの場合)、 親の使用色のcolor値に算出されます。

その他の点ではnoneと同様に動作します。

注: この値は埋め込みSVG要素に外部ドキュメントのテキスト色を受け取らせ (強制色モードの調整とも一貫性を保つ)合理的な挙動を得るためだけに意図されています。 それ以外の場合はSVGの色をそのまま保持するためのデフォルトとなります。 強制色モードは通常イラストには有効に働きません。

SVGコンテンツを壊さないために、 UAはUAスタイルシートに以下のルールを追加することが期待されます:

@namespace "http://www.w3.org/2000/svg";
svg|svg { forced-color-adjust: preserve-parent-color; }
svg|foreignObject { forced-color-adjust: auto; }

UAは、ルート要素に設定されたforced-color-adjust値を ドキュメントビューポートに伝搬させる必要があります (例えばcanvasの背景などに影響します)。 ただしforced-color-adjustは HTMLのbodyからは 伝搬しません

テスト

4. パフォーマンスに基づく色調整

ほとんどのモニターでは、 著者が選択した色によってデバイスのパフォーマンスに大きな違いはありません。 白背景で表示しても黒背景で表示しても、どちらもほぼ同じ容易さで表示できます。

しかし、いくつかのデバイスではこの前提が当てはまらない制約や特性があります。 例えば、プリンターは白い紙に印刷するのが一般的です。 白背景の文書は背景描画にインクを使いませんが、黒背景の文書は背景色を塗りつぶすため大量のインクを消費します。 これは見た目が悪くなるだけでなく、紙自体に悪影響を及ぼすこともあり、インクの追加消費による印刷コストも大幅に増加します。 また、テキストを黒にするか濃いグレーにするかといった小さな違いでも、印刷時には黒インク単体とシアン・マゼンタ・イエローの混合インクの使用となり、 インク消費量と解像度に違いが生じます。

そのため、状況によってはユーザーエージェントが著者の指定したスタイルを特定のコンテキストで変更し、 出力デバイスにより適したものに調整したり、ユーザーの意向に沿うようにします。 ただし、文書が重要で配慮された色使いをしている場合は、ユーザーもその配色を尊重してほしいと考えることがあります。 そこで、ユーザーエージェントにページの色指定を尊重するよう示唆できるプロパティを本節で定義します。

名前: print-color-adjust
値: economy | exact
初期値: economy
適用対象: すべての要素
継承: はい
パーセンテージ: 該当なし
算出値: 指定キーワード
標準順序: 文法通り
アニメーションタイプ: 離散
テスト

print-color-adjustプロパティは、 プリンター等の出力デバイスでコストが高くなったり不適切となる可能性のある色指定やスタイル(例:暗背景に明るい文字など)を ユーザーエージェントがどう扱うべきかを示唆します。 ユーザーエージェントがユーザーにこの表示方法を制御させる場合は、 print-color-adjustによるヒントよりも ユーザーの意向を優先して尊重しなければなりません。 値は以下の通りです:

economy
ユーザーエージェントは出力デバイスに適した必要かつ適切な調整をページのスタイルに加えるべきです。

例:印刷時は背景を無視したり、テキスト色を十分に暗く調整して インク消費を最小限に抑えることがあります。

exact
この値は、指定要素で色やスタイルを重要かつ意味のある用途で使っていることを示し、 ユーザーからの指示がない限り調整や変更をしないよう求めます。

例:地図サイトで印刷用の案内に白とライトグレー背景で段差を付けた「ゼブラストライプ」を使う場合、 このストライプが消えて真っ白な背景になると、車内で素早く見分ける際に案内が読みづらくなります。

UAはルート要素に設定されたprint-color-adjust値を ドキュメントビューポートに伝搬させなければなりません (canvasの背景などに影響します)。 ただしprint-color-adjustは HTMLのbodyからは 伝搬しません

4.2. color-adjustショートハンド

名前: color-adjust
値: <'print-color-adjust'>
初期値: 個別プロパティ参照
適用対象: 個別プロパティ参照
継承: 個別プロパティ参照
パーセンテージ: 個別プロパティ参照
算出値: 個別プロパティ参照
アニメーションタイプ: 個別プロパティ参照
標準順序: 文法通り

color-adjustショートハンドは、 パフォーマンス重視の色調整プロパティを一括で設定できます。 (現時点ではprint-color-adjustのみですが、 将来的に追加される可能性があります。)

color-adjustショートハンドは 現在非推奨です。 著者はより具体的なprint-color-adjustプロパティを使い、 他の文脈で意図せずパフォーマンスベースの色調整をリセットしてしまうことを避けてください。

テスト

5. エミュレーション

ユーザーエージェントの自動化やアプリケーションテストを目的として、本書では以下のエミュレーションを定義します。

5.1. 強制色モードのエミュレート

トップレベルトラバーサブルは、強制色テーマエミュレーションデータを持ちます。 これは、ForcedColorsModeAutomationThemeを表すデータで、 初期値は"none"です。

enum ForcedColorsModeAutomationTheme {
  "none",
  "light",
  "dark"
};

強制色テーマエミュレーションデータの設定を行うには、navigable navigableemulatedThemeData を受け取ります:

  1. emulatedThemeDataForcedColorsModeAutomationThemeであることを確認します。

  2. traversablenavigableトップレベルトラバーサブルとします。

  3. traversableがnullでなければ:

    1. traversable強制色テーマエミュレーションデータemulatedThemeDataに設定します。

    2. UAはこの変更をスタイル再計算が必要な変更として扱わなければなりません。

強制色テーマエミュレーションデータの取得を行うには、ForcedColorsModeAutomationTheme themeを受け取ります:

  1. navigabletheme関連グローバルオブジェクト関連Documentノードナビゲーブルとします。

  2. navigableがnullなら、nullを返します。

  3. traversablenavigableトップレベルトラバーサブルとします。

  4. traversableがnullなら、nullを返します。

  5. traversable強制色テーマエミュレーションデータを返します。

5.2. 強制色モードのカラーパレット

ユーザーエージェントの自動化やアプリケーションテストを目的として、本書では以下の強制色モードエミュレーションカラーパレットを定義します。
"light"用のシステム色のマッピング
<system-color>キーワード
AccentColor #FFFFFF
AccentColorText #000000
ActiveText #00009F
ButtonBorder #000000
ButtonFace #FFFFFF
ButtonText #000000
Canvas #FFFFFF
CanvasText #000000
Field #FFFFFF
FieldText #000000
GrayText #600000
Highlight #37006E
HighlightText #FFFFFF
LinkText #00009F
Mark N/A - このシステム色キーワードは調整しないでください。
MarkText N/A - このシステム色キーワードは調整しないでください。
SelectedItem #37006E
SelectedItemText #FFFFFF
VisitedText #00009F
"dark"用のシステム色のマッピング
<system-color>キーワード
AccentColor #000000
AccentColorText #FFFFFF
ActiveText #FFFF00
ButtonBorder #000000
ButtonFace #000000
ButtonText #FFFFFF
Canvas #000000
CanvasText #FFFFFF
Field #000000
FieldText #FFFFFF
GrayText #3FF23F
Highlight #1AEBFF
HighlightText #000000
LinkText #FFFF00
Mark N/A - このシステム色キーワードは調整しないでください。
MarkText N/A - このシステム色キーワードは調整しないでください。
SelectedItem #1AEBFF
SelectedItemText #000000
VisitedText #FFFF00

6. プライバシーに関する考慮事項

カラースキーム強制色モードを通じてユーザーの色の好みを適用すると、 ページ側がgetComputedStyle()で ユーザーの色の好みを取得できるようになり、 フィンガープリントの手段が増える可能性があります。

これを回避すると重大な欠点が生じるため、無視できないと判断されました。具体的には:

この話題の議論はIssue 5710を参照してください。

7. セキュリティに関する考慮事項

埋め込み文書がタイミング攻撃を使って、 自身のcolor-schemeが 埋め込み先のiframe と一致しているかどうかを判定できる可能性があります。

8. 謝辞

この仕様は Apple、Google、Microsoftによる各種色調整機能の開発努力やwww-styleでの印刷調整の議論がなければ 実現しませんでした。 特にCSSワーキンググループは Alison Maher、 François Remy、 イアンフェッティ に感謝します。

MSFT / Apple / Google関係者を追加で記載してください。

9. 変更点

2022年2月10日 勧告候補スナップショット以降の変更:

さらに勧告候補以前の変更点も参照してください。

適合性

文書の慣例

適合要件は 説明的な断定とRFC 2119の用語の組み合わせで表現されています。規範部分で使われる「MUST」, 「MUST NOT」,「REQUIRED」,「SHALL」,「SHALL NOT」,「SHOULD」,「SHOULD NOT」, 「RECOMMENDED」,「MAY」,「OPTIONAL」はRFC 2119で定義される通りに解釈してください。 ただし、可読性のため本仕様ではこれらの語を全て大文字では表記していません。

この仕様書の本文は、非規範部分・例・注記と明示されたセクションを除き全て規範となります。[RFC2119]

本仕様の例は「for example」で導入されるか、class="example"のように 規範テキストから区別されて示されます:

これは参考例の一つです。

参考注記は「Note」で始まり、class="note"で規範テキストから区別して表示されます:

Note、これは参考注記です。

アドバイス文は規範部分で特に注意を喚起するためにスタイルされており、 <strong class="advisement">のように他の規範テキストから区別されます。 例: UAはアクセシブルな代替手段を提供しなければなりません。

テスト

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


適合クラス

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

スタイルシート
CSS スタイルシート
レンダラー
UAとしてスタイルシートの意味を解釈し、 それを使う文書をレンダリングするもの。
オーサリングツール
UAとしてスタイルシートを書くもの。

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

レンダラーは、スタイルシートを適切な仕様通りに解釈するほか、 本仕様で定義された全機能を正しくパース・レンダリングできていれば適合となります。 ただし、デバイスの制約で正しくレンダリングできない場合は非適合とはなりません(例:モノクロモニターでは色表示が不要)。

オーサリングツールは、CSSの一般文法と本モジュールの各機能の個別文法に従って構文的に正しいスタイルシートを作成し、 本モジュールで記載されるスタイルシートの適合要件も満たしていれば適合となります。

部分的な実装

著者が将来の互換性のあるパース規則を活用してフォールバック値を指定できるように、 CSSレンダラーは、サポートレベルが十分でないat-ルール、プロパティ、プロパティ値、キーワード、 その他の構文要素を無効として適切に無視して)扱わなければなりません。 特に、ユーザーエージェントはサポートしていない値が含まれる複数値プロパティ宣言について、 サポートしている値のみを選択的に適用してはなりません。 CSSでは、いずれかの値が無効と判定された場合、宣言全体が無視されます。

不安定または独自機能の実装

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

非実験的実装

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

CSSの相互運用性維持のため、 CSSワーキンググループは非実験的CSSレンダラーに 実装報告書(必要に応じて実装報告用のテストケースも)をW3Cに提出するよう要請します。 W3Cに提出されたテストケースはCSSワーキンググループによるレビューや修正の対象となります。

テストケースや実装報告書の提出に関する詳細は CSSワーキンググループのウェブサイト https://www.w3.org/Style/CSS/Test/で確認できます。 質問はpublic-css-testsuite@w3.orgまで。

CR終了基準

本仕様が勧告案に進むには、 各機能について少なくとも2つの独立した相互運用可能な実装が必要です。 各機能は異なる製品群によって実装されてもよく、 全機能が単一製品で実装される必要はありません。本基準においては以下の用語を定義します:

独立
各実装は異なる組織によって開発され、 他の適合実装のコードを共有・流用・派生してはなりません。 仕様の実装に関係しないコードはこの要件から除外されます。
相互運用可能
公式CSSテストスイートの該当テストケースに合格すること、 またはWebブラウザー以外の実装の場合は同等のテストに合格すること。 該当テストごとに同等のテストが作成される必要があり、 そのユーザーエージェント(UA)が相互運用性を主張する場合は、 他にも同様にその同等テストに合格できるUAが必要です。 同等テストはピアレビュー公開のために一般公開されなければなりません。
実装
以下の条件を満たすユーザーエージェント:
  1. 仕様を実装していること。
  2. 一般公開されていること。リリース製品や公開ベータ版、プレビュー版、ナイトリービルドなど。 リリース前製品でも、少なくとも1か月間その機能を実装して安定性を示す必要があります。
  3. 実験的でないこと(テストスイート合格だけを目的とした特別バージョンでなく、今後も通常利用されるもの)。

本仕様は少なくとも6か月間勧告候補のままとなります。

索引

本仕様で定義される用語

他の参照で定義される用語

参照文献

規範参照

[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS 背景と枠モジュール レベル3. 2024年3月11日. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[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-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-5]
Chris Lilley; et al. CSS カラーモジュール レベル5. 2025年3月18日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-FONTS-4]
Chris Lilley. CSS フォントモジュール レベル4. 2024年2月1日. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-PSEUDO-4]
Elika Etemad; Alan Stearns. CSS 疑似要素モジュール レベル4. 2025年6月27日. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-SCROLLBARS-1]
Tantek Çelik; Rossen Atanassov; Florian Rivoal. CSS スクロールバー スタイリングモジュール レベル1. 2021年12月9日. CR. URL: https://www.w3.org/TR/css-scrollbars-1/
[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-3]
Tab Atkins Jr.; Elika Etemad. CSS 値と単位モジュール レベル3. 2024年3月22日. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 値と単位モジュール レベル4. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; et al. カスケーディングスタイルシート レベル2改訂版(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/
[HTML]
Anne van Kesteren; et al. HTML現行標準. 現行標準. URL: https://html.spec.whatwg.org/multipage/
[MEDIAQUERIES-5]
Dean Jackson; et al. メディアクエリ レベル5. 2021年12月18日. WD. URL: https://www.w3.org/TR/mediaqueries-5/
[RFC2119]
S. Bradner. RFCで要求レベルを示すためのキーワード. 1997年3月. ベストカレントプラクティス. URL: https://datatracker.ietf.org/doc/html/rfc2119

参考文献

[CSS-CONDITIONAL-3]
Chris Lilley; David Baron; Elika Etemad. CSS 条件付きルールモジュール レベル3. 2024年8月15日. CRD. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-GAPS-1]
Kevin Babbitt. CSS ギャップ装飾モジュール レベル1. 2025年4月17日. FPWD. URL: https://www.w3.org/TR/css-gaps-1/
[CSS-TYPED-OM-1]
Tab Atkins Jr.; François Remy. CSS 型付きOM レベル1. 2024年3月21日. WD. URL: https://www.w3.org/TR/css-typed-om-1/
[FILL-STROKE-3]
Elika Etemad; Tab Atkins Jr.. CSS 塗りとストロークモジュール レベル3. 2017年4月13日. FPWD. URL: https://www.w3.org/TR/fill-stroke-3/
[FILTER-EFFECTS-1]
Dirk Schulze; Dean Jackson. フィルター効果モジュール レベル1. 2018年12月18日. WD. URL: https://www.w3.org/TR/filter-effects-1/
[SVG2]
Amelia Bellamy-Royds; et al. スケーラブルベクターグラフィックス (SVG) 2. 2018年10月4日. CR. URL: https://www.w3.org/TR/SVG2/
[WCAG21]
Michael Cooper; et al. ウェブコンテンツアクセシビリティガイドライン (WCAG) 2.1. 2025年5月6日. REC. URL: https://www.w3.org/TR/WCAG21/

プロパティ索引

名前 初期値 適用対象 継承 %ages アニメーションタイプ 標準順序 算出値
color-adjust <'print-color-adjust'> 個別プロパティ参照 個別プロパティ参照 個別プロパティ参照 個別プロパティ参照 個別プロパティ参照 文法通り 個別プロパティ参照
color-scheme normal | [ light | dark | <custom-ident> ]+ && only? normal すべての要素とテキスト はい 該当なし 離散 文法通り キーワードnormal、または指定されたカラースキームキーワードの順序付きリスト
forced-color-adjust auto | none | preserve-parent-color auto すべての要素とテキスト はい 該当なし アニメーション不可 文法通り 指定通り
print-color-adjust economy | exact economy すべての要素 はい 該当なし 離散 文法通り 指定キーワード

IDL索引

enum ForcedColorsModeAutomationTheme {
  "none",
  "light",
  "dark"
};

課題索引

MSFT / Apple / Google の追加関係者をここに記載してください。