W3C

CSS カラーモジュール レベル 3

W3C 勧告

この文書の詳細情報
このバージョン:
https://www.w3.org/TR/2022/REC-css-color-3-20220118/
最新バージョン:
https://www.w3.org/TR/css-color-3/
以前のバージョン:
履歴
https://www.w3.org/standards/history/css-color-3
編集者草案:
https://drafts.csswg.org/css-color-3/
実装レポート:
https://test.csswg.org/harness/results/css-color-3_dev/grouped/
フィードバック:
GitHub Issues を使用して、この仕様について議論することをお勧めします。問題を報告する際には、タイトルに「css-color-3」というテキストを含めてください。例えば、次のように記載します: 「[css-color-3] …コメントの概要…」。すべての問題およびコメントはアーカイブされており、過去のアーカイブもあります。
編集者:
Tantek Çelik (Mozilla Corporation, 以前はMicrosoft Corporation) <>
Chris Lilley (W3C) <https://svgees.us/>
L. David Baron (W3C 招待専門家) <>
追加の著者:
Steven Pemberton (CWI) <>
Brad Pettit (Microsoft Corporation) <>
テストスイート:
http://test.csswg.org/suites/css3-color/nightly-unstable/
正誤表:
https://www.w3.org/Style/2022/REC-css-color-3-20220118-errata.html

概要

CSS (Cascading Style Sheets) は、HTML および XML ドキュメントの画面、紙、音声などでのレンダリングを記述するための言語です。テキスト、背景、枠線、およびドキュメント内の要素の他の部分に色を付けるための色関連のプロパティと値を使用します。本仕様では、前景色およびグループ不透明度に関する色値とプロパティを記述しています。これには、CSS レベル 2 からのプロパティと値、および新しい値が含まれます。

この文書の状態

このセクションでは、この文書が公開された時点での状態について説明します。現在の W3C 公開物の一覧およびこの技術報告書の最新改訂版は、W3C 技術報告書インデックス(https://www.w3.org/TR/)で確認できます。

この文書は、CSS ワーキンググループによって、推奨事項トラックを使用して勧告として公開されました。

W3C 勧告は、広範な合意形成を経て、W3Cおよびそのメンバーによって承認され、ワーキンググループのメンバーによる実装のための無償ライセンスの確約が得られた仕様です。

W3C は、本仕様をウェブの標準として広く展開することを推奨します。

この文書は、W3C 特許ポリシーの下で運営されているグループによって作成されました。W3C は、このグループの成果物に関連して行われた特許開示の公開リストを維持しています。そのページには特許を開示するための指示も含まれています。ある個人が、必須クレームを含むと信じている特許について実際の知識を持っている場合、その個人はW3C 特許ポリシー第6節に従って情報を開示しなければなりません。

この文書は、2021年11月2日 W3C プロセス文書によって管理されています。

別途提供されている 実装レポートによると、テストスイート内の各テストが、少なくとも2つの独立した実装によって合格しています。ただし、多くのテストは現在CSS Color 4に更新されています(実装レポートを参照してください)。

この文書の変更点一覧が完全に利用可能です。


1. イントロダクション

このセクションは規範的ではありません。

CSS レベル 2 以降は、モジュールのセットであり、仕様とその実装が段階的に開発されるよう分割されています。本仕様はそのモジュールの一つです。

このモジュールでは、要素の前景色と不透明度を指定するための CSS プロパティについて説明します。また、CSS の <color> 値型について詳しく説明しています。

これにより、CSS1 および CSS2 に既存する色関連のプロパティと値を定義するだけでなく、新しいプロパティと値も定義します。

この仕様は、以下の勧告および作業草案の関連部分を統合し、いくつかの新しい機能を追加した結果です。

2. 依存関係

追加の用語は、定義セクションの [CSS21] に記載されています。文書のソースコードおよび断片の例は、XML [XML10] または HTML [HTML401] の構文で示されています。

3. 色のプロパティ

3.1. 前景色: ‘color’ プロパティ

名前: color
値: <color> | inherit
初期値: ユーザーエージェントに依存
適用対象: すべての要素
継承されるか: はい
パーセンテージ: 該当なし
計算値:
  • 基本的な色キーワード、RGB 16 進値、および拡張色キーワードについての計算値は、数値 RGB 値の同等の三連値(例: 6 桁の 16 進値または rgb(...) 関数値)であり、アルファ値は 1 とします。
  • キーワード ‘transparent’ の計算値は、すべての数値 RGBA 値がゼロの四重値(例: rgba(0,0,0,0))です。
  • その他のすべての値については、計算値は指定値です。

このプロパティは、要素のテキストコンテンツの前景色を説明します。また、色値を受け入れる他のプロパティの間接的な値 (currentColor) を提供するためにも使用されます。もし ‘currentColor’ キーワードが ‘color’ プロパティに設定されている場合、それは ‘color: inherit’ として扱われます。

ライムグリーンを指定する方法はいくつかあります:

例:

em { color: lime }               /* 色キーワード */
em { color: rgb(0,255,0) }       /* RGB 範囲 0-255   */
<color>
色単位は 次のセクションで定義されています。

3.2. 透明度: ‘opacity’ プロパティ

不透明度(Opacity)は、後処理操作と考えることができます。概念的には、要素(その子孫を含む)が RGBA のオフスクリーン画像にレンダリングされた後、不透明度設定は現在のコンポジットレンダリングに対してオフスクリーンレンダリングをどのようにブレンドするかを指定します。詳細は 単純なアルファ合成 を参照してください。

名前: opacity
値: <alphavalue> | inherit
初期値: 1
適用対象: すべての要素
継承されるか: いいえ
パーセンテージ: 該当なし
計算値: 指定された値と同じですが、<alphavalue> を範囲 [0.0,1.0] にクリップした後の値になります。
<alphavalue>
構文的には <number> です。オブジェクト全体に適用される均一な不透明度設定です。値が 0.0(完全に透明)から 1.0(完全に不透明)の範囲外の場合、その範囲にクランプされます。オブジェクトに子要素がある場合、効果は、各マスクのピクセル値が <alphavalue> であるマスクを使用して、子要素が現在の背景に対してブレンドされたかのようになります。SVG の場合、「子要素がある」とはコンテナ要素であることに相当します [SVG11]

不透明度が 1 未満の要素は単一のオフスクリーン画像からコンポジットされるため、その外側のコンテンツが内部のコンテンツの間に z-order でレイヤー化されることはできません。同じ理由で、不透明度が 1 未満の要素には新しいスタッキングコンテキストを作成する必要があります。不透明度が 1 未満で位置指定されていない要素は、その親のスタッキングコンテキスト内でスタックレベル 0 を持つ位置指定された要素と同じレイヤーに描画されます。不透明度が 1 未満で位置指定された要素の場合、‘z-index’ プロパティは [CSS21] に記載されているように適用されますが、使用される値が ‘auto’ の場合、その要素は‘0’ とまったく同じように動作します。スタッキングコンテキストに関する詳細は、セクション 9.9 および 付録 E を参照してください。この段落のルールは SVG 要素には適用されません。SVG には独自の レンダリングモデル[SVG11]、第 3 章)があります。

4. 色単位

<color> は、キーワードまたは数値による指定のいずれかです。

4.1. 基本的な色キーワード

基本的な色キーワードのリストは次の通りです: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow。これらの色名は ASCII大文字小文字を区別しません

色名と sRGB
名前 数値 色名 16進 rgb 10進値
black #000000 0,0,0
silver #C0C0C0 192,192,192
gray #808080 128,128,128
white #FFFFFF 255,255,255
maroon #800000 128,0,0
red #FF0000 255,0,0
purple #800080 128,0,128
fuchsia #FF00FF 255,0,255
green #008000 0,128,0
lime #00FF00 0,255,0
olive #808000 128,128,0
yellow #FFFF00 255,255,0
navy #000080 0,0,128
blue #0000FF 0,0,255
teal #008080 0,128,128
aqua #00FFFF 0,255,255

例:

body {color: black; background: white }
h1 { color: maroon }
h2 { color: olive }

4.2. 数値による色指定

4.2.1. RGB カラー値

RGB カラーモデルは、数値による色指定に使用されます。以下の例はすべて同じ色を指定しています:

例:

em { color: #f00 }              /* #rgb */
em { color: #ff0000 }           /* #rrggbb */
em { color: rgb(255,0,0) }
em { color: rgb(100%, 0%, 0%) }

RGB 値の 16 進表記は、‘#’ の後に 3 桁または 6 桁の 16 進数が続きます。3 桁の RGB 表記 (#rgb) は、数字を繰り返すことで 6 桁形式 (#rrggbb) に変換されます(ゼロを追加するわけではありません)。例えば、#fb0 は #ffbb00 に展開されます。これにより、白 (#ffffff) を短縮表記 (#fff) で指定できるようになり、ディスプレイの色深度への依存を排除します。

RGB 値の関数形式は、‘rgb(’ に続く 3 つの数値(整数値またはパーセンテージ値)をカンマで区切り、最後に‘)’を付けたものです。整数値の 255 は 100%、16 進表記の F または FF に相当します: rgb(255,255,255) = rgb(100%,100%,100%) = #FFF。数値の周囲に空白文字を含めることができます。

すべての RGB 色は sRGB カラースペースで指定されます([SRGB] を参照)。ユーザーエージェントによってこれらの色の再現精度は異なる場合がありますが、sRGB を使用することで、色の定義が明確で客観的に測定可能となり、国際標準に関連付けることができます([COLORIMETRY] を参照)。

デバイスのガマット外の値は、ガマットが既知の場合にクリップまたはマッピングされるべきです: 赤、緑、青の値は、デバイスがサポートする範囲内に収まるように変更される必要があります。ユーザーエージェントは、あるガマットから別のガマットへの色の高品質なマッピングを行うことができます。本仕様では正確なクリッピング動作を定義していません。デバイスガマットが sRGB と同じである典型的な CRT モニターの場合、以下の 4 つのルールは同等です:

例:

em { color: rgb(255,0,0) }       /* 整数範囲 0 - 255 */
em { color: rgb(300,0,0) }       /* rgb(255,0,0) にクリップされる */
em { color: rgb(255,-10,0) }     /* rgb(255,0,0) にクリップされる */
em { color: rgb(110%, 0%, 0%) }  /* rgb(100%,0%,0%) にクリップされる */

プリンターなどの他のデバイスは、sRGB とは異なるガマットを持っています。そのため、0..255 の sRGB 範囲外の一部の色は表現可能(デバイスガマット内)ですが、0..255 の sRGB 範囲内の他の色はデバイスガマット外となり、マッピングされます。

4.2.2. RGBA カラー値

RGB カラーモデルは、本仕様で「アルファ」を含むように拡張され、色の不透明度を指定できるようになっています。詳細は 単純なアルファ合成 を参照してください。以下の例はすべて同じ色を指定しています:

例:

em { color: rgb(255,0,0) }      /* 整数範囲 0 - 255 */
em { color: rgba(255,0,0,1)     /* 同じ色で、不透明度 1 を明示 */
em { color: rgb(100%,0%,0%) }   /* 範囲 0.0% - 100.0% */
em { color: rgba(100%,0%,0%,1) } /* 同じ色で、不透明度 1 を明示 */

RGB 値とは異なり、RGBA 値には 16 進表記がありません。

RGBA 値の関数形式は、‘rgba(’ に続く 3 つの数値(整数値またはパーセンテージ値)をカンマで区切り、その後に <alphavalue> を付け、最後に ‘)’ を付けたものです。整数値の 255 は 100% に相当します: rgba(255,255,255,0.8) = rgba(100%,100%,100%,0.8)。数値の周囲に空白文字を含めることができます。

実装では、RGBA 色値の赤、緑、青の成分を、これらの成分で構成される RGB 色値のルールに従ってデバイスガマットにクリップする必要があります。

以下の例は、rgba() 表記で可能な効果を指定しています:

例:

p { color: rgba(0,0,255,0.5) }        /* 半透明のソリッドブルー */
p { color: rgba(100%, 50%, 0%, 0.1) } /* 非常に透明なソリッドオレンジ */

注意: RGBA 値がユーザーエージェントでサポートされていない場合、それらは CSS の前方互換性のパースルール ([CSS21], 第 4 章) に従って未認識値として扱われるべきです。RGBA 値を単に RGB 値として扱い、不透明度を無視してはなりません

4.2.3. transparent’ カラーワード

CSS1 は、背景色プロパティのために ‘transparent’ 値を導入しました。CSS2 では、枠線色 (border-color) プロパティでも ‘transparent’ 値を受け入れることができるようになりました。Open eBook(tm) Publication Structure 1.0.1 [OEB101] は、‘color’ プロパティでも ‘transparent’ キーワードを受け入れるように拡張しました。CSS3 は、すべての <color> 値を受け入れるプロパティで ‘transparent’ キーワードを使用できるように、色値を拡張しました。これにより、CSS3 におけるこれらのプロパティの定義が簡略化されます。

transparent
完全に透明。このキーワードは、透明な黒(rgba(0,0,0,0))の略記とみなすことができます。これはその計算値です。

4.2.4. HSL カラー値

CSS3 は、数値 RGB カラーを補完するものとして、数値による 色相-彩度-明度 (HSL) カラー を追加しました。RGB カラーには以下のような制約があることが確認されています:

他にもいくつかのカラースキームが可能です。HSL の利点の一つは、明度と暗さに対して対称的である点(例えば HSV ではそうではありません)であり、HSL を RGB に変換するのが非常に簡単である点です。

HSL カラーは (色相, 彩度, 明度) のトリプルとしてエンコードされます。色相は色相環(つまり、円で表された虹)として角度で表されます。この角度は CSS 内で暗黙的に度単位として測定されるため、構文上は単に <number> を指定します。定義により赤=0=360 であり、他の色は円周に沿って配置されています(緑=120、青=240 など)。角度であるため、-120=240 や 480=120 のように暗黙的にラップします。ある実装が x を [0,360)(すなわち 0 度(含む)から 360 度(含まない))の範囲に正規化する方法の一つは、(((x mod 360) + 360) mod 360) を計算することです。彩度と明度はパーセンテージで表されます。100% は完全な彩度を、0% は灰色の陰影を示します。0% の明度は黒、100% の明度は白、50% の明度は「通常」を意味します。

例えば次のように:

例:

* { color: hsl(0, 100%, 50%) }   /* 赤 */
* { color: hsl(120, 100%, 50%) } /* ライム */
* { color: hsl(120, 100%, 25%) } /* 暗い緑 */
* { color: hsl(120, 100%, 75%) } /* 明るい緑 */
* { color: hsl(120, 75%, 75%) }  /* パステルグリーン、その他 */

HSL の RGB に対する利点は、はるかに直感的である点です。望む色を予測してから微調整することができます。また、色相を一定に保ち、明暗や彩度を変えることで、マッチする色のセットを作るのも簡単です。

彩度が 0% 未満の場合、実装はそれを 0% にクリップする必要があります。結果の値がデバイスのガマット外にある場合、実装はそれをデバイスのガマット内にクリップする必要があります。このクリッピングは可能であれば色相を保持する必要がありますが、それ以外の場合は未定義です(つまり、クリッピングは以下の HSL を RGB に変換するアルゴリズムを適用した後の RGB 色のクリッピングルールを適用するのとは異なります)。

HSL の色を sRGB に変換するのは数学的に簡単です。以下は変換アルゴリズムの JavaScript によるサンプル実装です。この関数は、赤、緑、青の各チャンネルを [0, 1] の範囲に正規化した配列を返します。

    function hslToRgb (hue, sat, light) {
      hue = hue % 360;

      if (hue < 0) {
          hue += 360;
      }

      sat /= 100;
      light /= 100;

      function f(n) {
          let k = (n + hue/30) % 12;
          let a = sat * Math.min(light, 1 - light);
          return light - a * Math.max(-1, Math.min(k - 3, 9 - k, 1));
      }

      return [f(0), f(8), f(4)];
  }
  
4.2.4.1. HSL の例

以下の各表は、1 色相を表しています。色相環から 12 の等間隔の色(30°間隔)が選ばれています: 赤、黄、緑、シアン、青、マゼンタ、およびその間の中間色(最後はマゼンタと赤の間の色)です。

各表では、X 軸は彩度を表し、Y 軸は明度を表します。

0° 赤
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
30° 赤-黄色(=オレンジ)
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
60° 黄色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
90° 黄色-緑色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
120° 緑色
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
150° 緑-シアン
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
180° シアン
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
210° シアン-青
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
240° 青
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
270° 青-マゼンタ
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
300° マゼンタ
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%
330° マゼンタ-赤
100% 80% 60% 40% 20% 0%
100%
90%
80%
70%
60%
50%
40%
30%
20%
10%
0%

4.2.5. HSLA カラー値

rgb()’ 関数型表記に ‘rgba()’ アルファ版があるように、 ‘hsl()’ 関数型表記には ‘hsla()’ アルファ版が存在します。 詳しくは シンプルなアルファ合成 を参照してください。以下の例は同じ色を指定しています:

例:

em { color: hsl(120, 100%, 50%) }     /* 緑 */
em { color: hsla(120, 100%, 50%, 1) } /* 同じ色、明示的な不透明度 1 */

HSLA カラー値の関数型表記の形式は、‘hsla(’ に続いて度単位の色相、パーセント単位の彩度と 明度、そして <alphavalue> が続き、 最後に ‘)’ で閉じられます。数値の周囲には空白文字が許可されています。

実装は、HSLA カラー値の色相、彩度、明度の各コンポーネントを、 それらのコンポーネントで構成される HSL カラー値のルールに従ってデバイスのガマット内に収める必要があります。

以下の例は、hsla() 表記で可能な効果を示しています:

例:

p { color: hsla(240, 100%, 50%, 0.5) } /* 半透明のソリッドブルー */
p { color: hsla(30, 100%, 50%, 0.1) }  /* 非常に透明なソリッドオレンジ */

4.3. 拡張されたカラーキーワード

以下の表は、X11 カラーに [X11COLORS] に基づく グレー/グレイのバリエーションを追加したものを示しています。 結果的に、このリストは SVG 1.0 カラー キーワード名 と正確に同じです。この仕様は、それらの定義を SVG の枠を超えて拡張します。 左側の 2 つのカラースウォッチは、テーブルセルの背景色を設定する 2 つの方法を示しています: 最初の列は名前付きカラー値を使用し、2 番目の列はそれぞれの数値カラー値を使用しています。

名前付き 数値 カラー名 Hex rgb 10進数
aliceblue #f0f8ff 240,248,255
antiquewhite #faebd7 250,235,215
aqua #00ffff 0,255,255
aquamarine #7fffd4 127,255,212
azure #f0ffff 240,255,255
beige #f5f5dc 245,245,220
bisque #ffe4c4 255,228,196
black #000000 0,0,0
blanchedalmond #ffebcd 255,235,205
blue #0000ff 0,0,255
blueviolet #8a2be2 138,43,226
brown #a52a2a 165,42,42
burlywood #deb887 222,184,135
cadetblue #5f9ea0 95,158,160
chartreuse #7fff00 127,255,0
chocolate #d2691e 210,105,30
coral #ff7f50 255,127,80
cornflowerblue #6495ed 100,149,237
cornsilk #fff8dc 255,248,220
crimson #dc143c 220,20,60
cyan #00ffff 0,255,255
darkblue #00008b 0,0,139
darkcyan #008b8b 0,139,139
darkgoldenrod #b8860b 184,134,11
darkgray #a9a9a9 169,169,169
darkgreen #006400 0,100,0
darkgrey #a9a9a9 169,169,169
darkkhaki #bdb76b 189,183,107
darkmagenta #8b008b 139,0,139
darkolivegreen #556b2f 85,107,47
darkorange #ff8c00 255,140,0
darkorchid #9932cc 153,50,204
darkred #8b0000 139,0,0
darksalmon #e9967a 233,150,122
darkseagreen #8fbc8f 143,188,143
darkslateblue #483d8b 72,61,139
darkslategray #2f4f4f 47,79,79
darkslategrey #2f4f4f 47,79,79
darkturquoise #00ced1 0,206,209
darkviolet #9400d3 148,0,211
deeppink #ff1493 255,20,147
deepskyblue #00bfff 0,191,255
dimgray #696969 105,105,105
dimgrey #696969 105,105,105
dodgerblue #1e90ff 30,144,255
firebrick #b22222 178,34,34
floralwhite #fffaf0 255,250,240
forestgreen #228b22 34,139,34
fuchsia #ff00ff 255,0,255
gainsboro #dcdcdc 220,220,220
ghostwhite #f8f8ff 248,248,255
gold #ffd700 255,215,0
goldenrod #daa520 218,165,32
gray #808080 128,128,128
green #008000 0,128,0
greenyellow #adff2f 173,255,47
grey #808080 128,128,128
honeydew #f0fff0 240,255,240
hotpink #ff69b4 255,105,180
indianred #cd5c5c 205,92,92
indigo #4b0082 75,0,130
ivory #fffff0 255,255,240
khaki #f0e68c 240,230,140
lavender #e6e6fa 230,230,250
lavenderblush #fff0f5 255,240,245
lawngreen #7cfc00 124,252,0
lemonchiffon #fffacd 255,250,205
lightblue #add8e6 173,216,230
lightcoral #f08080 240,128,128
lightcyan #e0ffff 224,255,255
lightgoldenrodyellow #fafad2 250,250,210
lightgray #d3d3d3 211,211,211
lightgreen #90ee90 144,238,144
lightgrey #d3d3d3 211,211,211
lightpink #ffb6c1 255,182,193
lightsalmon #ffa07a 255,160,122
lightseagreen #20b2aa 32,178,170
lightskyblue #87cefa 135,206,250
lightslategray #778899 119,136,153
lightslategrey #778899 119,136,153
lightsteelblue #b0c4de 176,196,222
lightyellow #ffffe0 255,255,224
lime #00ff00 0,255,0
limegreen #32cd32 50,205,50
linen #faf0e6 250,240,230
magenta #ff00ff 255,0,255
maroon #800000 128,0,0
mediumaquamarine #66cdaa 102,205,170
mediumblue #0000cd 0,0,205
mediumorchid #ba55d3 186,85,211
mediumpurple #9370db 147,112,219
mediumseagreen #3cb371 60,179,113
mediumslateblue #7b68ee 123,104,238
mediumspringgreen #00fa9a 0,250,154
mediumturquoise #48d1cc 72,209,204
mediumvioletred #c71585 199,21,133
midnightblue #191970 25,25,112
mintcream #f5fffa 245,255,250
mistyrose #ffe4e1 255,228,225
moccasin #ffe4b5 255,228,181
navajowhite #ffdead 255,222,173
navy #000080 0,0,128
oldlace #fdf5e6 253,245,230
olive #808000 128,128,0
olivedrab #6b8e23 107,142,35
orange #ffa500 255,165,0
orangered #ff4500 255,69,0
orchid #da70d6 218,112,214
palegoldenrod #eee8aa 238,232,170
palegreen #98fb98 152,251,152
paleturquoise #afeeee 175,238,238
palevioletred #db7093 219,112,147
papayawhip #ffefd5 255,239,213
peachpuff #ffdab9 255,218,185
peru #cd853f 205,133,63
pink #ffc0cb 255,192,203
plum #dda0dd 221,160,221
powderblue #b0e0e6 176,224,230
purple #800080 128,0,128
red #ff0000 255,0,0
rosybrown #bc8f8f 188,143,143
royalblue #4169e1 65,105,225
saddlebrown #8b4513 139,69,19
salmon #fa8072 250,128,114
sandybrown #f4a460 244,164,96
seagreen #2e8b57 46,139,87
seashell #fff5ee 255,245,238
sienna #a0522d 160,82,45
silver #c0c0c0 192,192,192
skyblue #87ceeb 135,206,235
slateblue #6a5acd 106,90,205
slategray #708090 112,128,144
slategrey #708090 112,128,144
snow #fffafa 255,250,250
springgreen #00ff7f 0,255,127
steelblue #4682b4 70,130,180
tan #d2b48c 210,180,140
teal #008080 0,128,128
thistle #d8bfd8 216,191,216
tomato #ff6347 255,99,71
turquoise #40e0d0 64,224,208
violet #ee82ee 238,130,238
wheat #f5deb3 245,222,179
white #ffffff 255,255,255
whitesmoke #f5f5f5 245,245,245
yellow #ffff00 255,255,0
yellowgreen #9acd32 154,205,50

4.4. currentColor’ カラーキーワード

CSS1とCSS2では、border-color’ プロパティの初期値を color’ プロパティの値 と定義しましたが、 対応するキーワードは定義しませんでした。この省略はSVGによって認識され、 SVG 1.0で ‘currentColor’ 値が ‘fill’, ‘stroke’, ‘stop-color’, ‘flood-color’, および ‘lighting-color’ プロパティのために導入されました。 CSS3は、currentColor キーワードをすべての <color> 値を受け入れるプロパティで使用できるようにするために カラー値を拡張しました。これにより、CSS3でのそれらのプロパティの定義が簡素化されます。

currentColor
color’ プロパティの値。 ‘currentColor’ キーワードの使用値は、 ‘color’ プロパティの計算値です。 もし ‘currentColor’ キーワードが ‘color’ プロパティ自体に設定されている場合、 これは ‘color: inherit’ として扱われます。

4.5. CSS システムカラー

4.5.1. CSS2 システムカラー

廃止。 テキスト、背景などに カラーキーワード値を割り当てることができるに加え、 CSS2では、色をユーザーのグラフィック環境に統合する方法で 指定できるようにしました。

対応する値が存在しないシステムの場合、指定された値は最も近いシステムカラー値にマッピングされるか、 デフォルトの色にマッピングされるべきです。一部のCSSプロファイルでは、 システムカラーを全くサポートしない場合があります。

以下は、色に関連するCSS値の追加値とその一般的な意味を示しています。 任意のカラー関連プロパティは次の名前のいずれかを取ることができます。 これらはASCII 大文字小文字を区別しないですが、以下に示す混合された大文字小文字を使用して名前をより読みやすくすることが推奨されます。

ActiveBorder
アクティブウィンドウの境界線。
ActiveCaption
アクティブウィンドウのキャプション。
AppWorkspace
複数のドキュメントインターフェースの背景色。
Background
デスクトップの背景。
ButtonFace
3D要素の背景色で、周囲の境界線の1層により3Dに見えるもの。
ButtonHighlight
周囲の境界線で光源に面している3D要素の境界線の色。
ButtonShadow
周囲の境界線で光源から遠い側にある3D要素の境界線の色。
ButtonText
プッシュボタン上のテキスト。
CaptionText
キャプション、サイズボックス、およびスクロールバー矢印ボックス内のテキスト。
GrayText
グレーアウトされた(無効化された)テキスト。 現在のディスプレイドライバーがソリッドグレー色をサポートしていない場合、この色は #000 に設定されます。
Highlight
コントロールで選択された項目。
HighlightText
コントロールで選択された項目のテキスト。
InactiveBorder
非アクティブウィンドウの境界線。
InactiveCaption
非アクティブウィンドウのキャプション。
InactiveCaptionText
非アクティブキャプション内のテキストの色。
InfoBackground
ツールチップコントロールの背景色。
InfoText
ツールチップコントロールのテキスト色。
Menu
メニューの背景色。
MenuText
メニュー内のテキスト。
Scrollbar
スクロールバーのグレー部分。
ThreeDDarkShadow
周囲の2層の境界線によって3Dに見える要素において、 光源から遠い側の2つの境界線の(通常は外側の)暗い方の色。
ThreeDFace
周囲の2層の境界線によって3Dに見える要素の背景色。
ThreeDHighlight
周囲の2層の境界線によって3Dに見える要素において、 光源に面している2つの境界線の(通常は外側の)明るい方の色。
ThreeDLightShadow
周囲の2層の境界線によって3Dに見える要素において、 光源に面している2つの境界線の(通常は内側の)暗い方の色。
ThreeDShadow
周囲の2層の境界線によって3Dに見える要素において、 光源から遠い側の2つの境界線の(通常は内側の)明るい方の色。
Window
ウィンドウの背景色。
WindowFrame
ウィンドウのフレーム。
WindowText
ウィンドウ内のテキスト。

廃止された例:

例えば、段落の前景色と背景色をユーザーのウィンドウの前景色と背景色と同じに設定するには、次のように記述します:

p { color: WindowText; background-color: Window }

4.6. 色の使用に関する注意

色は文書に大きな情報量を加え、それを読みやすくすることができますが、文書に色を取り入れる際には、 W3C Web コンテンツ アクセシビリティ ガイドライン [WCAG20] を考慮してください。

5. シンプルなアルファ合成

描画時には、実装はアルファを扱う 必要があります。ルールは 現行標準の 14.2 Simple alpha compositingで定義されています。 (color-interpolation または color-rendering というプロパティがそのセクションで言及されているが、実装されていない場合、または適用されない場合、 実装はそれらの初期値が設定されているかのように振る舞う必要があります。)

6. (X)HTML のサンプルスタイルシート

この付録は情報提供目的であり、規範的なものではありません。このスタイルシートは、HTML4、XHTML1、 XHTML1.1、XHTML Basic、およびその他のXHTMLファミリ文書のデフォルトスタイリングの一部として実装で使用することができます。

html {
	color: black;
	background: white;
}


/* 従来のデスクトップユーザーエージェントのリンク色 */
:link    { color: blue; }
:visited { color: purple; }

/* デフォルトのフォーカスアウトライン */
:focus {
	outline: 1px dotted;  /* または 1px dotted invert */
}

7. プロファイル

CSS3 色を使用する各仕様は、その仕様が許可および除外するCSS3色機能のサブセットを定義し、 そのサブセットのすべてのコンポーネントのローカルな意味を記述する必要があります。

規範的でない例:

CSS3 色 プロファイル
仕様 HTML4
受け入れる 基本的なカラーワード
RGB 6桁の16進数カラー値
除外する color’ プロパティ
opacity’ プロパティ
RGB 3桁の16進数カラー値およびRGB関数型表記色値
RGBAカラー値
HSLおよびHSLAカラー値
拡張カラーワード
currentColor’ カラー値
CSS2 UIカラー
transparent’ カラー値
追加の制約 なし。
CSS3 色 プロファイル
仕様 CSS レベル 1
受け入れる color’ プロパティ
基本的なカラーワード
RGBカラー値
除外する opacity’ プロパティ
RGBAカラー値
HSLおよびHSLAカラー値
拡張カラーワード
currentColor’ カラー値
CSS2 UIカラー
transparent’ カラー値
追加の制約 なし。
CSS3 色 プロファイル
仕様 CSS レベル 2
受け入れる color’ プロパティ
基本的なカラーワード
RGBカラー値
CSS2 UIカラー
transparent’ カラー値
除外する opacity’ プロパティ
RGBAカラー値
HSLおよびHSLAカラー値
拡張カラーワード
currentColor’ カラー値
追加の制約 transparent’ カラー値は ‘color’ プロパティでは無効です。
orange’ カラー値 (拡張カラーワードの一部) はCSS レベル 2 リビジョン 1で受け入れられます。
CSS3 色 プロファイル
仕様 SVG 1.0 および 1.1
受け入れる color’ プロパティ
opacity’ プロパティ
基本的なカラーワード
RGBカラー値
CSS2 UIカラー
拡張カラーワード
currentColor’ カラー値
除外する RGBAカラー値
HSLおよびHSLAカラー値
transparent’ カラー値
追加の制約 currentColor’ カラー値は ‘color’ プロパティでは無効です。

8. テストスイート

CSS カラーモジュールのテストスイートが 開発されましたが、さらなるテストが追加される可能性があります。このテストスイートは、 ユーザーエージェントが仕様への基本的な準拠を検証するためのものです。このテストスイートは網羅的であるとは主張せず、 すべての可能な数値カラー値をカバーしているわけではありません。これらのテストは https://test.csswg.org/harness/suite/css-color-3_dev/ で利用可能です。

9. 将来の機能

このセクションは規範的ではありません。

ICC プロファイルを指定するための‘@color-profile’ アットルールや、 それらのプロファイルのレンダリング意図を制御する手段、 そしてそれらのプロファイルを使用する方法(‘color-profile’ プロパティ)など、カラーマネジメントに関連する多くの機能は、 当時の実装関心の欠如により CSS カラー 3 から削除されました。

関連する機能の開発は CSS カラー 4 と 5 で継続されました。 詳細は、‘color()関数’、 ‘@color-profile’ アットルール、および ‘rendering-intent’ デスクリプタを参照してください。

10. 謝辞

Brad Pettit に、カラー プロファイルの執筆とそれを実装していただいたことに感謝します。 また、Steven Pemberton に HSL カラーの執筆について感謝します。 特に Marc Attinasi、Bert Bos、Joe Clark、fantasai、Patrick Garies、Tony Graham、Ian Hickson、 Susan Lesch、Alex LeDonne、Cameron McCormack、Krzysztof Maczyński、Chris Moschini、Chris Murphy、 Christoph Päper、David Perrell、Jacob Refstrup、Dave Singer、Jonathan Stanley、Andrew Thompson、 Russ Weakley、Etan Wexler、David Woolley、Boris Zbarsky、Steve Zilles、 XSL 作業グループの XSL FO サブグループ、そしてすべての www-style コミュニティからのフィードバックに感謝します。 また、CSS カラーのエキスパートとして活躍していただいた Chris Lilley に感謝します。

11. 変更点

2021年8月5日の 勧告 以降の変更点

以下の編集上の修正が行われました:

2018年6月19日の 勧告以降の変更点

2017年12月5日の 候補勧告以降の変更点

2011年6月7日の 勧告以降の変更点

この文書は、2011年6月7日の勧告とは異なり、 以下の変更を含みます:

以前のドラフトでの変更については、 以前の勧告での変更 およびそこからリンクされている以前のバージョンを参照してください。

以前のコメントの処置:

12. 参考文献

12.1. 規範的参照

[COLORIMETRY]
Colorimetry, Third Edition. CIE 15:2004. ISBN 978-3-901906-33-6
[CSS21]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 2011年6月7日. W3C勧告. URL: http://www.w3.org/TR/2011/REC-CSS2-20110607
[SRGB]
Multimedia systems and equipment - Colour measurement and management - Part 2-1: Colour management - Default RGB colour space - sRGB. IEC 61966-2-1 (1999-10) ISBN: 2-8318-4989-6 - ICS codes: 33.160.60, 37.080 - TC 100 - 51 pp. as amended by Amendment A1:2003. URL: https://webstore.iec.ch/publication/6168
[SVG11]
Erik Dahlström; et al. Scalable Vector Graphics (SVG) 1.1 (Second Edition). 2011年8月16日. W3C勧告. URL: http://www.w3.org/TR/2011/REC-SVG11-20110816/

12.2. 参考情報

[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS Basic User Interface Module Level 3 (CSS3 UI). 2018年6月21日. W3C 勧告. URL: https://www.w3.org/TR/2018/REC-css-ui-3-20180621/
[CSS2]
Bert Bos; et al. Cascading Style Sheets, level 2 (CSS2) Specification. 2011年6月7日. W3C 勧告. URL: http://www.w3.org/TR/2011/REC-CSS2-20110607
[HTML401]
Dave Raggett; Arnaud Le Hors; Ian Jacobs. HTML 4.01 Specification. 1999年12月24日. W3C勧告. URL: http://www.w3.org/TR/1999/REC-html401-19991224
[OEB101]
Open eBook(tm) Publication Structure 1.0.1. Open eBook Forum(tm). 2001年7月2日. URL: https://www.loc.gov/preservation/digital/formats/fdd/fdd000054.shtml
[SVG10]
Jon Ferraiolo. Scalable Vector Graphics (SVG) 1.0 Specification. 2001年9月4日. W3C 勧告. URL: http://www.w3.org/TR/2001/REC-SVG-20010904
[WCAG20]
Ben Caldwell; et al. Web Content Accessibility Guidelines (WCAG) 2.0. 2008年12月11日. W3C 勧告. URL: http://www.w3.org/TR/2008/REC-WCAG20-20081211/
[X11COLORS]
Wikipedia X11 color names. URL: https://en.wikipedia.org/wiki/X11_color_names
[XML10]
C. M. Sperberg-McQueen; et al. Extensible Markup Language (XML) 1.0 (Fifth Edition). 2008年11月26日. W3C勧告. URL: http://www.w3.org/TR/2008/REC-xml-20081126/

索引

プロパティ索引

プロパティ 初期値 適用対象 継承 パーセンテージ
color <color> | inherit ユーザーエージェントに依存 はい 該当なし
opacity <alphavalue> | inherit 1 いいえ 該当なし