diff options
author | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2021-11-01 00:15:06 +0900 |
---|---|---|
committer | Masahiro FUJIMOTO <mfujimot@gmail.com> | 2021-11-09 23:32:43 +0900 |
commit | 8f07bc236313e803336dadfc35c26fe05b72864a (patch) | |
tree | 21d5edc8283ca65855e142552e54ae82a11142ff /files/ja | |
parent | f1fb98fc3f8d40a86cb6be0e185d0ba5a2b6eefa (diff) | |
download | translated-content-8f07bc236313e803336dadfc35c26fe05b72864a.tar.gz translated-content-8f07bc236313e803336dadfc35c26fe05b72864a.tar.bz2 translated-content-8f07bc236313e803336dadfc35c26fe05b72864a.zip |
CSS Color モジュールの文書を更新 (color value の関数を除く)
- 2021/10/30 時点の英語版に同期
Diffstat (limited to 'files/ja')
-rw-r--r-- | files/ja/web/css/color-adjust/index.md | 152 | ||||
-rw-r--r-- | files/ja/web/css/color/index.md | 161 | ||||
-rw-r--r-- | files/ja/web/css/color_value/index.md | 2882 | ||||
-rw-r--r-- | files/ja/web/css/css_color/index.md | 157 | ||||
-rw-r--r-- | files/ja/web/css/css_colors/color_picker_tool/index.md | 3239 | ||||
-rw-r--r-- | files/ja/web/css/opacity/index.md | 218 | ||||
-rw-r--r-- | files/ja/web/html/applying_color/index.md | 614 |
7 files changed, 2021 insertions, 5402 deletions
diff --git a/files/ja/web/css/color-adjust/index.md b/files/ja/web/css/color-adjust/index.md index bbc74dba8d..5dd07edb2a 100644 --- a/files/ja/web/css/color-adjust/index.md +++ b/files/ja/web/css/color-adjust/index.md @@ -4,120 +4,112 @@ slug: Web/CSS/color-adjust tags: - Adjusting Colors - CSS - - CSS Colors - - CSS Property - - HTML Colors - - HTML Styles - - Layout - - Non-standard - - Reference + - CSS 色 + - CSS プロパティ + - HTML 色 + - HTML スタイル + - レイアウト + - 標準外 + - リファレンス - Styling HTML - Styling text - - Web + - ウェブ - color-adjust - - 'recipe:css-property' + - recipe:css-property +browser-compat: css.properties.color-adjust translation_of: Web/CSS/color-adjust --- -<div>{{CSSRef}}</div> +{{CSSRef}} -<p><span class="seoSummary"><strong><code>color-adjust</code></strong> は CSS のプロパティで、{{Glossary("user agent", "ユーザーエージェント")}}が出力端末への要素の表示方法を最適化するために何をするかをウェブ作者が制御することができるものです。</span>既定では、ブラウザーは出力端末の種類と機能を考慮して、要素の外観を必要に応じて慎重に調整することが許可されています。</p> +**`color-adjust`** は CSS のプロパティで、{{Glossary("user agent", "ユーザーエージェント")}}が出力端末への要素の表示方法を最適化するために何をするかをウェブ作者が制御することができるものです。既定では、ブラウザーは出力端末の種類と機能を考慮して、要素の外観を必要に応じて慎重に調整することが許可されています。 -<h2 id="Syntax" name="Syntax">構文</h2> +## 構文 -<pre class="brush: css no-line-numbers notranslate">color-adjust: economy; -color-adjust: exact;</pre> +```css +color-adjust: economy; +color-adjust: exact; -<p><code>color-adjust</code> プロパティの値は、以下のキーワードのうちの一つでなければなりません。</p> +/* グローバル値 */ +color-adjust: inherit; +color-adjust: initial; +color-adjust: revert; +color-adjust: unset; +``` -<h3 id="Values" name="Values">値</h3> +`color-adjust` プロパティの値は、以下のキーワードのうちの一つでなければなりません。 -<dl> - <dt><code>economy</code></dt> - <dd>ユーザーエージェントは、それがレンダリングされているデバイスのために出力を最適化するために、適切かつ慎重に要素に調整を加えることが許されています。例えば、印刷するときに、ブラウザは背景画像をすべて削除して、白い紙で読むときにコントラストが最適化されるようにテキストの色を調整することを選ぶかもしれません。これがデフォルトです。</dd> - <dt><code>exact</code></dt> - <dd>要素の内容は、ブラウザによって変更されると、実際には良くなるどころか悪くなるかもしれないような、思慮深い重要な方法で色や画像やスタイルを使用するように、特別に慎重に作られています。コンテンツの外観は、ユーザーの要求がない限り変更されるべきではありません。例えば、あるページでは、背景色が白と薄い灰色の間で交互に変化する行を持つ情報のリストが含まれているかもしれません。背景色を削除すると、コンテンツの読みやすさが低下します。</dd> -</dl> +### 値 -<h2 id="Usage_notes" name="Usage_notes">使用上の注意</h2> +- `economy` + - : ユーザーエージェントは、描画する機器に合わせて出力を最適化するために、適切かつ賢明と思われるように要素に調整を行うことができます。例えば印刷時に、ブラウザーは背景画像をすべて削除し、白い紙で読むのに最適なコントラストになるようにテキストの色を調整することができます。これが既定値です。 +- **`exact`** + - : その要素の内容物は、色、画像、スタイルを思慮深く、または重要な方法で使用するために、特別に注意深く作られたものであり、ブラウザーによって変更されると、事態が改善されるどころか、むしろ悪化する可能性があります。内容物の外観は、ユーザーの要求以外で変更してはいけません。例えば、ページに背景色が白と薄い灰色の間で交互に変化する行を持つ情報のリストがあるとします。背景色を削除すると、内容物の読みやすさが損なわれます。 -<p>ブラウザーが指定された外観から逸脱したいと思う理由はいくつかあります。</p> +## 使用上の注意 -<ul> - <li>コンテンツがテキストや背景色を使用しているため、出力機器上では読みやすさの点で似たような色になってしまう。</li> - <li>出力デバイスがプリンターの場合、インクを節約するために、暗い背景画像や非常に濃い背景画像が削除されることがあります。</li> - <li>ページを印刷するとき、ブラウザは、暗い背景の明るい色のテキストを、白い背景の濃いテキストに置き換えることを望むかもしれません。</li> -</ul> +ブラウザーが指定された外観から外したいと思う理由はいくつかあります。 -<p>ユーザーが色や画像の使用を制御するためにユーザーエージェントが提供しているオプションは、 <code>color-adjust</code> の値よりも優先されます。言い換えれば、 <code>color-adjust</code> が何かをするという保証はありません。ユーザーが動作を上書きすることができるだけでなく、各ユーザエージェントは、与えられた状況で <code>color-adjust</code> をどのように扱うかをそれ自身で決定することが許されています。</p> +- 内容物が、その出力機器上ではテキストと背景の色が似たような色になってしまう場合に、読みやすくするため。 +- 出力機器がプリンターの場合、インクを節約するために、暗い背景画像や非常に濃い背景画像が削除されることがあります。 +- ページを印刷するとき、ブラウザーは、暗い背景と明るい色のテキストを、白い背景と濃い色のテキストに置き換えようとするかもしれません。 -<h2 id="Formal_definition" name="Formal_definition">公式定義</h2> +色や画像の使用を制御するために、ユーザーエージェントがユーザーに提供しているオプションは、`color-adjust` の値よりも優先されます。言い換えれば、`color-adjust` が何かをするという保証はありません。ユーザーが動作を上書きできるだけでなく、各ユーザーエージェントは、与えられた状況で `color-adjust` をどのように扱うかを自分で決定することができます。 -<p>{{cssinfo}}</p> +## 公式定義 -<h2 id="Formal_syntax" name="Formal_syntax">形式文法</h2> +{{cssinfo}} + +## 形式文法 {{csssyntax}} -<h2 id="Examples" name="Examples">例</h2> +## 例 -<h3 id="Preserving_low_contrast" name="Preserving_low_contrast">低コントラストの維持</h3> +<h3 id="Preserving_low_contrast">低コントラストの維持</h3> -<p>この例では、黒の背景色の上に {{cssxref("background-image")}} と半透明の {{cssxref("linear-gradient()")}} 関数を使用して、中程度の赤のテキストの後ろに濃い青のグラデーションを持つボックスが表示されています。理由はどうあれ、これは紙の上を含めたあらゆるレンダリング環境で望ましい外観ですので、 <code>color-adjust: exact</code> を使用して、レンダリング時にボックスの色やスタイルを調整しないように指示します。</p> +この例では、黒の背景色の上に {{cssxref("background-image")}} と半透明の {{cssxref("gradient/linear-gradient()", "linear-gradient()")}} 関数を使用して、中程度の赤のテキストの後ろに濃い青のグラデーションを持つボックスが表示されています。理由はどうあれ、これは紙の上を含めたあらゆるレンダリング環境で望ましい外観ですので、`color-adjust: exact` を使用して、レンダリング時にボックスの色やスタイルを調整しないように指示します。 -<h4 id="CSS">CSS</h4> +#### CSS -<pre class="brush: css notranslate">.my-box { - background-color: black; - background-image: linear-gradient(rgba(0, 0, 180, 0.5), rgba(70, 140, 220, 0.5)); - color: #900; - width: 15rem; - height: 6rem; - text-align: center; - font: 24px "Helvetica", sans-serif; - display: flex; - align-items: center; - justify-content: center; +```css +.my-box { + background-color: black; + background-image: linear-gradient(rgba(0, 0, 180, 0.5), rgba(70, 140, 220, 0.5)); + color: #900; + width: 15rem; + height: 6rem; + text-align: center; + font: 24px "Helvetica", sans-serif; + display: flex; + align-items: center; + justify-content: center; color-adjust: exact; } -</pre> +``` -<h4 id="HTML">HTML</h4> +#### HTML -<pre class="brush: html notranslate"><div class="my-box"> - <p>Need more contrast!</p> -</div></pre> +```html +<div class="my-box"> + <p>Need more contrast!</p> +</div> +``` -<h4 id="Result" name="Result">結果</h4> +#### 結果 -<p>{{EmbedLiveSample("Preserving_low_contrast", 640, 120)}}</p> +{{EmbedLiveSample("Preserving_low_contrast", 640, 120)}} -<h2 id="Specifications" name="Specifications">仕様書</h2> +## 仕様書 -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS Color Adjust', '#propdef-color-adjust', 'color-adjust')}}</td> - <td>{{Spec2('CSS Color Adjust')}}</td> - <td>初回定義</td> - </tr> - </tbody> -</table> +{{Specifications}} -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> +## ブラウザーの互換性 -<p>{{Compat("css.properties.color-adjust")}}</p> +{{Compat}} -<h2 id="See_also" name="See_also">関連情報</h2> +## 関連情報 -<ul> - <li><a href="/ja/docs/Web/HTML/Applying_color">CSS を使った HTML の要素への色の適用</a></li> - <li>その他の色に関するプロパティ: {{cssxref("color")}}, {{cssxref("background-color")}}, {{cssxref("border-color")}}, {{cssxref("outline-color")}}, {{cssxref("text-decoration-color")}}, {{cssxref("text-emphasis-color")}}, {{cssxref("text-shadow")}}, {{cssxref("caret-color")}}, and {{cssxref("column-rule-color")}}</li> - <li>{{cssxref("background-image")}}</li> -</ul> +- [CSS を使った HTML の要素への色の適用](/ja/docs/Web/HTML/Applying_color) +- その他の色に関するプロパティ: {{cssxref("color")}}, {{cssxref("background-color")}}, {{cssxref("border-color")}}, {{cssxref("outline-color")}}, {{cssxref("text-decoration-color")}}, {{cssxref("text-emphasis-color")}}, {{cssxref("text-shadow")}}, {{cssxref("caret-color")}}, and {{cssxref("column-rule-color")}} +- {{cssxref("background-image")}} +- {{cssxref("-webkit-print-color-adjust")}} diff --git a/files/ja/web/css/color/index.md b/files/ja/web/css/color/index.md index a97a3e0f78..6f5b701126 100644 --- a/files/ja/web/css/color/index.md +++ b/files/ja/web/css/color/index.md @@ -3,44 +3,48 @@ title: color slug: Web/CSS/color tags: - CSS - - CSS Property - - CSS テキスト - - CSS プロパティ - CSS 色 - - HTML 整形 - - Layout - - Reference - - Web + - CSS プロパティ + - CSS テキスト + - HTML 色 + - HTML + - レイアウト + - リファレンス + - Styling HTML + - Styling text + - ウェブ + - color + - recipe:css-property +browser-compat: css.properties.color translation_of: Web/CSS/color --- -<div>{{CSSRef}}</div> - -<p><span class="seoSummary">CSS の <strong><code>color</code></strong> プロパティは、要素のテキストや<a href="/ja/docs/Web/CSS/text-decoration">テキスト装飾</a>における前景色の<a href="/ja/docs/Web/CSS/color_value">色の値</a>を設定し、 {{cssxref("currentcolor")}} の値を設定します。</span> <code>currentcolor</code> は<em>他の</em>プロパティの間接的な値として使用される可能性があり、 {{cssxref("border-color")}} のような他の色に関するプロパティの既定値にもなったりします。</p> +{{CSSRef}} -<div>{{EmbedInteractiveExample("pages/css/color.html")}}</div> +CSS の **`color`** プロパティは、要素のテキストや[テキスト装飾](/ja/docs/Web/CSS/text-decoration)における前景色の[色の値](/ja/docs/Web/CSS/color_value)を設定し、 {{cssxref("color_value#currentcolor_keyword", "currentcolor")}} の値を設定します。`currentcolor` は*他の*プロパティの間接的な値として使用される可能性があり、 {{cssxref("border-color")}} のような他の色に関するプロパティの既定値にもなったりします。 -<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> +{{EmbedInteractiveExample("pages/css/color.html")}} -<p>HTML における色の使用の概要については、<a href="/ja/docs/Web/HTML/Applying_color">CSS を使用した HTML 要素への色の適用</a>をご覧ください。</p> +HTML における色の使用の概要については、[CSS を使用した HTML 要素への色の適用](/ja/docs/Web/HTML/Applying_color)をご覧ください。 -<h2 id="Syntax" name="Syntax">構文</h2> +## 構文 -<pre class="brush: css no-line-numbers">/* キーワード値 */ +```css +/* キーワード値 */ color: currentcolor; -/* <named-color> 値 */ +/* <named-color> 値 */ color: red; color: orange; color: tan; color: rebeccapurple; -/* <hex-color> 値 */ +/* <hex-color> 値 */ color: #090; color: #009900; color: #090a; color: #009900aa; -/* <rgb()> 値 */ +/* <rgb()> 値 */ color: rgb(34, 12, 64, 0.6); color: rgba(34, 12, 64, 0.6); color: rgb(34 12 64 / 0.6); @@ -48,7 +52,7 @@ color: rgba(34 12 64 / 0.3); color: rgb(34.0 12 64 / 60%); color: rgba(34.6 12 64 / 30%); -/* <hsl()> 値 */ +/* <hsl()> 値 */ color: hsl(30, 100%, 50%, 0.6); color: hsla(30, 100%, 50%, 0.6); color: hsl(30 100% 50% / 0.6); @@ -59,29 +63,45 @@ color: hsla(30.2 100% 50% / 60%); /* グローバル値 */ color: inherit; color: initial; +color: revert; color: unset; -</pre> +``` + +`color` プロパティは単一の {{cssxref("<color>")}} 値で指定します。 + +なお、値は {{cssxref("color")}} の形でなければなりません。 {{cssxref("<gradient>")}} は実際の型が {{cssxref("<image>")}} であるため使用できません。 + +### 値 + +- {{cssxref("<color>")}} + - : 要素のテキストや装飾部分の色を設定します。 -<p><code>color</code> プロパティは単一の {{cssxref("<color>")}} 値で指定します。</p> +## アクセシビリティの考慮 -<p>なお、値は {{cssxref("color")}} の形でなければなりません。 {{cssxref("<gradient>")}} は実際の型が {{cssxref("<image>")}} であるため使用できません。</p> +背景色とその上に配置されたテキストの色のコントラスト比が、弱視の人がページのコンテンツを読むことができる程度に高いことを確認することが重要です。 -<h3 id="Values" name="Values">値</h3> +色のコントラスト比は、テキストおよび背景色の明度の値を比較することで決定されます。現在の[ウェブコンテンツアクセシビリティガイドライン (Web Content Accessibility Guidelines, WCAG)](https://www.w3.org/WAI/intro/wcag) によれば、文字列コンテンツで 4.5:1 以上、見出しのような大きめの文字列で 3:1 以上のコントラスト比が求められています。大きめの文字列とは、[太字](/ja/docs/Web/CSS/font-weight)ならば 18.66px 以上、または 24px 以上と定義されています。 -<dl> - <dt>{{cssxref("<color>")}}</dt> - <dd>要素のテキストや装飾部分の色を設定します。</dd> -</dl> +- [WebAIM: Color Contrast Checker](https://webaim.org/resources/contrastchecker/) +- [MDN "WCAG を理解する ― ガイドライン 1.4 の解説"](/ja/docs/Web/Accessibility/Understanding_WCAG/Perceivable#guideline_1.4_make_it_easier_for_users_to_see_and_hear_content_including_separating_foreground_from_background) +- [Understanding Success Criterion 1.4.3 | W3C Understanding WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html) -<h3 id="Formal_syntax" name="Formal_syntax">形式文法</h3> +## 公式定義 + +{{cssinfo}} + +## 形式文法 {{csssyntax}} -<h2 id="Examples" name="Examples">例</h2> +## 例 + +### テキストを赤くする -<p>以下の例はすべて、要素のテキストを赤色にします。</p> +以下の例はすべて、要素のテキストを赤色にします。 -<pre class="brush: css">p { color: red; } +```css +p { color: red; } p { color: #f00; } p { color: #ff0000; } p { color: rgb(255,0,0); } @@ -92,67 +112,18 @@ p { color: hsl(0, 100%, 50%); } p { color: #ff000080; } p { color: rgba(255, 0, 0, 0.5); } p { color: hsla(0, 100%, 50%, 0.5); } -</pre> - -<h2 id="Accessibility_concerns" name="Accessibility_concerns">アクセシビリティの考慮事項</h2> - -<p>背景色とその上に配置されたテキストの色のコントラスト比が、弱視の人がページのコンテンツを読むことができる程度に高いことを確認することが重要です。</p> - -<p>色のコントラスト比は、テキストおよび背景色の明度の値を比較することで決定されます。現在の<a href="https://www.w3.org/WAI/intro/wcag">ウェブコンテンツアクセシビリティガイドライン (Web Content Accessibility Guidelines, WCAG)</a> によれば、文字列コンテンツで 4.5:1 以上、見出しのような大きめの文字列で 3:1 以上のコントラスト比が求められています。大きめの文字列とは、<a href="/ja/docs/Web/CSS/font-weight">太字</a>ならば 18.66px 以上、または 24px 以上と定義されています。</p> - -<ul> - <li><a href="https://webaim.org/resources/contrastchecker/">WebAIM: Color Contrast Checker</a></li> - <li><a href="/ja/docs/Web/Accessibility/Understanding_WCAG/Perceivable#Guideline_1.4_Make_it_easier_for_users_to_see_and_hear_content_including_separating_foreground_from_background">MDN "WCAG を理解する ― ガイドライン 1.4 の解説"</a></li> - <li><a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html">Understanding Success Criterion 1.4.3 | W3C Understanding WCAG 2.0</a></li> -</ul> - -<h2 id="Specifications" name="Specifications">仕様書</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS4 Colors', '#the-color-property', 'color')}}</td> - <td>{{Spec2('CSS4 Colors')}}</td> - <td><code>rgb()</code>, <code>rgba()</code>, <code>hsl()</code>, <code>hsla()</code> に関数記法にカンマがない構文を追加。 <code>rgb()</code>, <code>hsl()</code> にアルファ値を含めることを許可して、 <code>rgba()</code> および <code>hsla()</code> をそれらの (非推奨な) 別名に変更。<br> - <code>rebeccapurple</code> キーワードを追加。<br> - 最後の桁がアルファ値を表す、 4 桁および 8 桁の 16 進数による色の値を追加。<br> - <code>hwb()</code>, <code>device-cmyk()</code>, <code>color()</code> 関数を追加。</td> - </tr> - <tr> - <td>{{SpecName('CSS3 Colors', '#color', 'color')}}</td> - <td>{{Spec2('CSS3 Colors')}}</td> - <td>system-color を非推奨化。 SVG color を追加。 <code>rgba()</code>, <code>hsl()</code>, <code>hsla()</code> の関数記法を追加</td> - </tr> - <tr> - <td>{{SpecName('CSS2.1', 'colors.html#colors', 'color')}}</td> - <td>{{Spec2('CSS2.1')}}</td> - <td><code>orange</code> color と system-color を追加</td> - </tr> - <tr> - <td>{{SpecName('CSS1', '#color', 'color')}}</td> - <td>{{Spec2('CSS1')}}</td> - <td>初回定義</td> - </tr> - </tbody> -</table> - -<div>{{cssinfo}}</div> - -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> - -<p>{{Compat("css.properties.color")}}</p> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li>{{cssxref("<color>")}} データ型</li> - <li>他の色に関するプロパティ: {{cssxref("background-color")}}, {{cssxref("border-color")}}, {{cssxref("outline-color")}}, {{cssxref("text-decoration-color")}}, {{cssxref("text-emphasis-color")}}, {{cssxref("text-shadow")}}, {{cssxref("caret-color")}}, {{cssxref("column-rule-color")}}, {{cssxref("color-adjust")}}</li> - <li><a href="/ja/docs/Web/HTML/Applying_color">CSS を使用した HTML 要素への色の適用</a></li> -</ul> +``` + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} + +## 関連情報 + +- {{cssxref("<color>")}} データ型 +- 他の色に関するプロパティ: {{cssxref("background-color")}}, {{cssxref("border-color")}}, {{cssxref("outline-color")}}, {{cssxref("text-decoration-color")}}, {{cssxref("text-emphasis-color")}}, {{cssxref("text-shadow")}}, {{cssxref("caret-color")}}, {{cssxref("column-rule-color")}}, {{cssxref("color-adjust")}} +- [CSS を使用した HTML 要素への色の適用](/ja/docs/Web/HTML/Applying_color) diff --git a/files/ja/web/css/color_value/index.md b/files/ja/web/css/color_value/index.md index 6d4e75edb4..1944312673 100644 --- a/files/ja/web/css/color_value/index.md +++ b/files/ja/web/css/color_value/index.md @@ -4,1534 +4,1462 @@ slug: Web/CSS/color_value tags: - CSS - CSS データ型 - - Reference - - Web + - データ型 + - レイアウト + - リファレンス + - ウェブ + - 色 - hsl - hsla - rgb - rgba - - レイアウト - 単位 - - 色 + - lch + - lab +browser-compat: css.types.color translation_of: Web/CSS/color_value --- -<div>{{CSSRef}}</div> - -<p><strong><code><color></code></strong> は <a href="/ja/docs/Web/CSS">CSS</a> の<a href="/ja/docs/Web/CSS/CSS_Types">データ型</a>で、 <a class="external" href="https://en.wikipedia.org/wiki/SRGB">sRGB 色空間</a>にある一つの色を表します。 <code><color></code> は <a class="external" href="https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB">アルファチャネル</a><em>透過値</em>を含むこともでき、背景とどのように<a class="external" href="https://www.w3.org/TR/2003/REC-SVG11-20030114/masking.html#SimpleAlphaBlending">合成</a>するかを示すこともできます。</p> - -<p><code><color></code> は以下の何れかの方法で定義することができます。</p> - -<ul> - <li>キーワードの使用 (<code>blue</code> や <code>transparent</code> など)</li> - <li><a href="https://en.wikipedia.org/wiki/RGB_color_model#Geometric_representation">RGB 立方体座標方式</a>の使用 (#+16進数値や、<code>rgb()</code> や <code>rgba()</code> の関数記法によって)</li> - <li><a href="https://en.wikipedia.org/wiki/HSL_and_HSV">HSL 円柱座標方式</a> の使用 (<code>hsl()</code> や <code>hsla()</code> の関数記法によって)</li> -</ul> - -<div class="note"> -<p><strong>メモ:</strong> この記事は <code><color></code> データ型の詳細を説明しています。 HTML での色の使い方について詳しくは、 <a href="/ja/docs/Web/HTML/Applying_color">CSS を使用した HTML 要素への色の適用</a>を参照してください。</p> -</div> - -<h2 id="Syntax" name="Syntax">構文</h2> - -<p><code><color></code> データ型は以下のいずれか1つの方法を使って指定されます。</p> - -<div class="note"> -<p><strong>メモ:</strong> <code><color></code> の色は詳細に定義されていますが、出力端末によって (時には著しく) 違って見えるかもしれません。出力端末の大半は色補正がされておらず、ブラウザーによっては出力端末の<a href="https://ja.wikipedia.org/wiki/ICC%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB">色プロファイル</a>に対応していないからです。</p> -</div> - -<h3 id="Color_keywords" name="Color_keywords">色キーワード</h3> - -<p>色キーワードは大文字と小文字の区別をしない識別子で、特定の色を表します。例えば <code>red</code>, <code>blue</code>, <code>black</code>, <code>lightseagreen</code> といったものです。色名は多少なりとそれぞれの色を説明していますが、ほとんどは基本的に人工的であり、名前の仕様について強い根拠はありません。</p> - -<p>キーワードを使うとき、考慮すべき点がいくつかあります。</p> - -<ul> - <li><a href="/ja/docs/Web/HTML">HTML</a> は CSS1 に見られる基本16色のみを解釈し、解釈できない値を (ふつう完全に違う色に) 変換する際は特定のアルゴリズムを使用します。その他の色キーワードは CSS および <a href="/ja/docs/Web/SVG">SVG</a> のみで使用してください。</li> - <li>HTML とは異なり、 CSS では未知のキーワードは完全に無視されます。</li> - <li>CSS のキーワード定義された色はどれも透明度を持たず、完全に不透明な色です。</li> - <li>同じ色を表すキーワードがいくつかあります。 - <ul> - <li><code>aqua</code> / <code>cyan</code></li> - <li><code>fuchsia</code> / <code>magenta</code></li> - <li><code>darkgray</code> / <code>darkgrey</code></li> - <li><code>darkslategray</code> / <code>darkslategrey</code></li> - <li><code>dimgray</code> / <code>dimgrey</code></li> - <li><code>lightgray</code> / <code>lightgrey</code></li> - <li><code>lightslategray</code> / <code>lightslategrey</code></li> - <li><code>gray</code> / <code>grey</code></li> - <li><code>slategray</code> / <code>slategrey</code></li> - </ul> - </li> - <li>キーワードは <a href="https://ja.wikipedia.org/wiki/X_Window_System">X11</a> の色名からとられたものですが、メーカーが X11 の色を特定のハードウェアに合わせて変えていることがあるので、 RGB 値は X11 システムでの色とは異なる可能性があります。</li> -</ul> - -<div class="note"> -<p><strong>メモ:</strong> 利用可能なキーワードの一覧は、様々な CSS の仕様書によって異なります。</p> - -<ul> - <li>CSS Level 1 は基本的な16色だけを受け付けていました。<a href="https://ja.wikipedia.org/wiki/Video_Graphics_Array">VGA</a> グラフィックカードで表示可能な色の組み合わせという意味で、<em>VGA 色</em>と命名されました。</li> - <li>CSS Level 2 は <code>orange</code> キーワードを追加しました。</li> - <li>当初から、ブラウザーはその他の色を受け付けていました。初期のブラウザーのいくつかは X11 アプリケーションであったため、ほとんどは X11 色名称でしたが、少しずつ違いがありました。SVG 1.0 は正式にこうしたキーワードを定義した最初の規格でした。CSS Colors Level 3 も正式にこれらのキーワードを定義しました。このリストはよく<em>拡張色キーワード</em>、<em>X11 色</em>、<em>SVG 色</em>と呼ばれます。</li> - <li>CSS Colors Level 4 では <a href="https://codepen.io/trezy/post/honoring-a-great-man">ウェブのパイオニア、エリック・メイヤーに敬意を表して</a> <code>rebeccapurple</code> のキーワードを追加しました。</li> -</ul> -</div> - -<table id="colors_table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">キーワード</th> - <th scope="col">RGB 16 進表記</th> - <th scope="col">例</th> - </tr> - </thead> - <tbody> - <tr style="position: relative;"> - <td rowspan="16">{{SpecName("CSS1")}}</td> - <td style="text-align: center;"><code>black</code></td> - <td><code>#000000</code></td> - <td style="background: black;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>silver</code></td> - <td><code>#c0c0c0</code></td> - <td style="background: silver;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>gray</code></td> - <td><code>#808080</code></td> - <td style="background: gray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>white</code></td> - <td><code>#ffffff</code></td> - <td style="background: white;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>maroon</code></td> - <td><code>#800000</code></td> - <td style="background: maroon;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>red</code></td> - <td><code>#ff0000</code></td> - <td style="background: red;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>purple</code></td> - <td><code>#800080</code></td> - <td style="background: purple;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>fuchsia</code></td> - <td><code>#ff00ff</code></td> - <td style="background: fuchsia;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>green</code></td> - <td><code>#008000</code></td> - <td style="background: green;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lime</code></td> - <td><code>#00ff00</code></td> - <td style="background: lime;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>olive</code></td> - <td><code>#808000</code></td> - <td style="background: olive;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>yellow</code></td> - <td><code>#ffff00</code></td> - <td style="background: yellow;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>navy</code></td> - <td><code>#000080</code></td> - <td style="background: navy;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>blue</code></td> - <td><code>#0000ff</code></td> - <td style="background: blue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>teal</code></td> - <td><code>#008080</code></td> - <td style="background: teal;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>aqua</code></td> - <td><code>#00ffff</code></td> - <td style="background: aqua;"></td> - </tr> - <tr> - <td>{{SpecName("CSS2.1")}}</td> - <td style="text-align: center;"><code>orange</code></td> - <td><code>#ffa500</code></td> - <td style="background: orange;"></td> - </tr> - <tr> - <td rowspan="130">{{SpecName("CSS3 Colors")}}</td> - <td style="text-align: center;"><code>aliceblue</code></td> - <td><code>#f0f8ff</code></td> - <td style="background: aliceblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>antiquewhite</code></td> - <td><code>#faebd7</code></td> - <td style="background: antiquewhite;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>aquamarine</code></td> - <td><code>#7fffd4</code></td> - <td style="background: aquamarine;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>azure</code></td> - <td><code>#f0ffff</code></td> - <td style="background: azure;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>beige</code></td> - <td><code>#f5f5dc</code></td> - <td style="background: beige;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>bisque</code></td> - <td><code>#ffe4c4</code></td> - <td style="background: bisque;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>blanchedalmond</code></td> - <td><code>#ffebcd</code></td> - <td style="background: blanchedalmond;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>blueviolet</code></td> - <td><code>#8a2be2</code></td> - <td style="background: blueviolet;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>brown</code></td> - <td><code>#a52a2a</code></td> - <td style="background: brown;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>burlywood</code></td> - <td><code>#deb887</code></td> - <td style="background: burlywood;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>cadetblue</code></td> - <td><code>#5f9ea0</code></td> - <td style="background: cadetblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>chartreuse</code></td> - <td><code>#7fff00</code></td> - <td style="background: chartreuse;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>chocolate</code></td> - <td><code>#d2691e</code></td> - <td style="background: chocolate;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>coral</code></td> - <td><code>#ff7f50</code></td> - <td style="background: coral;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>cornflowerblue</code></td> - <td><code>#6495ed</code></td> - <td style="background: cornflowerblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>cornsilk</code></td> - <td><code>#fff8dc</code></td> - <td style="background: cornsilk;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>crimson</code></td> - <td><code>#dc143c</code></td> - <td style="background: crimson;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>cyan</code><br> - (synonym of <code>aqua</code>)</td> - <td><code>#00ffff</code></td> - <td style="background: cyan;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkblue</code></td> - <td><code>#00008b</code></td> - <td style="background: darkblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkcyan</code></td> - <td><code>#008b8b</code></td> - <td style="background: darkcyan;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkgoldenrod</code></td> - <td><code>#b8860b</code></td> - <td style="background: darkgoldenrod;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkgray</code></td> - <td><code>#a9a9a9</code></td> - <td style="background: darkgray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkgreen</code></td> - <td><code>#006400</code></td> - <td style="background: darkgreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkgrey</code></td> - <td><code>#a9a9a9</code></td> - <td style="background: darkgrey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkkhaki</code></td> - <td><code>#bdb76b</code></td> - <td style="background: darkkhaki;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkmagenta</code></td> - <td><code>#8b008b</code></td> - <td style="background: darkmagenta;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkolivegreen</code></td> - <td><code>#556b2f</code></td> - <td style="background: darkolivegreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkorange</code></td> - <td><code>#ff8c00</code></td> - <td style="background: darkorange;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkorchid</code></td> - <td><code>#9932cc</code></td> - <td style="background: darkorchid;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkred</code></td> - <td><code>#8b0000</code></td> - <td style="background: darkred;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darksalmon</code></td> - <td><code>#e9967a</code></td> - <td style="background: darksalmon;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkseagreen</code></td> - <td><code>#8fbc8f</code></td> - <td style="background: darkseagreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkslateblue</code></td> - <td><code>#483d8b</code></td> - <td style="background: darkslateblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkslategray</code></td> - <td><code>#2f4f4f</code></td> - <td style="background: darkslategray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkslategrey</code></td> - <td><code>#2f4f4f</code></td> - <td style="background: darkslategrey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkturquoise</code></td> - <td><code>#00ced1</code></td> - <td style="background: darkturquoise;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>darkviolet</code></td> - <td><code>#9400d3</code></td> - <td style="background: darkviolet;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>deeppink</code></td> - <td><code>#ff1493</code></td> - <td style="background: deeppink;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>deepskyblue</code></td> - <td><code>#00bfff</code></td> - <td style="background: deepskyblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>dimgray</code></td> - <td><code>#696969</code></td> - <td style="background: dimgray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>dimgrey</code></td> - <td><code>#696969</code></td> - <td style="background: dimgrey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>dodgerblue</code></td> - <td><code>#1e90ff</code></td> - <td style="background: dodgerblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>firebrick</code></td> - <td><code>#b22222</code></td> - <td style="background: firebrick;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>floralwhite</code></td> - <td><code>#fffaf0</code></td> - <td style="background: floralwhite;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>forestgreen</code></td> - <td><code>#228b22</code></td> - <td style="background: forestgreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>gainsboro</code></td> - <td><code>#dcdcdc</code></td> - <td style="background: gainsboro;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>ghostwhite</code></td> - <td><code>#f8f8ff</code></td> - <td style="background: ghostwhite;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>gold</code></td> - <td><code>#ffd700</code></td> - <td style="background: gold;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>goldenrod</code></td> - <td><code>#daa520</code></td> - <td style="background: goldenrod;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>greenyellow</code></td> - <td><code>#adff2f</code></td> - <td style="background: greenyellow ;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>grey</code></td> - <td><code>#808080</code></td> - <td style="background: grey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>honeydew</code></td> - <td><code>#f0fff0</code></td> - <td style="background: honeydew;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>hotpink</code></td> - <td><code>#ff69b4</code></td> - <td style="background: hotpink;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>indianred</code></td> - <td><code>#cd5c5c</code></td> - <td style="background: indianred;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>indigo</code></td> - <td><code>#4b0082</code></td> - <td style="background: indigo;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>ivory</code></td> - <td><code>#fffff0</code></td> - <td style="background: ivory;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>khaki</code></td> - <td><code>#f0e68c</code></td> - <td style="background: khaki;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lavender</code></td> - <td><code>#e6e6fa</code></td> - <td style="background: lavender;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lavenderblush</code></td> - <td><code>#fff0f5</code></td> - <td style="background: lavenderblush ;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lawngreen</code></td> - <td><code>#7cfc00</code></td> - <td style="background: lawngreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lemonchiffon</code></td> - <td><code>#fffacd</code></td> - <td style="background: lemonchiffon;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightblue</code></td> - <td><code>#add8e6</code></td> - <td style="background: lightblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightcoral</code></td> - <td><code>#f08080</code></td> - <td style="background: lightcoral;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightcyan</code></td> - <td><code>#e0ffff</code></td> - <td style="background: lightcyan;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightgoldenrodyellow</code></td> - <td><code>#fafad2</code></td> - <td style="background: lightgoldenrodyellow ;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightgray</code></td> - <td><code>#d3d3d3</code></td> - <td style="background: lightgray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightgreen</code></td> - <td><code>#90ee90</code></td> - <td style="background: lightgreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightgrey</code></td> - <td><code>#d3d3d3</code></td> - <td style="background: lightgrey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightpink</code></td> - <td><code>#ffb6c1</code></td> - <td style="background: lightpink;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightsalmon</code></td> - <td><code>#ffa07a</code></td> - <td style="background: lightsalmon;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightseagreen</code></td> - <td><code>#20b2aa</code></td> - <td style="background: lightseagreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightskyblue</code></td> - <td><code>#87cefa</code></td> - <td style="background: lightskyblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightslategray</code></td> - <td><code>#778899</code></td> - <td style="background: lightslategray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightslategrey</code></td> - <td><code>#778899</code></td> - <td style="background: lightslategrey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightsteelblue</code></td> - <td><code>#b0c4de</code></td> - <td style="background: lightsteelblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>lightyellow</code></td> - <td><code>#ffffe0</code></td> - <td style="background: lightyellow;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>limegreen</code></td> - <td><code>#32cd32</code></td> - <td style="background: limegreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>linen</code></td> - <td><code>#faf0e6</code></td> - <td style="background: linen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>magenta</code><br> - (synonym of <code>fuchsia</code>)</td> - <td><code>#ff00ff</code></td> - <td style="background: magenta;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumaquamarine</code></td> - <td><code>#66cdaa</code></td> - <td style="background: mediumaquamarine;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumblue</code></td> - <td><code>#0000cd</code></td> - <td style="background: mediumblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumorchid</code></td> - <td><code>#ba55d3</code></td> - <td style="background: mediumorchid;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumpurple</code></td> - <td><code>#9370db</code></td> - <td style="background: mediumpurple;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumseagreen</code></td> - <td><code>#3cb371</code></td> - <td style="background: mediumseagreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumslateblue</code></td> - <td><code>#7b68ee</code></td> - <td style="background: mediumslateblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumspringgreen</code></td> - <td><code>#00fa9a</code></td> - <td style="background: mediumspringgreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumturquoise</code></td> - <td><code>#48d1cc</code></td> - <td style="background: mediumturquoise;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mediumvioletred</code></td> - <td><code>#c71585</code></td> - <td style="background: mediumvioletred;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>midnightblue</code></td> - <td><code>#191970</code></td> - <td style="background: midnightblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mintcream</code></td> - <td><code>#f5fffa</code></td> - <td style="background: mintcream;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>mistyrose</code></td> - <td><code>#ffe4e1</code></td> - <td style="background: mistyrose;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>moccasin</code></td> - <td><code>#ffe4b5</code></td> - <td style="background: moccasin;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>navajowhite</code></td> - <td><code>#ffdead</code></td> - <td style="background: navajowhite;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>oldlace</code></td> - <td><code>#fdf5e6</code></td> - <td style="background: oldlace;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>olivedrab</code></td> - <td><code>#6b8e23</code></td> - <td style="background: olivedrab;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>orangered</code></td> - <td><code>#ff4500</code></td> - <td style="background: orangered;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>orchid</code></td> - <td><code>#da70d6</code></td> - <td style="background: orchid;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>palegoldenrod</code></td> - <td><code>#eee8aa</code></td> - <td style="background: palegoldenrod;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>palegreen</code></td> - <td><code>#98fb98</code></td> - <td style="background: palegreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>paleturquoise</code></td> - <td><code>#afeeee</code></td> - <td style="background: paleturquoise;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>palevioletred</code></td> - <td><code>#db7093</code></td> - <td style="background: palevioletred;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>papayawhip</code></td> - <td><code>#ffefd5</code></td> - <td style="background: papayawhip;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>peachpuff</code></td> - <td><code>#ffdab9</code></td> - <td style="background: peachpuff;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>peru</code></td> - <td><code>#cd853f</code></td> - <td style="background: peru;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>pink</code></td> - <td><code>#ffc0cb</code></td> - <td style="background: pink;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>plum</code></td> - <td><code>#dda0dd</code></td> - <td style="background: plum;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>powderblue</code></td> - <td><code>#b0e0e6</code></td> - <td style="background: powderblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>rosybrown</code></td> - <td><code>#bc8f8f</code></td> - <td style="background: rosybrown;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>royalblue</code></td> - <td><code>#4169e1</code></td> - <td style="background: royalblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>saddlebrown</code></td> - <td><code>#8b4513</code></td> - <td style="background: saddlebrown;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>salmon</code></td> - <td><code>#fa8072</code></td> - <td style="background: salmon;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>sandybrown</code></td> - <td><code>#f4a460</code></td> - <td style="background: sandybrown;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>seagreen</code></td> - <td><code>#2e8b57</code></td> - <td style="background: seagreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>seashell</code></td> - <td><code>#fff5ee</code></td> - <td style="background: seashell;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>sienna</code></td> - <td><code>#a0522d</code></td> - <td style="background: sienna;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>skyblue</code></td> - <td><code>#87ceeb</code></td> - <td style="background: skyblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>slateblue</code></td> - <td><code>#6a5acd</code></td> - <td style="background: slateblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>slategray</code></td> - <td><code>#708090</code></td> - <td style="background: slategray;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>slategrey</code></td> - <td><code>#708090</code></td> - <td style="background: slategrey;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>snow</code></td> - <td><code>#fffafa</code></td> - <td style="background: snow;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>springgreen</code></td> - <td><code>#00ff7f</code></td> - <td style="background: springgreen;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>steelblue</code></td> - <td><code>#4682b4</code></td> - <td style="background: steelblue;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>tan</code></td> - <td><code>#d2b48c</code></td> - <td style="background: tan;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>thistle</code></td> - <td><code>#d8bfd8</code></td> - <td style="background: thistle;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>tomato</code></td> - <td><code>#ff6347</code></td> - <td style="background: tomato;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>turquoise</code></td> - <td><code>#40e0d0</code></td> - <td style="background: turquoise;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>violet</code></td> - <td><code>#ee82ee</code></td> - <td style="background: violet;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>wheat</code></td> - <td><code>#f5deb3</code></td> - <td style="background: wheat;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>whitesmoke</code></td> - <td><code>#f5f5f5</code></td> - <td style="background: whitesmoke;"></td> - </tr> - <tr> - <td style="text-align: center;"><code>yellowgreen</code></td> - <td><code>#9acd32</code></td> - <td style="background: yellowgreen;"></td> - </tr> - <tr> - <td>{{SpecName("CSS4 Colors")}}</td> - <td style="text-align: center;"><a href="https://en.wikipedia.org/wiki/Eric_A._Meyer#Personal_life"><code>rebeccapurple</code></a></td> - <td><code>#663399</code></td> - <td style="background: rebeccapurple;"></td> - </tr> - </tbody> +{{CSSRef}} + +**`<color>`** は [CSS](/ja/docs/Web/CSS) の[データ型](/ja/docs/Web/CSS/CSS_Types)で、一つの色を表します。 +`<color>` は[アルファチャネル](https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%95%E3%82%A1%E3%83%81%E3%83%A3%E3%83%B3%E3%83%8D%E3%83%AB)*透過値*を含むことがあり、この色を背景とどれだけ<a class="external" href="https://www.w3.org/TR/2003/REC-SVG11-20030114/masking.html#SimpleAlphaBlending">合成</a>するかを示すこともできます。 + +`<color>` は以下の何れかの方法で定義することができます。 + +- キーワードを使用すること (`blue` や `transparent` など)。既存のキーワードはすべて、[sRGB 色空間](https://en.wikipedia.org/wiki/SRGB)内の色で定められています。 +- [RGB 立方体座標方式](https://en.wikipedia.org/wiki/RGB_color_model#Geometric_representation)の使用 (# + 16 進数値や、`rgb()` や `rgba()` の関数表記による)。 + これらは常に[sRGB 色空間](https://en.wikipedia.org/wiki/SRGB)内の色で定められます。 +- [HSL 円筒座標系](https://ja.wikipedia.org/wiki/HSV%E8%89%B2%E7%A9%BA%E9%96%93) の使用 ({{cssxref("color_value/hsl()","hsl()")}} や {{cssxref("color_value/hsla()","hsla()")}} の関数表記による) + これらは常に[sRGB 色空間](https://en.wikipedia.org/wiki/SRGB)内の色で定められます。 +- [LCH 円筒座標系](https://ja.wikipedia.org/wiki/CIE_Luv%E8%89%B2%E7%A9%BA%E9%96%93#%E5%86%86%E7%AD%92%E5%BA%A7%E6%A8%99%E7%B3%BB%E3%81%AB%E3%82%88%E3%82%8B%E8%A1%A8%E7%8F%BE_(CIELCH))の使用 ({{cssxref("color_value/lch()","lch()")}} 関数表記による) + これは任意の視覚可能な色を指定することができます。 +- [Lab 座標系](https://ja.wikipedia.org/wiki/Lab%E8%89%B2%E7%A9%BA%E9%96%93) ({{cssxref("color_value/lab()","lab()")}} 関数表記による) + これは任意の視覚可能な色を指定することができます。 +- {{cssxref("color_value/color()","color()")}} 関数表記を使用して、様々な定義済みまたは独自の色空間で色を指定することができます。 + +> **Note:** この記事は `<color>` データ型の詳細を説明しています。 HTML での色の使い方について詳しくは、 [CSS を使用した HTML 要素への色の適用](/ja/docs/Web/HTML/Applying_color)を参照してください。 + +## 構文 + +`<color>` データ型は以下のいずれか1つの方法を使って指定されます。 + +> **Note:** `<color>` の色は詳細に定義されていますが、出力機器によって (時には著しく) 違って見えるかもしれません。出力機器の大半は色補正がされておらず、ブラウザーによっては出力機器の[色プロファイル](https://ja.wikipedia.org/wiki/ICC%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)に対応していないからです。 + +### 色キーワード + +色キーワードは大文字と小文字の区別をしない識別子で、特定の色を表します。例えば `red`, `blue`, `black`, `lightseagreen` といったものです。色名は多少なりとそれぞれの色を説明していますが、ほとんどは基本的に人工的であり、名前の仕様について強い根拠はありません。 + +キーワードを使うとき、考慮すべき点がいくつかあります。 + +- [HTML](/ja/docs/Web/HTML) は CSS1 に見られる基本 16 色のみを解釈し、解釈できない値を (ふつう完全に違う色に) 変換する際は特定のアルゴリズムを使用します。その他の色キーワードは CSS および [SVG](/ja/docs/Web/SVG) のみで使用してください。 +- HTML とは異なり、 CSS では未知のキーワードは完全に無視されます。 +- CSS のキーワード定義された色はどれも透明度を持たず、完全に不透明な色です。 +- 同じ色を表すキーワードがいくつかあります。 + + - `aqua` / `cyan` + - `fuchsia` / `magenta` + - `darkgray` / `darkgrey` + - `darkslategray` / `darkslategrey` + - `dimgray` / `dimgrey` + - `lightgray` / `lightgrey` + - `lightslategray` / `lightslategrey` + - `gray` / `grey` + - `slategray` / `slategrey` + +- キーワードは [X11](https://ja.wikipedia.org/wiki/X_Window_System) の色名からとられたものですが、メーカーが X11 の色を特定のハードウェアに合わせて変えていることがあるので、 RGB 値は X11 システムでの色とは異なる可能性があります。 + +> **Note:** 利用可能なキーワードの一覧は、様々な CSS の仕様書によって異なります。 +> +> - CSS Level 1 では基本的な 16 色だけを受け付けていました。これは *VGA 色*と呼ばれ、[VGA](https://ja.wikipedia.org/wiki/Video_Graphics_Array) グラフィックカードで表示可能な色です。 +> - CSS Level 2 では `orange` キーワードが追加されました。 +> - 初期のブラウザーでは仕様にない様々な色 (主に X11 色リストからの転用) に対応していましたが、正式に定義されたのは SVG 1.0 と CSS Colors Level 3 からでした。これらはよく*拡張色キーワード*、*X11 色*、*SVG 色*と呼ばれます。 +> - CSS Colors Level 4 では [ウェブのパイオニア、エリック・メイヤーに敬意を表して](https://codepen.io/trezy/post/honoring-a-great-man) `rebeccapurple` のキーワードを追加しました。 + +<table> + <thead> + <tr> + <th scope="col">仕様書</th> + <th scope="col">キーワード</th> + <th scope="col">RGB 16 進表記</th> + <th scope="col">例</th> + </tr> + </thead> + <tbody> + <tr style="position: relative"> + <td rowspan="16">{{SpecName("CSS1")}}</td> + <td style="text-align: center"><code>black</code></td> + <td><code>#000000</code></td> + <td style="background: black"></td> + </tr> + <tr> + <td style="text-align: center"><code>silver</code></td> + <td><code>#c0c0c0</code></td> + <td style="background: silver"></td> + </tr> + <tr> + <td style="text-align: center"><code>gray</code></td> + <td><code>#808080</code></td> + <td style="background: gray"></td> + </tr> + <tr> + <td style="text-align: center"><code>white</code></td> + <td><code>#ffffff</code></td> + <td style="background: white"></td> + </tr> + <tr> + <td style="text-align: center"><code>maroon</code></td> + <td><code>#800000</code></td> + <td style="background: maroon"></td> + </tr> + <tr> + <td style="text-align: center"><code>red</code></td> + <td><code>#ff0000</code></td> + <td style="background: red"></td> + </tr> + <tr> + <td style="text-align: center"><code>purple</code></td> + <td><code>#800080</code></td> + <td style="background: purple"></td> + </tr> + <tr> + <td style="text-align: center"><code>fuchsia</code></td> + <td><code>#ff00ff</code></td> + <td style="background: fuchsia"></td> + </tr> + <tr> + <td style="text-align: center"><code>green</code></td> + <td><code>#008000</code></td> + <td style="background: green"></td> + </tr> + <tr> + <td style="text-align: center"><code>lime</code></td> + <td><code>#00ff00</code></td> + <td style="background: lime"></td> + </tr> + <tr> + <td style="text-align: center"><code>olive</code></td> + <td><code>#808000</code></td> + <td style="background: olive"></td> + </tr> + <tr> + <td style="text-align: center"><code>yellow</code></td> + <td><code>#ffff00</code></td> + <td style="background: yellow"></td> + </tr> + <tr> + <td style="text-align: center"><code>navy</code></td> + <td><code>#000080</code></td> + <td style="background: navy"></td> + </tr> + <tr> + <td style="text-align: center"><code>blue</code></td> + <td><code>#0000ff</code></td> + <td style="background: blue"></td> + </tr> + <tr> + <td style="text-align: center"><code>teal</code></td> + <td><code>#008080</code></td> + <td style="background: teal"></td> + </tr> + <tr> + <td style="text-align: center"><code>aqua</code></td> + <td><code>#00ffff</code></td> + <td style="background: aqua"></td> + </tr> + <tr> + <td>{{SpecName("CSS2.1")}}</td> + <td style="text-align: center"><code>orange</code></td> + <td><code>#ffa500</code></td> + <td style="background: orange"></td> + </tr> + <tr> + <td rowspan="130">{{SpecName("CSS3 Colors")}}</td> + <td style="text-align: center"><code>aliceblue</code></td> + <td><code>#f0f8ff</code></td> + <td style="background: aliceblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>antiquewhite</code></td> + <td><code>#faebd7</code></td> + <td style="background: antiquewhite"></td> + </tr> + <tr> + <td style="text-align: center"><code>aquamarine</code></td> + <td><code>#7fffd4</code></td> + <td style="background: aquamarine"></td> + </tr> + <tr> + <td style="text-align: center"><code>azure</code></td> + <td><code>#f0ffff</code></td> + <td style="background: azure"></td> + </tr> + <tr> + <td style="text-align: center"><code>beige</code></td> + <td><code>#f5f5dc</code></td> + <td style="background: beige"></td> + </tr> + <tr> + <td style="text-align: center"><code>bisque</code></td> + <td><code>#ffe4c4</code></td> + <td style="background: bisque"></td> + </tr> + <tr> + <td style="text-align: center"><code>blanchedalmond</code></td> + <td><code>#ffebcd</code></td> + <td style="background: blanchedalmond"></td> + </tr> + <tr> + <td style="text-align: center"><code>blueviolet</code></td> + <td><code>#8a2be2</code></td> + <td style="background: blueviolet"></td> + </tr> + <tr> + <td style="text-align: center"><code>brown</code></td> + <td><code>#a52a2a</code></td> + <td style="background: brown"></td> + </tr> + <tr> + <td style="text-align: center"><code>burlywood</code></td> + <td><code>#deb887</code></td> + <td style="background: burlywood"></td> + </tr> + <tr> + <td style="text-align: center"><code>cadetblue</code></td> + <td><code>#5f9ea0</code></td> + <td style="background: cadetblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>chartreuse</code></td> + <td><code>#7fff00</code></td> + <td style="background: chartreuse"></td> + </tr> + <tr> + <td style="text-align: center"><code>chocolate</code></td> + <td><code>#d2691e</code></td> + <td style="background: chocolate"></td> + </tr> + <tr> + <td style="text-align: center"><code>coral</code></td> + <td><code>#ff7f50</code></td> + <td style="background: coral"></td> + </tr> + <tr> + <td style="text-align: center"><code>cornflowerblue</code></td> + <td><code>#6495ed</code></td> + <td style="background: cornflowerblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>cornsilk</code></td> + <td><code>#fff8dc</code></td> + <td style="background: cornsilk"></td> + </tr> + <tr> + <td style="text-align: center"><code>crimson</code></td> + <td><code>#dc143c</code></td> + <td style="background: crimson"></td> + </tr> + <tr> + <td style="text-align: center"> + <code>cyan</code><br />(<code>aqua</code> の同義語) + </td> + <td><code>#00ffff</code></td> + <td style="background: cyan"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkblue</code></td> + <td><code>#00008b</code></td> + <td style="background: darkblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkcyan</code></td> + <td><code>#008b8b</code></td> + <td style="background: darkcyan"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkgoldenrod</code></td> + <td><code>#b8860b</code></td> + <td style="background: darkgoldenrod"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkgray</code></td> + <td><code>#a9a9a9</code></td> + <td style="background: darkgray"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkgreen</code></td> + <td><code>#006400</code></td> + <td style="background: darkgreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkgrey</code></td> + <td><code>#a9a9a9</code></td> + <td style="background: darkgrey"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkkhaki</code></td> + <td><code>#bdb76b</code></td> + <td style="background: darkkhaki"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkmagenta</code></td> + <td><code>#8b008b</code></td> + <td style="background: darkmagenta"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkolivegreen</code></td> + <td><code>#556b2f</code></td> + <td style="background: darkolivegreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkorange</code></td> + <td><code>#ff8c00</code></td> + <td style="background: darkorange"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkorchid</code></td> + <td><code>#9932cc</code></td> + <td style="background: darkorchid"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkred</code></td> + <td><code>#8b0000</code></td> + <td style="background: darkred"></td> + </tr> + <tr> + <td style="text-align: center"><code>darksalmon</code></td> + <td><code>#e9967a</code></td> + <td style="background: darksalmon"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkseagreen</code></td> + <td><code>#8fbc8f</code></td> + <td style="background: darkseagreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkslateblue</code></td> + <td><code>#483d8b</code></td> + <td style="background: darkslateblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkslategray</code></td> + <td><code>#2f4f4f</code></td> + <td style="background: darkslategray"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkslategrey</code></td> + <td><code>#2f4f4f</code></td> + <td style="background: darkslategrey"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkturquoise</code></td> + <td><code>#00ced1</code></td> + <td style="background: darkturquoise"></td> + </tr> + <tr> + <td style="text-align: center"><code>darkviolet</code></td> + <td><code>#9400d3</code></td> + <td style="background: darkviolet"></td> + </tr> + <tr> + <td style="text-align: center"><code>deeppink</code></td> + <td><code>#ff1493</code></td> + <td style="background: deeppink"></td> + </tr> + <tr> + <td style="text-align: center"><code>deepskyblue</code></td> + <td><code>#00bfff</code></td> + <td style="background: deepskyblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>dimgray</code></td> + <td><code>#696969</code></td> + <td style="background: dimgray"></td> + </tr> + <tr> + <td style="text-align: center"><code>dimgrey</code></td> + <td><code>#696969</code></td> + <td style="background: dimgrey"></td> + </tr> + <tr> + <td style="text-align: center"><code>dodgerblue</code></td> + <td><code>#1e90ff</code></td> + <td style="background: dodgerblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>firebrick</code></td> + <td><code>#b22222</code></td> + <td style="background: firebrick"></td> + </tr> + <tr> + <td style="text-align: center"><code>floralwhite</code></td> + <td><code>#fffaf0</code></td> + <td style="background: floralwhite"></td> + </tr> + <tr> + <td style="text-align: center"><code>forestgreen</code></td> + <td><code>#228b22</code></td> + <td style="background: forestgreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>gainsboro</code></td> + <td><code>#dcdcdc</code></td> + <td style="background: gainsboro"></td> + </tr> + <tr> + <td style="text-align: center"><code>ghostwhite</code></td> + <td><code>#f8f8ff</code></td> + <td style="background: ghostwhite"></td> + </tr> + <tr> + <td style="text-align: center"><code>gold</code></td> + <td><code>#ffd700</code></td> + <td style="background: gold"></td> + </tr> + <tr> + <td style="text-align: center"><code>goldenrod</code></td> + <td><code>#daa520</code></td> + <td style="background: goldenrod"></td> + </tr> + <tr> + <td style="text-align: center"><code>greenyellow</code></td> + <td><code>#adff2f</code></td> + <td style="background: greenyellow"></td> + </tr> + <tr> + <td style="text-align: center"><code>grey</code></td> + <td><code>#808080</code></td> + <td style="background: grey"></td> + </tr> + <tr> + <td style="text-align: center"><code>honeydew</code></td> + <td><code>#f0fff0</code></td> + <td style="background: honeydew"></td> + </tr> + <tr> + <td style="text-align: center"><code>hotpink</code></td> + <td><code>#ff69b4</code></td> + <td style="background: hotpink"></td> + </tr> + <tr> + <td style="text-align: center"><code>indianred</code></td> + <td><code>#cd5c5c</code></td> + <td style="background: indianred"></td> + </tr> + <tr> + <td style="text-align: center"><code>indigo</code></td> + <td><code>#4b0082</code></td> + <td style="background: indigo"></td> + </tr> + <tr> + <td style="text-align: center"><code>ivory</code></td> + <td><code>#fffff0</code></td> + <td style="background: ivory"></td> + </tr> + <tr> + <td style="text-align: center"><code>khaki</code></td> + <td><code>#f0e68c</code></td> + <td style="background: khaki"></td> + </tr> + <tr> + <td style="text-align: center"><code>lavender</code></td> + <td><code>#e6e6fa</code></td> + <td style="background: lavender"></td> + </tr> + <tr> + <td style="text-align: center"><code>lavenderblush</code></td> + <td><code>#fff0f5</code></td> + <td style="background: lavenderblush"></td> + </tr> + <tr> + <td style="text-align: center"><code>lawngreen</code></td> + <td><code>#7cfc00</code></td> + <td style="background: lawngreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>lemonchiffon</code></td> + <td><code>#fffacd</code></td> + <td style="background: lemonchiffon"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightblue</code></td> + <td><code>#add8e6</code></td> + <td style="background: lightblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightcoral</code></td> + <td><code>#f08080</code></td> + <td style="background: lightcoral"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightcyan</code></td> + <td><code>#e0ffff</code></td> + <td style="background: lightcyan"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightgoldenrodyellow</code></td> + <td><code>#fafad2</code></td> + <td style="background: lightgoldenrodyellow"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightgray</code></td> + <td><code>#d3d3d3</code></td> + <td style="background: lightgray"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightgreen</code></td> + <td><code>#90ee90</code></td> + <td style="background: lightgreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightgrey</code></td> + <td><code>#d3d3d3</code></td> + <td style="background: lightgrey"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightpink</code></td> + <td><code>#ffb6c1</code></td> + <td style="background: lightpink"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightsalmon</code></td> + <td><code>#ffa07a</code></td> + <td style="background: lightsalmon"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightseagreen</code></td> + <td><code>#20b2aa</code></td> + <td style="background: lightseagreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightskyblue</code></td> + <td><code>#87cefa</code></td> + <td style="background: lightskyblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightslategray</code></td> + <td><code>#778899</code></td> + <td style="background: lightslategray"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightslategrey</code></td> + <td><code>#778899</code></td> + <td style="background: lightslategrey"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightsteelblue</code></td> + <td><code>#b0c4de</code></td> + <td style="background: lightsteelblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>lightyellow</code></td> + <td><code>#ffffe0</code></td> + <td style="background: lightyellow"></td> + </tr> + <tr> + <td style="text-align: center"><code>limegreen</code></td> + <td><code>#32cd32</code></td> + <td style="background: limegreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>linen</code></td> + <td><code>#faf0e6</code></td> + <td style="background: linen"></td> + </tr> + <tr> + <td style="text-align: center"> + <code>magenta</code><br />(<code>fuchsia</code> の同義語) + </td> + <td><code>#ff00ff</code></td> + <td style="background: magenta"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumaquamarine</code></td> + <td><code>#66cdaa</code></td> + <td style="background: mediumaquamarine"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumblue</code></td> + <td><code>#0000cd</code></td> + <td style="background: mediumblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumorchid</code></td> + <td><code>#ba55d3</code></td> + <td style="background: mediumorchid"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumpurple</code></td> + <td><code>#9370db</code></td> + <td style="background: mediumpurple"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumseagreen</code></td> + <td><code>#3cb371</code></td> + <td style="background: mediumseagreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumslateblue</code></td> + <td><code>#7b68ee</code></td> + <td style="background: mediumslateblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumspringgreen</code></td> + <td><code>#00fa9a</code></td> + <td style="background: mediumspringgreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumturquoise</code></td> + <td><code>#48d1cc</code></td> + <td style="background: mediumturquoise"></td> + </tr> + <tr> + <td style="text-align: center"><code>mediumvioletred</code></td> + <td><code>#c71585</code></td> + <td style="background: mediumvioletred"></td> + </tr> + <tr> + <td style="text-align: center"><code>midnightblue</code></td> + <td><code>#191970</code></td> + <td style="background: midnightblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>mintcream</code></td> + <td><code>#f5fffa</code></td> + <td style="background: mintcream"></td> + </tr> + <tr> + <td style="text-align: center"><code>mistyrose</code></td> + <td><code>#ffe4e1</code></td> + <td style="background: mistyrose"></td> + </tr> + <tr> + <td style="text-align: center"><code>moccasin</code></td> + <td><code>#ffe4b5</code></td> + <td style="background: moccasin"></td> + </tr> + <tr> + <td style="text-align: center"><code>navajowhite</code></td> + <td><code>#ffdead</code></td> + <td style="background: navajowhite"></td> + </tr> + <tr> + <td style="text-align: center"><code>oldlace</code></td> + <td><code>#fdf5e6</code></td> + <td style="background: oldlace"></td> + </tr> + <tr> + <td style="text-align: center"><code>olivedrab</code></td> + <td><code>#6b8e23</code></td> + <td style="background: olivedrab"></td> + </tr> + <tr> + <td style="text-align: center"><code>orangered</code></td> + <td><code>#ff4500</code></td> + <td style="background: orangered"></td> + </tr> + <tr> + <td style="text-align: center"><code>orchid</code></td> + <td><code>#da70d6</code></td> + <td style="background: orchid"></td> + </tr> + <tr> + <td style="text-align: center"><code>palegoldenrod</code></td> + <td><code>#eee8aa</code></td> + <td style="background: palegoldenrod"></td> + </tr> + <tr> + <td style="text-align: center"><code>palegreen</code></td> + <td><code>#98fb98</code></td> + <td style="background: palegreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>paleturquoise</code></td> + <td><code>#afeeee</code></td> + <td style="background: paleturquoise"></td> + </tr> + <tr> + <td style="text-align: center"><code>palevioletred</code></td> + <td><code>#db7093</code></td> + <td style="background: palevioletred"></td> + </tr> + <tr> + <td style="text-align: center"><code>papayawhip</code></td> + <td><code>#ffefd5</code></td> + <td style="background: papayawhip"></td> + </tr> + <tr> + <td style="text-align: center"><code>peachpuff</code></td> + <td><code>#ffdab9</code></td> + <td style="background: peachpuff"></td> + </tr> + <tr> + <td style="text-align: center"><code>peru</code></td> + <td><code>#cd853f</code></td> + <td style="background: peru"></td> + </tr> + <tr> + <td style="text-align: center"><code>pink</code></td> + <td><code>#ffc0cb</code></td> + <td style="background: pink"></td> + </tr> + <tr> + <td style="text-align: center"><code>plum</code></td> + <td><code>#dda0dd</code></td> + <td style="background: plum"></td> + </tr> + <tr> + <td style="text-align: center"><code>powderblue</code></td> + <td><code>#b0e0e6</code></td> + <td style="background: powderblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>rosybrown</code></td> + <td><code>#bc8f8f</code></td> + <td style="background: rosybrown"></td> + </tr> + <tr> + <td style="text-align: center"><code>royalblue</code></td> + <td><code>#4169e1</code></td> + <td style="background: royalblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>saddlebrown</code></td> + <td><code>#8b4513</code></td> + <td style="background: saddlebrown"></td> + </tr> + <tr> + <td style="text-align: center"><code>salmon</code></td> + <td><code>#fa8072</code></td> + <td style="background: salmon"></td> + </tr> + <tr> + <td style="text-align: center"><code>sandybrown</code></td> + <td><code>#f4a460</code></td> + <td style="background: sandybrown"></td> + </tr> + <tr> + <td style="text-align: center"><code>seagreen</code></td> + <td><code>#2e8b57</code></td> + <td style="background: seagreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>seashell</code></td> + <td><code>#fff5ee</code></td> + <td style="background: seashell"></td> + </tr> + <tr> + <td style="text-align: center"><code>sienna</code></td> + <td><code>#a0522d</code></td> + <td style="background: sienna"></td> + </tr> + <tr> + <td style="text-align: center"><code>skyblue</code></td> + <td><code>#87ceeb</code></td> + <td style="background: skyblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>slateblue</code></td> + <td><code>#6a5acd</code></td> + <td style="background: slateblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>slategray</code></td> + <td><code>#708090</code></td> + <td style="background: slategray"></td> + </tr> + <tr> + <td style="text-align: center"><code>slategrey</code></td> + <td><code>#708090</code></td> + <td style="background: slategrey"></td> + </tr> + <tr> + <td style="text-align: center"><code>snow</code></td> + <td><code>#fffafa</code></td> + <td style="background: snow"></td> + </tr> + <tr> + <td style="text-align: center"><code>springgreen</code></td> + <td><code>#00ff7f</code></td> + <td style="background: springgreen"></td> + </tr> + <tr> + <td style="text-align: center"><code>steelblue</code></td> + <td><code>#4682b4</code></td> + <td style="background: steelblue"></td> + </tr> + <tr> + <td style="text-align: center"><code>tan</code></td> + <td><code>#d2b48c</code></td> + <td style="background: tan"></td> + </tr> + <tr> + <td style="text-align: center"><code>thistle</code></td> + <td><code>#d8bfd8</code></td> + <td style="background: thistle"></td> + </tr> + <tr> + <td style="text-align: center"><code>tomato</code></td> + <td><code>#ff6347</code></td> + <td style="background: tomato"></td> + </tr> + <tr> + <td style="text-align: center"><code>turquoise</code></td> + <td><code>#40e0d0</code></td> + <td style="background: turquoise"></td> + </tr> + <tr> + <td style="text-align: center"><code>violet</code></td> + <td><code>#ee82ee</code></td> + <td style="background: violet"></td> + </tr> + <tr> + <td style="text-align: center"><code>wheat</code></td> + <td><code>#f5deb3</code></td> + <td style="background: wheat"></td> + </tr> + <tr> + <td style="text-align: center"><code>whitesmoke</code></td> + <td><code>#f5f5f5</code></td> + <td style="background: whitesmoke"></td> + </tr> + <tr> + <td style="text-align: center"><code>yellowgreen</code></td> + <td><code>#9acd32</code></td> + <td style="background: yellowgreen"></td> + </tr> + <tr> + <td>{{SpecName("CSS4 Colors")}}</td> + <td style="text-align: center"> + <a href="https://en.wikipedia.org/wiki/Eric_A._Meyer#Personal_life" + ><code>rebeccapurple</code></a + > + </td> + <td><code>#663399</code></td> + <td style="background: rebeccapurple"></td> + </tr> + </tbody> </table> -<h3 id="transparent_keyword" name="transparent_keyword"><code id="transparent">transparent</code> キーワード</h3> +### `transparent` キーワード -<p><code>transparent</code> は完全な透明色を表すキーワードです。この色が付いた項目の背後の背景は完全に見えます。厳密にはこれはアルファチャンネルに最大値を持つ黒色で、計算値<code> rgba(0,0,0,0)</code> へのショートカットです。</p> +`transparent` は完全な透明色を表すキーワードです。この色が付いた項目の背後の背景は完全に見えます。厳密には、`transparent` は `rgba(0,0,0,0)` のショートカットです。 -<div class="note"> -<p><strong>互換性のメモ:</strong> {{cssxref("gradient","グラデーション")}}の場合の同様、予期しない動きを避けるために、現在の CSS の仕様書は <code>transparent</code> を<a href="https://www.w3.org/TR/2012/CR-css3-images-20120417/#color-stop-syntax">アルファ乗算色空間</a>で計算するように定めています。しかし、古いブラウザーはアルファ―チャンネルが <code>0</code> の値である黒として扱うかもしれません。</p> -</div> +> **Note:** {{cssxref("gradient","グラデーション")}}の場合の同様、予期しない動きを避けるために、現在の CSS の仕様書は `transparent` を[アルファ乗算色空間](https://www.w3.org/TR/2012/CR-css3-images-20120417/#color-stop-syntax)で計算するように定めています。しかし、古いブラウザーはアルファチャンネルが `0` の値である黒として扱うかもしれません。 -<div class="note"> -<p><strong>歴史的なメモ:</strong> <code>transparent</code> キーワードは CSS Level 2 (Revision 1) では色ではありませんでした。これは {{Cssxref("background")}} プロパティと {{Cssxref("border")}} プロパティの2つにおいて、通常の <code><color></code> の代わりに使用することができた特殊なキーワードでした。基本的に、継承された色を開発者が上書きすることができるように追加されたものです。 CSS Colors Level 3 でアルファチャンネルが出現し、 <code>transparent</code> は色として再定義されました。 <code><color></code> の値を使用することができる場所ならば、どこでも使用することができるようになりました。</p> -</div> +> **Note:** `transparent` キーワードは CSS Level 2 (Revision 1) では色ではありませんでした。これは {{Cssxref("background")}} プロパティと {{Cssxref("border")}} プロパティの 2 つにおいて、通常の `<color>` の代わりに使用することができた特殊なキーワードでした。基本的に、継承された色を開発者が上書きすることができるように追加されたものです。 CSS Colors Level 3 でアルファチャンネルが出現し、 `transparent` は色として再定義されました。 `<color>` の値を使用することができる場所ならば、どこでも使用することができるようになりました。 -<h3 id="currentcolor_keyword" name="currentcolor_keyword"><code id="currentColor">currentcolor</code> キーワード</h3> +### `currentColor` キーワード -<p><code>currentcolor</code> キーワードは、要素の {{Cssxref("color")}} プロパティの値を表します。これで <code>color</code> の値をプロパティが既定で受け取らなくても利用することができます。</p> +`currentColor` キーワードは、要素の {{Cssxref("color")}} プロパティの値を表します。これで `color` の値をプロパティが既定で受け取らなくても利用することができます。 -<p><code>currentcolor</code> が <code>color</code> プロパティの値として使用された場合、 <code>color</code> プロパティが継承した値が使用されます。</p> +`currentColor` が `color` プロパティの値として使用された場合、 `color` プロパティが継承した値が使用されます。 -<h4 id="currentcolor_example" name="currentcolor_example">currentcolor の例</h4> +<h4 id="currentColor_example">currentcolor の例</h4> -<h5 id="HTML">HTML</h5> - -<pre class="brush: html"><div style="color:blue; border: 1px dashed currentcolor;"> +```html +<div style="color:blue; border: 1px dashed currentColor;"> この文字列の色は青です。 - <div style="background:currentcolor; height:9px;"></div> + <div style="background:currentColor; height:9px;"></div> このブロックは青い境界線で囲まれています。 -</div></pre> - -<h5 id="Result" name="Result">結果</h5> - -<p>{{EmbedLiveSample('currentcolor_example')}}</p> - -<h3 id="RGB_色">RGB 色</h3> - -<p>RGB 色モデルは赤、緑、青の成分によって指定された色を定義します。任意のアルファ成分は色の透過性を表します。</p> - -<h4 id="Syntax_2" name="Syntax_2">構文</h4> - -<p>RGB 色は16進表記 (<code>#</code> の接頭辞つき) と関数表記 (<code id="rgb()">rgb()</code>, <code id="rgba()">rgba()</code>) の両方で表すことができます。</p> - -<div class="note"> -<p><strong>メモ:</strong> CSS Colors Level 4 では、 <code>rgba()</code> は <code>rgb()</code> の別名です。 Level 4 標準を実装するブラウザーでは、同じ引数を受け取り同じ挙動をします。</p> </div> +``` -<dl> - <dt>16進表記: <code>#RRGGBB[AA]</code></dt> - <dd><code>R</code> (赤)、 <code>G</code> (緑)、 <code>B</code> (青) と <code>A</code> (アルファ) は16進数の文字 (0–9, A–F) です。 <code>A</code> は任意です。例えば、 <code>#ff0000</code> は <code>#ff0000ff</code> と同等です。</dd> - <dt>16進表記: <code>#RGB[A]</code></dt> - <dd><code>R</code> (赤)、 <code>G</code> (緑)、 <code>B</code> (青) と <code>A</code> (アルファ) は16進数の文字 (0–9, A–F) です。 <code>A</code> は任意です。3桁表記 (<code>#RGB</code>) は6桁形式 (<code>#RRGGBB</code>) を短縮したものです。例えば、 <code>#f09</code> は <code>#ff0099</code> と同じ色です。同様に、4桁の RGB 表記 (<code>#RGBA</code>) は8桁形式 (<code>#RRGGBBAA</code>) を短縮したものです。例えば、 <code>#0f38</code> は <code>#00ff3388</code> と同じ色です。</dd> - <dt>関数表記: <code>rgb[a](R, G, B[, A])</code></dt> - <dd><code>R</code> (赤)、 <code>G</code> (緑)、 <code>B</code> (青) は {{cssxref("<number>", "数値")}}または{{cssxref("<percentage>", "パーセント表記")}}のどちらかで、<code>255</code>が<code>100%</code>に対応します。 <code>A</code> (アルファ)は<code>0</code>と<code>1</code>の間の{{cssxref("<number>", "数値")}}、または{{cssxref("<percentage>", "パーセント表記")}}で、数値<code>1</code>が<code>100%</code> (不透明) です。</dd> - <dt>関数表記: <code>rgb[a](R G B[ / A])</code></dt> - <dd>CSS Colors Level 4 では、関数表記で空白区切りの値の対応が追加されます。</dd> -</dl> - -<h4 id="Examples" name="Examples">例</h4> - -<h5 id="RGB_syntax_variations" name="RGB_syntax_variations">様々な RGB 構文</h5> +{{EmbedLiveSample('currentColor_example', 600, 80)}} -<p>この例は、一つの色を RGB 色構文で生成することができる様々な方法を示しています。</p> +### RGB 色 -<pre>/* これらの様々な構文は、すべて同じ色、不透明な濃いピンク色を指定します。 */ +RGB 色モデルは赤、緑、青の成分によって指定された[sRGB 色空間](https://en.wikipedia.org/wiki/SRGB)内の色を定義します。アルファ成分は任意で、色の透過性を表します。 + +#### 構文 + +RGB 色は 16 進表記 (`#` の接頭辞つき) と関数表記 (`rgb()`, `rgba()`) の両方で表現することができます。 + +> **Note:** CSS Colors Level 4 では、 `rgba()` は `rgb()` の別名です。 Level 4 標準を実装するブラウザーでは、同じ引数を受け取り同じ挙動をします。 + +- 16 進表記: `#RRGGBB[AA]` + - : `R` (赤)、 `G` (緑)、 `B` (青) と `A` (アルファ) は 16 進数の文字 (0–9, A–F) です。 `A` は任意です。例えば、 `#ff0000` は `#ff0000ff` と同等です。 +- 16 進表記: `#RGB[A]` + - : `R` (赤)、 `G` (緑)、 `B` (青) と `A` (アルファ) は 16 進数の文字 (0–9, A–F) です。 `A` は任意です。3 桁表記 (`#RGB`) は 6 桁形式 (`#RRGGBB`) を短縮したものです。例えば、 `#f09` は `#ff0099` と同じ色です。同様に、4 桁の RGB 表記 (`#RGBA`) は8桁形式 (`#RRGGBBAA`) を短縮したものです。例えば、 `#0f38` は `#00ff3388` と同じ色です。 +- 関数表記: `rgb[a](R, G, B[, A])` + - : `R` (赤)、 `G` (緑)、 `B` (青) は {{cssxref("<number>")}} または {{cssxref("<percentage>")}} のどちらかで、`255` が `100%` に対応します。 `A` (アルファ) は `0` と `1` の間の {{cssxref("<number>")}} 、または {{cssxref("<percentage>")}} で、数値 `1` が `100%` (不透明) です。 +- 関数表記: `rgb[a](R G B[ / A])` + - : CSS Colors Level 4 では、関数表記で空白区切りの値の対応が追加されます。 + +### HSL 色 + +HSL 色モデルは色相 (H)、彩度 (S)、明度 (L) の各成分によって与えられた[sRGB 色空間](https://en.wikipedia.org/wiki/SRGB)内の色を定義します。アルファ成分は任意で、色の透過性を表します。 + +HSL は、色相、彩度、明度をそれぞれ独立して調整できるため、RGB よりも直感的であると感じるデザイナーが多いようです。また、HSL を使用することで、同じ色のセットを簡単に作成することができます (同じ色相で複数の影を作成する場合など)。 +しかし、HSL を使用して色のバリエーションを作成すると、[知覚的に均一ではない](https://ja.wikipedia.org/wiki/%E8%89%B2%E5%B7%AE#%E8%A8%B1%E5%AE%B9%E5%80%A4)ため、驚くような結果になることがあります。たとえば、 `hsl(240 100% 50%)` と `hsl(60 100% 50%)` は、明度が同じであるにもかかわらず、前者が後者よりもはるかに暗くなります。 + +#### 構文 + +HSL 色は関数表記の `hsl()` および `hsla()` を通して表現されます。 + +> **Note:** CSS Colors Level 4 では、 `hsla()` は `hsl()` の別名です。 Level 4 標準を実装するブラウザーでは、同じ引数を受け取り同じ挙動をします。 + +- 関数表記: `hsl[a](H, S, L[, A])` + + - : `H` (色相) は色相環の{{cssxref("<angle>", "角度")}}を {{SpecName("CSS4 Colors","#the-hsl-notation")}} で定義されている `deg`、 `rad`、 `grad`、 `turn` の単位で与えます。単位のない{{cssxref("<number>", "数値")}}の場合は、 {{SpecName("CSS3 Colors", "#hsl-color")}} で定められている通り deg (度) として扱われます。定義では、赤=0deg=360deg であり、他の色は、緑=120deg、 青=240deg、 などのように色相環を回ります。 `<angle>` は暗黙的に周回するので、 -120deg=240deg、 480deg=120deg、 -1turn=1turn のようになります。 + + `S` (彩度) と `L` (明度) はパーセント表記です。**彩度**`100%`は完全に鮮やかな色で、彩度`0%`は完全に薄い色 (灰色) です。**明度**`100%`は白で、明度`0%`は黒で、明度`50%`は「普通」です。 + + `A` (アルファ)は`0`と`1`の間の{{cssxref("<number>")}}、または{{cssxref("<percentage>")}}で、数値`1`が`100%` (不透明) です。 + +- 関数表記: `hsl[a](H S L[ / A])` + - : CSS Colors Level 4 では、関数表記で空白区切りの値の対応が追加されます。 + +### システム色 + +*色強制モード* ([forced-colors](/ja/docs/Web/CSS/@media/forced-colors) メディアクエリーで検出可能) では、多くの色がユーザーまたはブラウザーが定義したパレットに制約されます。これらのシステム色は以下のキーワードで公開されており、ページの残りの部分が制限されたパレットにうまく合わせられることを保証するために使用することができます。これらの値は他のコンテキストでも使用できますが、ブラウザーの対応は限定的です。 + +以下のリストにあるキーワードは、 CSS Color Module Level 4 仕様書で定義されています。 + +> **Note:** なお、これらのキーワードは*大文字小文字を区別しません*が、読みやすさのために大文字小文字を交ぜて表記しています。 + +- ActiveText + - : アクティブなリンクのテキスト +- ButtonFace + - : プッシュボタンの背景 +- ButtonText + - : プッシュボタンのテキスト +- Canvas + - : アプリケーションのコンテンツや文書の背景 +- CanvasText + - : アプリケーションのコンテンツや文書のテキスト +- Field + - : 入力フィールドの背景 +- FieldText + - : 入力フィールドのテキスト +- GrayText + - : 無効なテキスト +- Highlight + - : コントロールの中で選択されているアイテムの背景 +- HighlightText + - : コントロールの中で選択されているアイテムのテキスト +- LinkText + - : アクティブではない、訪問していないリンクのテキスト +- Mark + - : (HTML の `mark` 要素のように) 特別なマークが付けられたテキストの背景 +- MarkText + - : (HTML の `mark` 要素のように) 特別にマークされたテキスト +- VisitedText + - : 訪問済みのリンクのテキスト + +#### 非推奨のシステム色のキーワード + +以下のキーワードは、 CSS Color モジュールの初期の版で定義されていました。これらは非推奨になりました。公開ウェブページでの使用は {{deprecated_inline}} です。 + +- ActiveBorder + - : アクティブウィンドウの境界線。 +- ActiveCaption + - : アクティブウィンドウのキャプション。 `CaptionText` を前景色として使用してください。 +- AppWorkspace + - : 複数文書インターフェイス (MDI) の背景色。 +- Background + - : デスクトップの背景です。 +- ButtonHighlight + - : 周囲の境界線の層によって立体的に見える 3D 要素の、光源に面した境界線の色です。 +- ButtonShadow + - : 周囲の境界線の層によって立体的に見える 3D 要素の、光源から離れた境界線の色です。 +- CaptionText + - : キャプションの文字列、サイズ変更ボックス、スクロールバーの矢印ボックスの文字列です。 `ActiveCaption` を背景色として使用してください。 +- InactiveBorder + - : 非アクティブウィンドウの境界線です。 +- InactiveCaption + - : 非アクティブウィンドウのキャプションです。 `InactiveCaptionText` を前景色に使用してください。 +- InactiveCaptionText + - : 非アクティブなキャプションの文字列の色です。 `InactiveCaption` を背景色に使用してください。 +- InfoBackground + - : ツールチップコントロールの背景色です。 `InfoText` を前景色に使用してください。 +- InfoText + - : ツールチップコントロールの文字色です。 `InfoBackground` を背景色に使用してください。 +- Menu + - : メニューの背景。 `MenuText` または `-moz-MenuBarText` を前景色に使用してください。 +- MenuText + - : メニュー内の文字列。 `Menu` を背景色に使用してください。 +- Scrollbar + - : スクロールバーの背景色。 +- ThreeDDarkShadow + - : 連続した 2 つの境界線によって立体的に見える 3D 要素の、光源から離れた 2 つの境界線のうち、暗い方 (一般的には外側) の境界線の色。 +- ThreeDFace + - : 連続した 2 つの境界線によって立体的に見える 3D 要素の表面の色。前景色には `ButtonText` を使用してください。 +- ThreeDHighlight + - : 連続した 2 つの境界線によって立体的に見える 3D 要素の、光源に向いた 2 つの境界線のうち、明るい方 (一般的には外側) の色。 +- ThreeDLightShadow + - : 連続した 2 つの境界線によって立体的に見える 3D 要素の、光源に向いた 2 つの境界線のうち、暗い方 (一般的には内側) の色。 +- ThreeDShadow + - : 連続した 2 つの境界線によって立体的に見える 3D 要素の、光源から離れた 2 つの境界線のうち、明るい方 (一般的には内側) の色。 +- Window + - : ウィンドウの背景。 `WindowText` を前景色に使用してください。 +- WindowFrame + - : ウィンドウの枠。 +- WindowText + - : ウィンドウ内の文字列。 `Window` を背景色に使用してください。 + +### Mozilla システム色拡張 + +- \-moz-ButtonDefault + - : ダイアログボックスの既定の動作を表すボタンの周りを囲む境界線の色です。 +- \-moz-ButtonHoverFace + - : マウスポインターが上にある時のボタンの背景色 (マウスポインターが上にない場合は `ThreeDFace` または `ButtonFace`)。 `-moz-ButtonHoverText` の前景色と一緒に使う必要があります。 +- \-moz-ButtonHoverText + - : マウスポインタが上にあるボタンのテキスト色 (マウスポインタが上にない場合は `ButtonText`)。 `-moz-ButtonHoverFace background` の背景色と一緒に使う必要があります。 +- \-moz-CellHighlight + - : ツリーウィジェットで選択された項目の背景色。 `-moz-CellHighlightText` の前景色と一緒に使用する必要があります。 `-moz-html-CellHighlight` も参照。 +- \-moz-CellHighlightText + - : ツリー内で選択された項目のテキスト色。 `-moz-CellHighlight background` の背景色と一緒に使う必要があります。 `-moz-html-CellHighlightText` も参照。 +- \-moz-Combobox + - : コンボボックスの背景色。 `-moz-ComboboxText` の前景色と一緒に使う必要があります。 1.9.2 以前のバージョンでは、代わりに `-moz-Field` を使用してください。 +- \-moz-ComboboxText + - : コンボボックスのテキスト色。 `-moz-Combobox` の背景色と一緒に使う必要があります。 1.9.2 以前のバージョンでは、代わりに `-moz-FieldText` を使用してください。 +- \-moz-Dialog + - : ダイアログボックスの背景色。moz-DialogTextの前景色と一緒に使う必要があります。 +- \-moz-DialogText + - : ダイアログボックスのテキスト色。 `-moz-DialogText` の背景色と一緒に使う必要があります。 +- \-moz-dragtargetzone, -moz-EvenTreeRow + - : ツリー内の偶数行の背景色。 `-moz-FieldText` の前景色と一緒に使う必要があります。 Gecko のバージョン 1.9 より前のバージョンでは、 `-moz-Field` を使用してください。 `-moz-OddTreeRow` も参照してください。 +- \-moz-html-CellHighlight + - : HTML の {{HTMLElement("select")}} における強調表示されたアイテムの背景色。前景色には `-moz-html-CellHighlightText` を使用します。 Gecko 1.9 以前では、 `-moz-CellHighlight` を使用してください。 +- \-moz-html-CellHighlightText + - : HTML の {{HTMLElement("select")}} における強調表示されたアイテムのテキストの色。背景色には `-moz-html-CellHighlight` を使用します。 Gecko 1.9 以前では、 `-moz-CellHighlightText` を使用してください。 +- \-moz-mac-accentdarkestshadow, -moz-mac-accentdarkshadow, -moz-mac-accentface, -moz-mac-accentlightesthighlight, -moz-mac-accentlightshadow, -moz-mac-accentregularhighlight, -moz-mac-accentregularshadow + - : アクセント色です。 +- \-moz-mac-chrome-active, -moz-mac-chrome-inactive + - : 非アクティブおよびアクティブなブラウザーのクロームの色です。 +- \-moz-mac-focusring, -moz-mac-menuselect, -moz-mac-menushadow, -moz-mac-menutextselect, -moz-MenuHover + - : ホバーされたメニュー項目の背景色。 `Highlight` によく似ています。 `-moz-MenuHoverText` や `-moz-MenuBarHoverText` の前景色と一緒に使う必要があります。 +- \-moz-MenuHoverText + - : ホバーされたメニュー項目のテキスト色。 `HighlightText` によく似ています。 `-moz-MenuHover` の背景色と一緒に使う必要があります。 +- \-moz-MenuBarText + - : メニューバーのテキスト色。 `MenuText` によく似ています。 `Menu` の背景の上に使用します。 +- \-moz-MenuBarHoverText + - : メニューバーのホバーされたテキストの色。多くの場合、 `-moz-MenuHoverText` に似ています。 `-moz-MenuHover` 背景の上に使用する必要があります。 +- \-moz-nativehyperlinktext + - : 既定のプラットフォームのハイパーリンク色です。 +- \-moz-OddTreeRow + - : ツリー内の奇数行の背景色。 `-moz-FieldText` の前景色と一緒に使う必要があります。 Gecko のバージョン 1.9 より前のバージョンでは、 `-moz-Field` を使用してください。 `-moz-EvenTreeRow` も参照してください。 +- \-moz-win-communicationstext + - : `{{cssxref("appearance", "-moz-appearance")}}: -moz-win-communications-toolbox;` を持つオブジェクトのテキストに使用する必要があります。 +- \-moz-win-mediatext + - : `{{cssxref("appearance", "-moz-appearance")}}: -moz-win-media-toolbox` を持つオブj稀有とのテキストに使用する必要があります。 +- \-moz-win-accentcolor + - : スタートメニューやタスクバー、タイトルバーなどに設定できる Windows 10 のカスタムアクセント色にアクセスするために使用します。 +- \-moz-win-accentcolortext + - : スタートメニュー、タスクバー、タイトルバーなどの Windows 10 のカスタムアクセント色の上に配置されたテキストの色にアクセスするために使用します。 + +### Mozilla 色設定拡張 + +- \-moz-activehyperlinktext + - : アクティブ化されたリンクの文字色のユーザー設定です。既定の文書の背景色と共に使用されます。 +- \-moz-default-background-color + - : 文書の背景色のユーザー設定です。 +- \-moz-default-color + - : 文字色のユーザー設定です。 +- \-moz-hyperlinktext + - : 未訪問のリンクにおける文字色のユーザー設定です。既定の文書の背景色と共に使用されます。 +- \-moz-visitedhyperlinktext + - : 訪問済みのリンクにおける文字色のユーザー設定です。既定の文書の背景色と共に使用されます。 + +### Lab 色 + +CSS Color 4 で Lab 色が導入されました。 +Lab 色は、{{cssxref("color_value/lab()","lab()")}} 関数表記で指定します。 +Lab 色は、特定の色空間に限定されず、人間の視覚の全領域を表現することができます。 + +### LCH 色 + +CSS Color 4 で LCH 色が導入されました。 +LCH 色は、{{cssxref("color_value/lch()","lch()")}} という関数記法で指定します。 +特定の色空間に限定されず、人間の視覚の全領域を表現することができます。 + +実は、LCH は Lab の極致です。彩度と色相の構成要素が、混合ではなく、目的の色の質を指定する点で、Lab よりも人間に優しいものです。 +この点では HSL と似ていますが、知覚的な均一性ははるかに高いと言えます。 +HSL が `hsl(60 100% 50%)` と `hsl(240 100% 50%)` の両方を同じ明るさと表現するのに対し、LCH (および Lab) は、前者 (黄) の L は 97.6、後者 (青) の L は 29.6 と、それぞれ異なる明るさを正しく表現します。 +そのため、LCH を使ってまったく異なる色のパレットを作成しても、予測可能な結果が得られます。 +なお、LCH の色相は HSL の色相とは異なり、LCH の彩度は HSL の彩度とは異なりますが、概念的には類似していますのでご注意ください。 + +### color() 色 + +CSS Color 4 でこの表記が導入されました。 +{{cssxref("color_value/color()","color()")}} 関数で指定された色は、定義済みの色空間のほか、[`@color-profile`](/en-US/docs/Web/CSS/@color-profile) ルールで定義されたカスタム色空間でも色を指定できます。 + +## 補間 + +アニメーションや[グラデーション](/ja/docs/Web/CSS/CSS_Images/Using_CSS_gradients)において、 `<color>` の値は赤、緑、青の成分ごとに補間されます。それぞれの成分は浮動小数点の実数として補間されます。なお、予期しない灰色が現れるのを避けるため、色の補間は[アルファ乗算済み sRGBA 色空間](https://www.gimp.org/docs/plug-in/appendix-alpha.html)で行われます。アニメーションでは補間の速度はアニメーションと関連づけられた[タイミング関数](/ja/docs/Web/CSS/easing-function)によって決められます。 + +## アクセシビリティの考慮 + +色を見分けることが難しい人がいます。[WCAG 2.0](https://www.w3.org/TR/WCAG/#visual-audio-contrast) 勧告では、色を特定のメッセージ、動作、結果を伝える唯一の手段として使用することを避けるよう強く勧告しています。詳しくは[色と色のコントラスト](/ja/docs/Learn/Accessibility/CSS_and_JavaScript#color_and_color_contrast)をご覧ください。 + +## 例 + +<h3 id="Color_value_tester">色の値のテスター</h3> + +この例では、`<div>` とテキスト入力を用意しています。入力欄に有効な色を入力すると、`<div>` にその色が採用され、色の値をテストすることができます。 + +#### HTML + +```html +<div></div> +<hr> +<label for="color">有効な色の値を入力してください:</label> +<input type="text" id="color"> +``` + +#### CSS + +```css +div { + width: 100%; + height: 200px; +} +``` + +```js hidden +const inputElem = document.querySelector('input'); +const divElem = document.querySelector('div'); + +function validTextColor(stringToTest) { + if (stringToTest === "") { return false; } + if (stringToTest === "inherit") { return false; } + if (stringToTest === "transparent") { return false; } + + const image = document.createElement("img"); + image.style.color = "rgb(0, 0, 0)"; + image.style.color = stringToTest; + if (image.style.color !== "rgb(0, 0, 0)") { return true; } + image.style.color = "rgb(255, 255, 255)"; + image.style.color = stringToTest; + return image.style.color !== "rgb(255, 255, 255)"; +} + +inputElem.addEventListener('change', () => { + if(validTextColor(inputElem.value)) { + divElem.style.backgroundColor = inputElem.value; + divElem.textContent = ''; + } else { + divElem.style.backgroundColor = 'white'; + divElem.textContent = 'Invalid color value'; + } +}); +``` + +#### 結果 -/* 16進表記 */ -#f09 -#F09 -#ff0099 -#FF0099 +{{EmbedLiveSample('Color_value_tester','100%', 300)}} + +### 様々な RGB 構文 + +この例は、一つの色を RGB 色構文で生成することができる様々な方法を示しています。 + + /* これらの様々な構文は、すべて同じ色、不透明な濃いピンク色を指定します。 */ -/* 関数表記 */ -rgb(255,0,153) -rgb(255, 0, 153) -rgb(255, 0, 153.0) -rgb(100%,0%,60%) -rgb(100%, 0%, 60%) -rgb(100%, 0, 60%) /* ERROR! 数値とパーセントを混ぜないでください */ -rgb(255 0 153) + /* 16進表記 */ + #f09 + #F09 + #ff0099 + #FF0099 -/* アルファ値付き16進表記 */ -#f09f -#F09F -#ff0099ff -#FF0099FF + /* 関数表記 */ + rgb(255,0,153) + rgb(255, 0, 153) + rgb(255, 0, 153.0) + rgb(100%,0%,60%) + rgb(100%, 0%, 60%) + rgb(100%, 0, 60%) /* ERROR! 数値とパーセントを混ぜないでください */ + rgb(255 0 153) -/* アルファ値付き関数表記 */ -rgb(255, 0, 153, 1) -rgb(255, 0, 153, 100%) + /* アルファ値付き16進表記 */ + #f09f + #F09F + #ff0099ff + #FF0099FF -/* 空白区切りの構文 */ -rgb(255 0 153 / 1) -rgb(255 0 153 / 100%) + /* アルファ値付き関数表記 */ + rgb(255, 0, 153, 1) + rgb(255, 0, 153, 100%) -/* 浮動小数点値による実数表記 */ -rgb(255, 0, 153.6, 1) -rgb(1e2, .5e1, .5e0, +.25e2%) -</pre> + /* 空白区切りの構文 */ + rgb(255 0 153 / 1) + rgb(255 0 153 / 100%) -<h5 id="RGB_transparency_variations" name="RGB_transparency_variations">RGB の様々な透過性</h5> - -<pre>/* 16進表記 */ -#3a30 <span style="background: #3a30;"> /* 透明な緑 */ </span> -#3A3F <span style="background: #3A3F;"> /* 不透明な緑 */ </span> -#33aa3300 <span style="background: #33aa3300;"> /* 完全に透明な緑 */ </span> -#33AA3388 <span style="background: #33AA3380;"> /* 50%半透明の緑 */ </span> - -/* 関数表記 */ -rgba(51, 170, 51, .1) <span style="background: rgba(51, 170, 51, .1);"> /* 10%半透明の緑 */ </span> -rgba(51, 170, 51, .4) <span style="background: rgba(51, 170, 51, .4);"> /* 40%半透明の緑 */ </span> -rgba(51, 170, 51, .7) <span style="background: rgba(51, 170, 51, .7);"> /* 70%半透明の緑 */ </span> -rgba(51, 170, 51, 1) <span style="background: rgba(51, 170, 51, 1);"> /* 完全に不透明な緑 */ </span> - -/* ホワイトスペース区切りの構文 */ -rgba(51 170 51 / 0.4) <span> /* 40%半透明の緑 */ </span> -rgba(51 170 51 / 40%) <span> /* 40%半透明の緑 */ </span> - -/* 実数値の関数構文 */ -rgba(255, 0, 153.6, 1) -rgba(1e2, .5e1, .5e0, +.25e2%) -</pre> - -<h3 id="HSL_colors" name="HSL_colors">HSL 色</h3> - -<p>HSL 色モデルは色相 (H)、彩度 (S)、明度 (L) の各成分によって与えられた色を定義します。任意のアルファ成分は色の透過性を表します。</p> - -<p>多くのデザイナーは、 HSL は色相、彩度、明度をそれぞれ個別に調整できるので、 RGB より直感的であると考えています。 HSL は一連の合う色の組み合わせ (例えば、同じ色相で、明暗や彩度が異なる色など) をより簡単に作成することもできます。</p> - -<h4 id="Syntax_3" name="Syntax_3">構文</h4> - -<p>HSL 色は関数表記の <code id="hsl()">hsl()</code> および <code id="hsla()">hsla()</code> を通して説明されます。</p> - -<div class="note"> -<p><strong>メモ:</strong> CSS Colors Level 4 では、 <code>hsla()</code> は <code>hsl()</code> の別名です。 Level 4 標準を実装するブラウザーでは、同じ引数を受け取り同じ挙動をします。</p> -</div> - -<dl> - <dt>関数表記: <code>hsl[a](H, S, L[, A])</code></dt> - <dd><code>H</code> (色相) は色相環の{{cssxref("<angle>", "角度")}}を {{SpecName("CSS4 Colors","#the-hsl-notation")}} で定義されている <code>deg</code>、 <code>rad</code>、 <code>grad</code>、 <code>turn</code> の単位で与えます。単位のない{{cssxref("<number>", "数値")}}の場合は、 {{SpecName("CSS3 Colors", "#hsl-color")}} で定められている通り deg (度) として扱われます。定義では、赤=0deg=360deg であり、他の色は、緑=120deg、 青=240deg、 などのように色相環を回ります。 <code><angle></code> は暗黙的に周回するので、 -120deg=240deg、 480deg=120deg、 -1turn=1turn のようになります。</dd> - <dd><code>S</code> (彩度) と <code>L</code> (明度) はパーセント表記です。<strong>彩度</strong><code>100%</code>は完全に鮮やかな色で、彩度<code>0%</code>は完全に薄い色 (灰色) です。<strong>明度</strong><code>100%</code>は白で、明度<code>0%</code>は黒で、明度<code>50%</code>は「普通」です。</dd> - <dd><code>A</code> (アルファ)は<code>0</code>と<code>1</code>の間の{{cssxref("<number>", "数値")}}、または{{cssxref("<percentage>", "パーセント表記")}}で、数値<code>1</code>が<code>100%</code> (不透明) です。</dd> - <dt>関数表記: <code>hsl[a](H S L[ / A])</code></dt> - <dd>CSS Colors Level 4 では、関数表記で空白区切りの値の対応が追加されます。</dd> -</dl> - -<h4 id="Examples_2" name="Examples_2">例</h4> - -<h5 id="HSL_syntax_variations" name="HSL_syntax_variations">様々な HSL の構文</h5> - -<pre>/* これらの例はすべて同じ色、ラベンダーを指定します。 */ -hsl(270,60%,70%) -hsl(270, 60%, 70%) -hsl(270 60% 70%) -hsl(270deg, 60%, 70%) -hsl(4.71239rad, 60%, 70%) -hsl(.75turn, 60%, 70%) - -/* これらの例はすべて同じ色、15%半透明のラベンダーを指定します。 */ -hsl(270, 60%, 50%, .15) -hsl(270, 60%, 50%, 15%) -hsl(270 60% 50% / .15) -hsl(270 60% 50% / 15%) -</pre> - -<h5 id="Fully_saturated_colors" name="Fully_saturated_colors">彩度100%の色</h5> + /* 浮動小数点値による実数表記 */ + rgb(255, 0, 153.6, 1) + rgb(1e2, .5e1, .5e0, +.25e2%) + +### RGB の様々な透過性 + + /* 16進表記 */ + #3a30 /* 完全に透明な緑 */ + #3A3F /* 完全に不透明な緑 */ + #33aa3300 /* 完全に透明な緑 */ + #33AA3380 /* 50% 半透明な緑 */ + + /* 関数表記 */ + rgba(51, 170, 51, .1) /* 10% 半透明の緑 */ + rgba(51, 170, 51, .4) /* 40% 半透明の緑 */ + rgba(51, 170, 51, .7) /* 70% 半透明の緑 */ + rgba(51, 170, 51, 1) /* 完全に不透明の緑 */ + + /* ホワイトスペース区切りの構文 */ + rgba(51 170 51 / 0.4) /* 40% 半透明の緑 */ + rgba(51 170 51 / 40%) /* 40% 半透明の緑 */ + + /* 実数値の関数構文 */ + rgba(51, 170, 51.6, 1) + rgba(5.1e1, 1.7e2, 5.1e1, 1e2%) + +### 様々な HSL の構文 + + /* これらの例はすべて同じ色、ラベンダーを指定します。 */ + hsl(270,60%,70%) + hsl(270, 60%, 70%) + hsl(270 60% 70%) + hsl(270deg, 60%, 70%) + hsl(4.71239rad, 60%, 70%) + hsl(.75turn, 60%, 70%) + + /* これらの例はすべて同じ色、15%半透明のラベンダーを指定します。 */ + hsl(270, 60%, 50%, .15) + hsl(270, 60%, 50%, 15%) + hsl(270 60% 50% / .15) + hsl(270 60% 50% / 15%) + +### 彩度100%の色 <table class="standard-table"> - <thead> - <tr> - <th scope="col">表記</th> - <th scope="col">説明</th> - <th scope="col">例</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>hsl(0, 100%, 50%)</code></td> - <td>red</td> - <td style="background: hsl(0,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(30, 100%, 50%)</code></td> - <td>orange</td> - <td style="background: hsl(30,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(60, 100%, 50%)</code></td> - <td>yellow</td> - <td style="background: hsl(60,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(90, 100%, 50%)</code></td> - <td>lime green</td> - <td style="background: hsl(90,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(120, 100%, 50%)</code></td> - <td>green</td> - <td style="background: hsl(120,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(150, 100%, 50%)</code></td> - <td>blue-green</td> - <td style="background: hsl(150,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(180, 100%, 50%)</code></td> - <td>cyan</td> - <td style="background: hsl(180,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(210, 100%, 50%)</code></td> - <td>sky blue</td> - <td style="background: hsl(210,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(240, 100%, 50%)</code></td> - <td>blue</td> - <td style="background: hsl(240,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(270, 100%, 50%)</code></td> - <td>purple</td> - <td style="background: hsl(270,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(300, 100%, 50%)</code></td> - <td>magenta</td> - <td style="background: hsl(300,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(330, 100%, 50%)</code></td> - <td>pink</td> - <td style="background: hsl(330,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(360, 100%, 50%)</code></td> - <td>red</td> - <td style="background: hsl(360,100%,50%);"></td> - </tr> - </tbody> + <thead> + <tr> + <th scope="col">表記</th> + <th scope="col">説明</th> + <th scope="col">例</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>hsl(0, 100%, 50%)</code></td> + <td>red</td> + <td style="background: hsl(0, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(30, 100%, 50%)</code></td> + <td>orange</td> + <td style="background: hsl(30, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(60, 100%, 50%)</code></td> + <td>yellow</td> + <td style="background: hsl(60, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(90, 100%, 50%)</code></td> + <td>lime green</td> + <td style="background: hsl(90, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(120, 100%, 50%)</code></td> + <td>green</td> + <td style="background: hsl(120, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(150, 100%, 50%)</code></td> + <td>blue-green</td> + <td style="background: hsl(150, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(180, 100%, 50%)</code></td> + <td>cyan</td> + <td style="background: hsl(180, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(210, 100%, 50%)</code></td> + <td>sky blue</td> + <td style="background: hsl(210, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(240, 100%, 50%)</code></td> + <td>blue</td> + <td style="background: hsl(240, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(270, 100%, 50%)</code></td> + <td>purple</td> + <td style="background: hsl(270, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(300, 100%, 50%)</code></td> + <td>magenta</td> + <td style="background: hsl(300, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(330, 100%, 50%)</code></td> + <td>pink</td> + <td style="background: hsl(330, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(360, 100%, 50%)</code></td> + <td>red</td> + <td style="background: hsl(360, 100%, 50%)"></td> + </tr> + </tbody> </table> -<h5 id="Lighter_and_darker_greens" name="Lighter_and_darker_greens">緑の明度の変化</h5> +### 様々な明度の緑 <table class="standard-table"> - <thead> - <tr> - <th scope="col">表記</th> - <th scope="col">説明</th> - <th scope="col">例</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>hsl(120, 100%, 0%)</code></td> - <td>black</td> - <td style="background: hsl(120,100%,0%);"></td> - </tr> - <tr> - <td><code>hsl(120, 100%, 20%)</code></td> - <td></td> - <td style="background: hsl(120,100%,20%);"></td> - </tr> - <tr> - <td><code>hsl(120, 100%, 40%)</code></td> - <td></td> - <td style="background: hsl(120,100%,40%);"></td> - </tr> - <tr> - <td><code>hsl(120, 100%, 60%)</code></td> - <td></td> - <td style="background: hsl(120,100%,60%);"></td> - </tr> - <tr> - <td><code>hsl(120, 100%, 80%)</code></td> - <td></td> - <td style="background: hsl(120,100%,80%);"></td> - </tr> - <tr> - <td><code>hsl(120, 100%, 100%)</code></td> - <td>white</td> - <td style="background: hsl(120,100%,100%);"></td> - </tr> - </tbody> + <thead> + <tr> + <th scope="col">表記</th> + <th scope="col">説明</th> + <th scope="col">例</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>hsl(120, 100%, 0%)</code></td> + <td>black</td> + <td style="background: hsl(120, 100%, 0%)"></td> + </tr> + <tr> + <td><code>hsl(120, 100%, 20%)</code></td> + <td></td> + <td style="background: hsl(120, 100%, 20%)"></td> + </tr> + <tr> + <td><code>hsl(120, 100%, 40%)</code></td> + <td></td> + <td style="background: hsl(120, 100%, 40%)"></td> + </tr> + <tr> + <td><code>hsl(120, 100%, 60%)</code></td> + <td></td> + <td style="background: hsl(120, 100%, 60%)"></td> + </tr> + <tr> + <td><code>hsl(120, 100%, 80%)</code></td> + <td></td> + <td style="background: hsl(120, 100%, 80%)"></td> + </tr> + <tr> + <td><code>hsl(120, 100%, 100%)</code></td> + <td>white</td> + <td style="background: hsl(120, 100%, 100%)"></td> + </tr> + </tbody> </table> -<h5 id="Saturated_and_desaturated_greens" name="Saturated_and_desaturated_greens">緑の彩度の変化</h5> +### 様々な彩度の緑 <table class="standard-table"> - <thead> - <tr> - <th scope="col">表記</th> - <th scope="col">説明</th> - <th scope="col">例</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>hsl(120, 100%, 50%)</code></td> - <td>green</td> - <td style="background: hsl(120,100%,50%);"></td> - </tr> - <tr> - <td><code>hsl(120, 80%, 50%)</code></td> - <td></td> - <td style="background: hsl(120,80%,50%);"></td> - </tr> - <tr> - <td><code>hsl(120, 60%, 50%)</code></td> - <td></td> - <td style="background: hsl(120,60%,50%);"></td> - </tr> - <tr> - <td><code>hsl(120, 40%, 50%)</code></td> - <td></td> - <td style="background: hsl(120,40%,50%);"></td> - </tr> - <tr> - <td><code>hsl(120, 20%, 50%)</code></td> - <td></td> - <td style="background: hsl(120,20%,50%);"></td> - </tr> - <tr> - <td><code>hsl(120, 0%, 50%)</code></td> - <td>gray</td> - <td style="background: hsl(120,0%,50%);"></td> - </tr> - </tbody> + <thead> + <tr> + <th scope="col">表記</th> + <th scope="col">説明</th> + <th scope="col">例</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>hsl(120, 100%, 50%)</code></td> + <td>green</td> + <td style="background: hsl(120, 100%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(120, 80%, 50%)</code></td> + <td></td> + <td style="background: hsl(120, 80%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(120, 60%, 50%)</code></td> + <td></td> + <td style="background: hsl(120, 60%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(120, 40%, 50%)</code></td> + <td></td> + <td style="background: hsl(120, 40%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(120, 20%, 50%)</code></td> + <td></td> + <td style="background: hsl(120, 20%, 50%)"></td> + </tr> + <tr> + <td><code>hsl(120, 0%, 50%)</code></td> + <td>gray</td> + <td style="background: hsl(120, 0%, 50%)"></td> + </tr> + </tbody> </table> -<h5 id="HSL_transparency_variations" name="HSL_transparency_variations">HSL の様々な透過性</h5> - -<pre>hsla(240, 100%, 50%, .05) <span style="background: hsla(240,100%,50%,0.05);"> /* 5%半透明の青 */ </span> -hsla(240, 100%, 50%, .4) <span style="background: hsla(240,100%,50%,0.4);"> /* 40%半透明の青 */ </span> -hsla(240, 100%, 50%, .7) <span style="background: hsla(240,100%,50%,0.7);"> /* 70%半透明の青 */ </span> -hsla(240, 100%, 50%, 1) <span style="background: hsla(240,100%,50%,1);"> /* 不透明な青 */ </span> - -/* 空白表記 */ -hsla(240 100% 50% / .05) <span style="background: hsla(240,100%,50%,0.05);"> /* 5%半透明の青 */ </span> - -/* アルファのパーセント表記 */ -hsla(240 100% 50% / 5%) <span style="background: hsla(240,100%,50%,0.05);"> /* 5%半透明の青 */ </span> -</pre> - -<h3 id="System_Colors" name="System_Colors">システム色</h3> +### HSL の様々な透過性 -<p><em>色強制モード</em> (<a href="/ja/docs/Web/CSS/@media/forced-colors">forced-colors</a> メディアクエリで検出可能) では、多くの色がユーザーまたはブラウザーが定義したパレットに制約されます。これらのシステム色は以下のキーワードで公開されており、ページの残りの部分が制限されたパレットにうまく合わせられることを保証するために使用することができます。これらの値は他のコンテキストでも使用できますが、ブラウザーの対応は限定的です。</p> + hsla(240, 100%, 50%, .05) /* 5% 半透明の青 */ + hsla(240, 100%, 50%, .4) /* 40% 半透明の青 */ + hsla(240, 100%, 50%, .7) /* 70% 半透明の青 */ + hsla(240, 100%, 50%, 1) /* 完全に不透明の青 */ -<p>以下のリストにあるキーワードは、 CSS Color Module Level 4 仕様書で定義されています。</p> - -<div class="blockIndicator note"> -<p>なお、これらのキーワードは<em>大文字小文字を区別しません</em>が、読みやすさのために大文字小文字を交ぜて表記しています。</p> -</div> - -<dl> - <dt>ActiveText</dt> - <dd> - <p>アクティブなリンクのテキスト</p> - </dd> - <dt>ButtonFace</dt> - <dd> - <p>プッシュボタンの背景</p> - </dd> - <dt>ButtonText</dt> - <dd> - <p>プッシュボタンのテキスト</p> - </dd> - <dt>Canvas</dt> - <dd> - <p>アプリケーションのコンテンツや文書の背景</p> - </dd> - <dt>CanvasText</dt> - <dd> - <p>アプリケーションのコンテンツや文書のテキスト</p> - </dd> - <dt>Field</dt> - <dd> - <p>入力フィールドの背景</p> - </dd> - <dt>FieldText</dt> - <dd> - <p>入力フィールドのテキスト</p> - </dd> - <dt>GrayText</dt> - <dd> - <p>無効なテキスト</p> - </dd> - <dt>Highlight</dt> - <dd> - <p>コントロールの中で選択されているアイテムの背景</p> - </dd> - <dt>HighlightText</dt> - <dd> - <p>コントロールの中で選択されているアイテムのテキスト</p> - </dd> - <dt>LinkText</dt> - <dd> - <p>アクティブではない、訪問していないリンクのテキスト</p> - </dd> - <dt>VisitedText</dt> - <dd> - <p>訪問したリンクのテキスト</p> - </dd> -</dl> - -<h4 id="Deprecated_system_color_keywords" name="Deprecated_system_color_keywords">非推奨のシステム色のキーワード</h4> - -<p>以下のキーワードは、 CSS Color モジュールの早期の版で定義されていました。これらは非推奨になりました。公開ウェブページでの使用は {{deprecated_inline}} です。</p> - -<div class="twocolumns"> -<dl> - <dt>ActiveBorder</dt> - <dd> - <p>アクティブウィンドウの境界線。</p> - </dd> - <dt>ActiveCaption</dt> - <dd> - <p>アクティブウィンドウのキャプション。 <code>CaptionText</code> を前景色として使用してください。</p> - </dd> - <dt>AppWorkspace</dt> - <dd> - <p>複数文書インターフェイス (MDI) の背景色。</p> - </dd> - <dt>Background</dt> - <dd> - <p>デスクトップの背景です。</p> - </dd> - <dt>ButtonHighlight</dt> - <dd> - <p>周囲の境界線で1つの平面を作って3Dになっている3D要素の光源に向いている境界線です。</p> - </dd> - <dt>ButtonShadow</dt> - <dd> - <p>周囲の境界線で1つの平面を作って3Dになっている3D要素の光源から離れている境界線です。</p> - </dd> - <dt>CaptionText</dt> - <dd> - <p>キャプションの文字列、サイズ変更ボックス、スクロールバーの矢印ボックスの文字列です。 <code>ActiveCaption</code> を背景色として使用してください。</p> - </dd> - <dt>InactiveBorder</dt> - <dd> - <p>非アクティブウィンドウの境界線です。</p> - </dd> - <dt>InactiveCaption</dt> - <dd> - <p>非アクティブウィンドウのキャプションです。 <code>InactiveCaptionText</code> を前景色に使用してください。</p> - </dd> - <dt>InactiveCaptionText</dt> - <dd> - <p>非アクティブなキャプションの文字列の色です。 <code>InactiveCaption</code> を背景色に使用してください。</p> - </dd> - <dt>InfoBackground</dt> - <dd> - <p>ツールチップコントロールの背景色です。 <code>InfoText</code> を前景色に使用してください。</p> - </dd> - <dt>InfoText</dt> - <dd> - <p>ツールチップコントロールの文字色です。 <code>InfoBackground</code> を背景色に使用してください。</p> - </dd> - <dt>Menu</dt> - <dd> - <p>メニューの背景。 <code>MenuText</code> または <code>-moz-MenuBarText</code> を前景色に使用してください。</p> - </dd> - <dt>MenuText</dt> - <dd> - <p>メニュー内の文字列。 <code>Menu</code> を背景色に使用してください。</p> - </dd> - <dt>Scrollbar</dt> - <dd> - <p>スクロールバーの背景色。</p> - </dd> - <dt>ThreeDDarkShadow</dt> - <dd> - <p>囲む境界線が2つの連続した層になっているために 3D に表示される 3D 要素の、光源から遠い2辺の暗い方 (ふつうは外側) の色。</p> - </dd> - <dt>ThreeDFace</dt> - <dd> - <p>囲む境界線が2つの連続した層になっているために 3D に表示される 3D 要素の表面の色。前景色には <code>ButtonText</code> を使用してください。</p> - </dd> - <dt>ThreeDHighlight</dt> - <dd> - <p>囲む境界線が2つの連続した層になっているために 3D に表示される 3D 要素の、光源に向いた2辺の明るい方 (ふつうは外側) の色。</p> - </dd> - <dt>ThreeDLightShadow</dt> - <dd> - <p>囲む境界線が2つの連続した層になっているために 3D に表示される 3D 要素の、光源に向いた2辺のっ暗い方 (ふつうは内側) の色。</p> - </dd> - <dt>ThreeDShadow</dt> - <dd> - <p>囲む境界線が2つの連続した層になっているために 3D に表示される 3D 要素の、光源から遠い2辺の明るい方 (ふつうは内側) の色。</p> - </dd> - <dt>Window</dt> - <dd> - <p>ウィンドウの背景。 <code>WindowText</code> を前景色に使用してください。</p> - </dd> - <dt>WindowFrame</dt> - <dd> - <p>ウィンドウの枠。</p> - </dd> - <dt>WindowText</dt> - <dd> - <p>ウィンドウ内の文字列。 <code>Window</code> を背景色に使用してください。</p> - </dd> -</dl> -</div> - -<h3 id="Mozilla_System_Color_Extensions" name="Mozilla_System_Color_Extensions">Mozilla システム色拡張</h3> - -<div class="twocolumns"> -<dl> - <dt>-moz-ButtonDefault</dt> - <dd> - <p>ダイアログボックスの既定の動作を表すボタンの周りを囲む境界線の色です。</p> - </dd> - <dt>-moz-ButtonHoverFace</dt> - <dd> - <p>マウスポインターが上にある時のボタンの背景色 (マウスポインターが上にない場合は <code>ThreeDFace</code> または <code>ButtonFace</code>)。 <code>-moz-ButtonHoverText</code> の前景色と一緒に使う必要があります。</p> - </dd> - <dt>-moz-ButtonHoverText</dt> - <dd> - <p>マウスポインタが上にあるボタンのテキスト色 (マウスポインタが上にない場合は <code>ButtonText</code>)。 <code>-moz-ButtonHoverFace background</code> の背景色と一緒に使う必要があります。</p> - </dd> - <dt>-moz-CellHighlight</dt> - <dd> - <p>ツリーウィジェットで選択された項目の背景色。 <code>-moz-CellHighlightText</code> の前景色と一緒に使用する必要があります。 <code>-moz-html-CellHighlight</code> も参照。</p> - </dd> - <dt>-moz-CellHighlightText</dt> - <dd> - <p>ツリー内で選択された項目のテキスト色。 <code>-moz-CellHighlight background</code> の背景色と一緒に使う必要があります。 <code>-moz-html-CellHighlightText</code> も参照。</p> - </dd> - <dt>-moz-Combobox</dt> - <dd> - <p>{{Gecko_minversion_inline("1.9.2")}} コンボボックスの背景色。 <code>-moz-ComboboxText</code> の前景色と一緒に使う必要があります。 1.9.2 以前のバージョンでは、代わりに <code>-moz-Field</code> を使用してください。</p> - </dd> - <dt>-moz-ComboboxText</dt> - <dd> - <p>{{Gecko_minversion_inline("1.9.2")}} コンボボックスのテキスト色。 <code>-moz-Combobox</code> の背景色と一緒に使う必要があります。 1.9.2 以前のバージョンでは、代わりに <code>-moz-FieldText</code> を使用してください。</p> - </dd> - <dt>-moz-Dialog</dt> - <dd> - <p>ダイアログボックスの背景色。moz-DialogTextの前景色と一緒に使う必要があります。</p> - </dd> - <dt>-moz-DialogText</dt> - <dd> - <p>ダイアログボックスのテキスト色。 <code>-moz-DialogText</code> の背景色と一緒に使う必要があります。</p> - </dd> - <dt>-moz-dragtargetzone</dt> - <dt>-moz-EvenTreeRow</dt> - <dd> - <p>{{gecko_minversion_inline("1.9")}} ツリー内の偶数行の背景色。 <code>-moz-FieldText</code> の前景色と一緒に使う必要があります。 Gecko のバージョン 1.9 より前のバージョンでは、 <code>-moz-Field</code> を使用してください。 <code>-moz-OddTreeRow</code> も参照してください。</p> - </dd> - <dt>-moz-html-CellHighlight</dt> - <dd> - <p>{{gecko_minversion_inline("1.9")}} HTML の {{HTMLElement("select")}} における強調表示されたアイテムの背景色。前景色には <code>-moz-html-CellHighlightText</code> を使用します。 Gecko 1.9 以前では、 <code>-moz-CellHighlight</code> を使用してください。</p> - </dd> - <dt>-moz-html-CellHighlightText</dt> - <dd> - <p>{{gecko_minversion_inline("1.9")}} HTML の {{HTMLElement("select")}} における強調表示されたアイテムのテキストの色。背景色には <code>-moz-html-CellHighlight</code> を使用します。 Gecko 1.9 以前では、 <code>-moz-CellHighlightText</code> を使用してください。</p> - </dd> - <dt>-moz-mac-accentdarkestshadow</dt> - <dt>-moz-mac-accentdarkshadow</dt> - <dt>-moz-mac-accentface</dt> - <dt>-moz-mac-accentlightesthighlight</dt> - <dt>-moz-mac-accentlightshadow</dt> - <dt>-moz-mac-accentregularhighlight</dt> - <dt>-moz-mac-accentregularshadow</dt> - <dt>-moz-mac-chrome-active</dt> - <dd> - <p>{{Gecko_minversion_inline("1.9.1")}}</p> - </dd> - <dt>-moz-mac-chrome-inactive</dt> - <dd> - <p>{{Gecko_minversion_inline("1.9.1")}}</p> - </dd> - <dt>-moz-mac-focusring</dt> - <dt>-moz-mac-menuselect</dt> - <dt>-moz-mac-menushadow</dt> - <dt>-moz-mac-menutextselect</dt> - <dt>-moz-MenuHover</dt> - <dd> - <p>ホバーされたメニュー項目の背景色。 <code>Highlight</code> によく似ています。 <code>-moz-MenuHoverText</code> や <code>-moz-MenuBarHoverText</code> の前景色と一緒に使う必要があります。</p> - </dd> - <dt>-moz-MenuHoverText</dt> - <dd> - <p>ホバーされたメニュー項目のテキスト色。 <code>HighlightText</code> によく似ています。 <code>-moz-MenuHover</code> の背景色と一緒に使う必要があります。</p> - </dd> - <dt>-moz-MenuBarText</dt> - <dd> - <p>{{Gecko_minversion_inline("1.9.2")}} メニューバーのテキスト色。 <code>MenuText</code> によく似ています。 <code>Menu</code> の背景の上に使用します。</p> - </dd> - <dt>-moz-MenuBarHoverText</dt> - <dd> - <p>メニューバーのホバーされたテキストの色。多くの場合、 <code>-moz-MenuHoverText</code> に似ています。 <code>-moz-MenuHover</code> 背景の上に使用する必要があります。</p> - </dd> - <dt>-moz-nativehyperlinktext</dt> - <dd> - <p>{{Gecko_minversion_inline("1.9.1")}} 既定のプラットフォームのハイパーリンク色</p> - </dd> - <dt>-moz-OddTreeRow</dt> - <dd> - <p>{{gecko_minversion_inline("1.9")}} ツリー内の奇数行の背景色。 <code>-moz-FieldText</code> の前景色と一緒に使う必要があります。 Gecko のバージョン 1.9 より前のバージョンでは、 <code>-moz-Field</code> を使用してください。 <code>-moz-EvenTreeRow</code> も参照してください。</p> - </dd> - <dt>-moz-win-communicationstext</dt> - <dd> - <p>{{gecko_minversion_inline("1.9")}} <code>{{cssxref("-moz-appearance")}}: -moz-win-communications-toolbox;</code> を持つオブジェクトのテキストに使用する必要があります。</p> - </dd> - <dt>-moz-win-mediatext</dt> - <dd> - <p>{{gecko_minversion_inline("1.9")}} <code>{{cssxref("-moz-appearance")}}: -moz-win-media-toolbox</code> を持つオブj稀有とのテキストに使用する必要があります。</p> - </dd> - <dt>-moz-win-accentcolor</dt> - <dd> - <p>{{gecko_minversion_inline("56")}}<br> - スタートメニューやタスクバー、タイトルバーなどに設定できる Windows 10 のカスタムアクセントカラーにアクセスするために使用します。</p> - </dd> - <dt>-moz-win-accentcolortext</dt> - <dd> - <p>{{gecko_minversion_inline("56")}}<br> - スタートメニュー、タスクバー、タイトルバーなどの Windows 10 のカスタムアクセントカラーの上に配置されたテキストの色にアクセスするために使用します。</p> - </dd> -</dl> -</div> + /* ホワイトスペース構文 */ + hsla(240 100% 50% / .05) /* 5% 半透明の青 */ -<h3 id="Mozilla_Color_Preference_Extensions" name="Mozilla_Color_Preference_Extensions">Mozilla 色設定拡張</h3> - -<dl> - <dt>-moz-activehyperlinktext</dt> - <dd> - <p>アクティブ化されたリンクの文字色のユーザー設定です。既定の文書の背景色と共に使用されます。</p> - </dd> - <dt>-moz-default-background-color</dt> - <dd> - <p>{{Gecko_minversion_inline("5.0")}} 文書の背景色のユーザー設定です。</p> - </dd> - <dt>-moz-default-color</dt> - <dd> - <p>{{Gecko_minversion_inline("5.0")}} 文字色のユーザー設定です。</p> - </dd> - <dt>-moz-hyperlinktext</dt> - <dd> - <p>未訪問のリンクにおける文字色のユーザー設定です。既定の文書の背景色と共に使用されます。</p> - </dd> - <dt>-moz-visitedhyperlinktext</dt> - <dd> - <p>訪問済みのリンクにおける文字色のユーザー設定です。既定の文書の背景色と共に使用されます。</p> - </dd> -</dl> - -<h2 id="Interpolation" name="Interpolation">補間</h2> - -<p>アニメーションや<a href="/ja/docs/Web/CSS/CSS_Images/Using_CSS_gradients">グラデーション</a>において、 <code><color></code> の値は赤、緑、青の成分ごとに補間されます。それぞれの成分は浮動小数点の実数として補間されます。なお、予期しない灰色が現れるのを避けるため、色の補間は<a class="external" href="https://www.gimp.org/docs/plug-in/appendix-alpha.html">アルファ乗算済み sRGBA 色空間</a>で行われます。アニメーションでは補間の速度はアニメーションと関連づけられた<a href="/ja/docs/Web/CSS/single-transition-timing-function">タイミング関数</a>によって決められます。</p> - -<h2 id="Accessibility_considerations" name="Accessibility_considerations">アクセシビリティの考慮事項</h2> - -<p>色を見分けることが難しい人がいます。 <a class="external" href="https://www.w3.org/TR/WCAG/#visual-audio-contrast">WCAG 2.0</a> 勧告は、色を特定のメッセージ、動作、結果を伝える唯一の手段として使用することを避けるよう強く勧告しています。詳しくは <a href="/ja/docs/Learn/Accessibility/CSS_and_JavaScript#Color_and_color_contrast">Color and color contrast</a> をご覧ください。</p> + /* アルファのパーセント表記 */ + hsla(240 100% 50% / 5%) /* 5% 半透明の青 */ <h2 id="Specifications" name="Specifications">仕様書</h2> <table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS4 Colors', '#colorunits', '<color>')}}</td> - <td>{{Spec2('CSS4 Colors')}}</td> - <td><code>rebeccapurple</code>、4 桁 (<code>#RGBA</code>) および 8 桁 (<code>#RRGGBBAA</code>) の 16 進記法、<code>rgb()</code> および <code>hsl()</code> の別名である <code>rgba()</code> および <code>hsla()</code> (どちらも引数の構文が同じ)、関数の引数をカンマの代わりに空白で区切るこおt、アルファ値のパーセント値表記、<code>hsl()</code> 色の色相の角度表記を追加。</td> - </tr> - <tr> - <td>{{SpecName('CSS3 Colors', '#colorunits', '<color>')}}</td> - <td>{{Spec2('CSS3 Colors')}}</td> - <td>システム色を非推奨化。 SVG 色を追加。<code>rgba()</code>, <code>hsl()</code>, <code>hsla()</code> 関数記法を追加</td> - </tr> - <tr style="vertical-align: top;"> - <td style="vertical-align: top;">{{SpecName('CSS2.1', 'syndata.html#value-def-color', '<color>')}}</td> - <td style="vertical-align: top;">{{Spec2('CSS2.1')}}</td> - <td><code>orange</code> キーワードとシステム色を追加</td> - </tr> - <tr> - <td style="vertical-align: top;">{{SpecName('CSS1', '#color-units', '<color>')}}</td> - <td style="vertical-align: top;">{{Spec2('CSS1')}}</td> - <td style="vertical-align: top;">初回定義。基本16色のキーワードを含む。</td> - </tr> - </tbody> + <thead> + <tr> + <th scope="col">仕様書</th> + <th scope="col">状態</th> + <th scope="col">備考</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('CSS4 Colors', '#changes-from-3')}}</td> + <td>{{Spec2('CSS4 Colors')}}</td> + <td> + LCH および Lab の色、<code>color()</code> 関数表記、<code>rebeccapurple</code>、4 桁 (<code>#RGBA</code>) および 8 桁 (<code>#RRGGBBAA</code>) の 16 進表記を追加し、<code>rgba()</code> および <code>hsla()</code> を <code>rgb()</code> および <code>hsl()</code> の別名とし (引数の構文を共通化)、関数の空白区切りの引数をカンマの代替とし、アルファ値にパーセント値を追加し、<code>hsl()</code> 色の色相の角度表記を追加。 + </td> + </tr> + <tr> + <td> + {{SpecName('CSS3 Colors', '#colorunits', '<color>')}} + </td> + <td>{{Spec2('CSS3 Colors')}}</td> + <td> + システム色を非推奨化。 SVG 色を追加。<code>rgba()</code>, <code>hsl()</code>, <code>hsla()</code> 関数表記を追加。 + </td> + </tr> + <tr style="vertical-align: top"> + <td style="vertical-align: top"> + {{SpecName('CSS2.1', 'syndata.html#value-def-color', '<color>')}} + </td> + <td style="vertical-align: top">{{Spec2('CSS2.1')}}</td> + <td style="vertical-align: top"> + <code>orange</code> キーワードとシステム色を追加。 + </td> + </tr> + <tr> + <td style="vertical-align: top"> + {{SpecName('CSS1', '#color-units', '<color>')}} + </td> + <td style="vertical-align: top">{{Spec2('CSS1')}}</td> + <td style="vertical-align: top"> + 初回定義。基本 16 色のキーワードを含む。 + </td> + </tr> + </tbody> </table> -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> +## ブラウザーの互換性 -<p>{{Compat("css.types.color")}}</p> +{{Compat}} -<h2 id="See_also" name="See_also">関連情報</h2> +## 関連情報 -<ul> - <li>{{Cssxref("opacity")}} プロパティは要素レベルで色の透明度を定義できます。</li> - <li>このデータ型を使用するよく使われるプロパティ: {{Cssxref("color")}}, {{Cssxref("background-color")}}, {{Cssxref("border-color")}}, {{Cssxref("outline-color")}}, {{Cssxref("text-shadow")}}, {{Cssxref("box-shadow")}}</li> - <li><a href="/ja/docs/Web/HTML/Applying_color">CSS を使った HTML の要素への色の適用</a></li> -</ul> +- {{Cssxref("opacity")}} プロパティは要素レベルで色の透明度を定義できます。 +- このデータ型を使用するよく使われるプロパティ: {{Cssxref("color")}}, {{Cssxref("background-color")}}, {{Cssxref("border-color")}}, {{Cssxref("box-shadow")}}, {{Cssxref("outline-color")}}, {{Cssxref("text-shadow")}} +- [CSS を使った HTML の要素への色の適用](/ja/docs/Web/HTML/Applying_color) diff --git a/files/ja/web/css/css_color/index.md b/files/ja/web/css/css_color/index.md index 83d5bcadac..36962c578b 100644 --- a/files/ja/web/css/css_color/index.md +++ b/files/ja/web/css/css_color/index.md @@ -4,108 +4,65 @@ slug: Web/CSS/CSS_Color tags: - CSS - CSS 色 + - ガイド - HTML 色 - - Reference - - スタイル - 概要 + - リファレンス + - スタイル + - Styling HTML - 色 translation_of: Web/CSS/CSS_Color --- -<div>{{CSSRef}}</div> - -<p><span class="seoSummary"><ruby><strong>CSS 色</strong><rp> (</rp><rt>CSS Color</rt><rp>) </rp></ruby>は、色、色の種類、色の混合、透過性、そしてどのようにこれらの色や効果を HTML コンテンツに適用するかを扱う CSS のモジュールです。</span> {{cssxref("<color>")}} を値として取る CSS プロパティがすべてこのモジュールの一部であるとは限りませんが、このモジュールに依存することがあります。</p> - -<h2 id="Reference" name="Reference">リファレンス</h2> - -<h3 id="Properties" name="Properties">プロパティ</h3> - -<div class="index"> -<ul> - <li>{{cssxref("color")}}</li> - <li>{{cssxref("color-adjust")}}</li> - <li>{{cssxref("opacity")}}</li> -</ul> -</div> - -<h3 id="Data_types" name="Data_types">データ型</h3> - -<div class="index"> -<ul> - <li>{{cssxref("<color>")}}</li> -</ul> -</div> - -<h2 id="Guides" name="Guides">ガイド</h2> - -<dl> - <dt><a href="/ja/docs/Web/HTML/Applying_color">CSS を使った HTML 要素への色の適用</a></dt> - <dd>様々な種類のコンテンツに CSS を使って色を適用するためのガイドです。色に関するすべての CSS プロパティが関係します。</dd> -</dl> - -<h2 id="Tools" name="Tools">ツール</h2> - -<dl> - <dt><a href="/ja/docs/Web/CSS/CSS_Colors/Color_picker_tool">色選択ツール</a></dt> - <dd>このツールは独自の色を簡単に作成、調整、実験することができます。</dd> -</dl> - -<h2 id="Specifications" name="Specifications">仕様書</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS4 Colors')}}</td> - <td>{{Spec2('CSS4 Colors')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('CSS3 Colors')}}</td> - <td>{{Spec2('CSS3 Colors')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('CSS2.1', 'colors.html')}}</td> - <td>{{Spec2('CSS2.1')}}</td> - <td> </td> - </tr> - <tr> - <td>{{SpecName('CSS1')}}</td> - <td>{{Spec2('CSS1')}}</td> - <td>初回定義</td> - </tr> - </tbody> -</table> - -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの対応</h2> - -<h3 id="color_プロパティ"><code>color</code> プロパティ</h3> - -<div> -<p>{{Compat("css.properties.color")}}</p> -</div> - -<h3 id="color-adjust_プロパティ"><code>color-adjust</code> プロパティ</h3> - -<div> -<p>{{Compat("css.properties.color-adjust")}}</p> -</div> - -<h3 id="opacity_プロパティ"><code>opacity</code> プロパティ</h3> - -<div> -<p>{{Compat("css.properties.opacity")}}</p> -</div> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li>他の仕様書で定義されている色に関するプロパティ: {{cssxref("background-color")}}, {{cssxref("border-color")}}, {{cssxref("outline-color")}}, {{cssxref("text-decoration-color")}}, {{cssxref("text-emphasis-color")}}, {{cssxref("text-shadow")}}, {{cssxref("caret-color")}}, {{cssxref("column-rule-color")}}</li> - <li>CSS では、グラデーションは色ではなく<a href="/ja/docs/Web/CSS/CSS_Images">画像</a>です。</li> -</ul> +{{CSSRef}} + +**CSS 色** (CSS Color) は CSS のモジュールで、色、色の種類、色の混合、透過性、そしてどのようにこれらの色や効果を HTML コンテンツに適用するかを扱います。{{cssxref("<color>")}} を値として取る CSS プロパティがすべてこのモジュールの一部であるとは限りませんが、このモジュールに依存することがあります。 + +## リファレンス + +### プロパティ + +- {{cssxref("color")}} +- {{cssxref("color-adjust")}} +- {{cssxref("opacity")}} + +### データ型 + +- {{cssxref("<color>")}} + +## ガイド + +- [CSS を使った HTML 要素への色の適用](/ja/docs/Web/HTML/Applying_color) + - : 様々な種類のコンテンツに CSS を使って色を適用するためのガイドです。色に関するすべての CSS プロパティが関係します。 + +## ツール + +- [色選択ツール](/ja/docs/Web/CSS/CSS_Colors/Color_picker_tool) + - : このツールは独自の色を簡単に作成、調整、実験することができます。 + +## 仕様書 + +| 仕様書 | 状態 | 備考 | +| ------------------------------------- | ------------------------ | -------- | +| {{SpecName('CSS4 Colors')}} | {{Spec2('CSS4 Colors')}} | | +| {{SpecName('CSS3 Colors')}} | {{Spec2('CSS3 Colors')}} | | +| {{SpecName('CSS2.1', 'colors.html')}} | {{Spec2('CSS2.1')}} | | +| {{SpecName('CSS1')}} | {{Spec2('CSS1')}} | 初回定義 | + +## ブラウザーの互換性 + +### `color` プロパティ + +{{Compat("css.properties.color")}} + +### `color-adjust` プロパティ + +{{Compat("css.properties.color-adjust")}} + +### `opacity` プロパティ + +{{Compat("css.properties.opacity")}} + +## 関連情報 + +- 他の仕様書で定義されている色に関するプロパティ: {{cssxref("background-color")}}, {{cssxref("border-color")}}, {{cssxref("outline-color")}}, {{cssxref("text-decoration-color")}}, {{cssxref("text-emphasis-color")}}, {{cssxref("text-shadow")}}, {{cssxref("caret-color")}}, {{cssxref("column-rule-color")}} +- CSS では、グラデーションは色ではなく[画像](/ja/docs/Web/CSS/CSS_Images)です。 diff --git a/files/ja/web/css/css_colors/color_picker_tool/index.md b/files/ja/web/css/css_colors/color_picker_tool/index.md index 5fb090a903..5c68c1677c 100644 --- a/files/ja/web/css/css_colors/color_picker_tool/index.md +++ b/files/ja/web/css/css_colors/color_picker_tool/index.md @@ -3,3239 +3,36 @@ title: 色選択ツール slug: Web/CSS/CSS_Colors/Color_picker_tool tags: - CSS - - CSS 色 - CSS 色選択 - CSS 色選択ツール - - HTML 色 + - CSS 色 + - 色選択 - HTML 色選択 - HTML 色選択ツール - - color + - HTML 色 - ツール - - 色選択 + - color + - colors translation_of: Web/CSS/CSS_Colors/Color_picker_tool --- -<div class="hidden"> -<h2 id="ColorPicker_Tool" name="ColorPicker_Tool">色選択ツール</h2> - -<h3 id="HTML">HTML</h3> - -<pre class="brush: html"> <div id="container"> - <div id="palette" class="block"> - <div id="color-palette"></div> - <div id="color-info"> - <div class="title"> CSS 色 </div> - </div> - </div> - - <div id="picker" class="block"> - <div class="ui-color-picker" data-topic="picker" data-mode="HSL"></div> - <div id="picker-samples" sample-id="master"></div> - <div id="controls"> - <div id="delete"> - <div id="trash-can"></div> - </div> - <div id="void-sample" class="icon"></div> - </div> - </div> - - <div id="canvas" data-tutorial="drop"> - <div id="zindex" class="ui-input-slider" data-topic="z-index" data-info="z-index" - data-max="20" data-sensivity="10"></div> - </div> - </div> - -</pre> - -<h3 id="CSS">CSS</h3> - -<pre class="brush: css">/* - * COLOR PICKER TOOL - */ - -.ui-color-picker { - width: 420px; - margin: 0; - border: 1px solid #DDD; - background-color: #FFF; - display: table; - - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.ui-color-picker .picking-area { - width: 198px; - height: 198px; - margin: 5px; - border: 1px solid #DDD; - position: relative; - float: left; - display: table; -} - -.ui-color-picker .picking-area:hover { - cursor: default; -} - -/* HSV format - Hue-Saturation-Value(Brightness) */ -.ui-color-picker .picking-area { - background: url('https://mdn.mozillademos.org/files/5707/picker_mask_200.png') center center; - - background: -moz-linear-gradient(bottom, #000 0%, rgba(0, 0, 0, 0) 100%), - -moz-linear-gradient(left, #FFF 0%, rgba(255, 255, 255, 0) 100%); - background: -webkit-linear-gradient(bottom, #000 0%, rgba(0, 0, 0, 0) 100%), - -webkit-linear-gradient(left, #FFF 0%, rgba(255, 255, 255, 0) 100%); - background: -ms-linear-gradient(bottom, #000 0%, rgba(0, 0, 0, 0) 100%), - -ms-linear-gradient(left, #FFF 0%, rgba(255, 255, 255, 0) 100%); - background: -o-linear-gradient(bottom, #000 0%, rgba(0, 0, 0, 0) 100%), - -o-linear-gradient(left, #FFF 0%, rgba(255, 255, 255, 0) 100%); - - background-color: #F00; -} - -/* HSL format - Hue-Saturation-Lightness */ -.ui-color-picker[data-mode='HSL'] .picking-area { - background: -moz-linear-gradient(top, hsl(0, 0%, 100%) 0%, hsla(0, 0%, 100%, 0) 50%, - hsla(0, 0%, 0%, 0) 50%, hsl(0, 0%, 0%) 100%), - -moz-linear-gradient(left, hsl(0, 0%, 50%) 0%, hsla(0, 0%, 50%, 0) 100%); - background: -webkit-linear-gradient(top, hsl(0, 0%, 100%) 0%, hsla(0, 0%, 100%, 0) 50%, - hsla(0, 0%, 0%, 0) 50%, hsl(0, 0%, 0%) 100%), - -webkit-linear-gradient(left, hsl(0, 0%, 50%) 0%, hsla(0, 0%, 50%, 0) 100%); - background: -ms-linear-gradient(top, hsl(0, 0%, 100%) 0%, hsla(0, 0%, 100%, 0) 50%, - hsla(0, 0%, 0%, 0) 50%, hsl(0, 0%, 0%) 100%), - -ms-linear-gradient(left, hsl(0, 0%, 50%) 0%, hsla(0, 0%, 50%, 0) 100%); - background: -o-linear-gradient(top, hsl(0, 0%, 100%) 0%, hsla(0, 0%, 100%, 0) 50%, - hsla(0, 0%, 0%, 0) 50%, hsl(0, 0%, 0%) 100%), - -o-linear-gradient(left, hsl(0, 0%, 50%) 0%, hsla(0, 0%, 50%, 0) 100%); - background-color: #F00; -} - -.ui-color-picker .picker { - width: 10px; - height: 10px; - border-radius: 50%; - border: 1px solid #FFF; - position: absolute; - top: 45%; - left: 45%; -} - -.ui-color-picker .picker:before { - width: 8px; - height: 8px; - content: ""; - position: absolute; - border: 1px solid #999; - border-radius: 50%; -} - -.ui-color-picker .hue, -.ui-color-picker .alpha { - width: 198px; - height: 28px; - margin: 5px; - border: 1px solid #FFF; - float: left; -} - -.ui-color-picker .hue { - background: url("https://mdn.mozillademos.org/files/5701/hue.png") center; - background: -moz-linear-gradient(left, #F00 0%, #FF0 16.66%, #0F0 33.33%, #0FF 50%, - #00F 66.66%, #F0F 83.33%, #F00 100%); - background: -webkit-linear-gradient(left, #F00 0%, #FF0 16.66%, #0F0 33.33%, #0FF 50%, - #00F 66.66%, #F0F 83.33%, #F00 100%); - background: -ms-linear-gradient(left, #F00 0%, #FF0 16.66%, #0F0 33.33%, #0FF 50%, - #00F 66.66%, #F0F 83.33%, #F00 100%); - background: -o-linear-gradient(left, #F00 0%, #FF0 16.66%, #0F0 33.33%, #0FF 50%, - #00F 66.66%, #F0F 83.33%, #F00 100%); -} - -.ui-color-picker .alpha { - border: 1px solid #CCC; - background: url("https://mdn.mozillademos.org/files/5705/alpha.png"); -} - -.ui-color-picker .alpha-mask { - width: 100%; - height: 100%; - background: url("https://mdn.mozillademos.org/files/6089/alpha_mask.png"); -} - -.ui-color-picker .slider-picker { - width: 2px; - height: 100%; - border: 1px solid #777; - background-color: #FFF; - position: relative; - top: -1px; -} - -/* input HSV and RGB */ - -.ui-color-picker .info { - width: 200px; - margin: 5px; - float: left; -} - -.ui-color-picker .info * { - float: left; -} - -.ui-color-picker .input { - width: 64px; - margin: 5px 2px; - float: left; -} - -.ui-color-picker .input .name { - height: 20px; - width: 30px; - text-align: center; - font-size: 14px; - line-height: 18px; - float: left; -} - -.ui-color-picker .input input { - width: 30px; - height: 18px; - margin: 0; - padding: 0; - border: 1px solid #DDD; - text-align: center; - float: right; - - -moz-user-select: text; - -webkit-user-select: text; - -ms-user-select: text; -} - -.ui-color-picker .input[data-topic="lightness"] { - display: none; -} - -.ui-color-picker[data-mode='HSL'] .input[data-topic="value"] { - display: none; -} - -.ui-color-picker[data-mode='HSL'] .input[data-topic="lightness"] { - display: block; -} - -.ui-color-picker .input[data-topic="alpha"] { - margin-top: 10px; - width: 93px; -} - -.ui-color-picker .input[data-topic="alpha"] > .name { - width: 60px; -} - -.ui-color-picker .input[data-topic="alpha"] > input { - float: right; -} - -.ui-color-picker .input[data-topic="hexa"] { - width: auto; - float: right; - margin: 6px 8px 0 0; -} - -.ui-color-picker .input[data-topic="hexa"] > .name { - display: none; -} - -.ui-color-picker .input[data-topic="hexa"] > input { - width: 90px; - height: 24px; - padding: 2px 0; - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -/* Preview color */ -.ui-color-picker .preview { - width: 95px; - height: 53px; - margin: 5px; - margin-top: 10px; - border: 1px solid #DDD; - background-image: url("https://mdn.mozillademos.org/files/5705/alpha.png"); - float: left; - position: relative; -} - -.ui-color-picker .preview:before { - height: 100%; - width: 50%; - left: 50%; - top: 0; - content: ""; - background: #FFF; - position: absolute; - z-index: 1; -} - -.ui-color-picker .preview-color { - width: 100%; - height: 100%; - background-color: rgba(255, 0, 0, 0.5); - position: absolute; - z-index: 1; -} - -.ui-color-picker .switch_mode { - width: 10px; - height: 20px; - position: relative; - border-radius: 5px 0 0 5px; - border: 1px solid #DDD; - background-color: #EEE; - left: -12px; - top: -1px; - z-index: 1; - transition: all 0.5s; -} - -.ui-color-picker .switch_mode:hover { - background-color: #CCC; - cursor: pointer; -} - -/* - * UI Component - */ - -.ui-input-slider { - height: 20px; - font-family: "Segoe UI", Arial, Helvetica, sans-serif; - -moz-user-select: none; - user-select: none; -} - -.ui-input-slider * { - float: left; - height: 100%; - line-height: 100%; -} - -/* Input Slider */ - -.ui-input-slider > input { - margin: 0; - padding: 0; - width: 50px; - text-align: center; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -.ui-input-slider-info { - width: 90px; - padding: 0px 10px 0px 0px; - text-align: right; - text-transform: lowercase; -} - -.ui-input-slider-left, .ui-input-slider-right { - width: 16px; - cursor: pointer; - background: url("https://mdn.mozillademos.org/files/5679/arrows.png") center left no-repeat; -} - -.ui-input-slider-right { - background: url("https://mdn.mozillademos.org/files/5679/arrows.png") center right no-repeat; -} - -.ui-input-slider-name { - width: 90px; - padding: 0 10px 0 0; - text-align: right; - text-transform: lowercase; -} - -.ui-input-slider-btn-set { - width: 25px; - background-color: #2C9FC9; - border-radius: 5px; - color: #FFF; - font-weight: bold; - line-height: 14px; - text-align: center; -} - -.ui-input-slider-btn-set:hover { - background-color: #379B4A; - cursor: pointer; -} - -/* - * COLOR PICKER TOOL - */ - -body { - max-width: 1000px; - margin: 0 auto; - - font-family: "Segoe UI", Arial, Helvetica, sans-serif; - - box-shadow: 0 0 5px 0 #999; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - -moz-user-select: none; - -webkit-user-select: none; - -ms-user-select: none; - user-select: none; - -} - -/** - * Resize Handle - */ -.resize-handle { - width: 10px; - height: 10px; - background: url('https://mdn.mozillademos.org/files/6083/resize.png') center center no-repeat; - position: absolute; - bottom: 0; - right: 0; -} - -[data-resize='both']:hover { - cursor: nw-resize !important; -} - -[data-resize='width']:hover { - cursor: w-resize !important; -} - -[data-resize='height']:hover { - cursor: n-resize !important; -} - -[data-hidden='true'] { - display: none; -} - -[data-collapsed='true'] { - height: 0 !important; -} - -.block { - display: table; -} - - -/** - * Container - */ -#container { - width: 100%; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - display: table; -} - -/** - * Picker Zone - */ - -#picker { - padding: 10px; - width: 980px; -} - -.ui-color-picker { - padding: 3px 5px; - float: left; - border-color: #FFF; -} - -.ui-color-picker .switch_mode { - display: none; -} - -.ui-color-picker .preview-color:hover { - cursor: move; -} - -/** - * Picker Container - */ - -#picker-samples { - width: 375px; - height: 114px; - max-height: 218px; - margin: 0 10px 0 30px; - overflow: hidden; - position: relative; - float: left; - - transition: all 0.2s; -} - -#picker-samples .sample { - width: 40px; - height: 40px; - margin: 5px; - border: 1px solid #DDD; - position: absolute; - float: left; - transition: all 0.2s; -} - -#picker-samples .sample:hover { - cursor: pointer; - border-color: #BBB; - transform: scale(1.15); - border-radius: 3px; -} - -#picker-samples .sample[data-active='true'] { - border-color: #999; -} - -#picker-samples .sample[data-active='true']:after { - content: ""; - position: absolute; - background: url('https://mdn.mozillademos.org/files/6065/arrow.png') center no-repeat; - width: 100%; - height: 12px; - top: -12px; - z-index: 2; -} - -#picker-samples #add-icon { - width: 100%; - height: 100%; - position: relative; - box-shadow: inset 0px 0px 2px 0px #DDD; -} - -#picker-samples #add-icon:hover { - cursor: pointer; - border-color: #DDD; - box-shadow: inset 0px 0px 5px 0px #CCC; -} - -#picker-samples #add-icon:before, -#picker-samples #add-icon:after { - content: ""; - position: absolute; - background-color: #EEE; - box-shadow: 0 0 1px 0 #EEE; -} - -#picker-samples #add-icon:before { - width: 70%; - height: 16%; - top: 42%; - left: 15%; -} - -#picker-samples #add-icon:after { - width: 16%; - height: 70%; - top: 15%; - left: 42%; -} - -#picker-samples #add-icon:hover:before, -#picker-samples #add-icon:hover:after { - background-color: #DDD; - box-shadow: 0 0 1px 0 #DDD; -} - -/** - * Controls - */ - -#controls { - width: 110px; - padding: 10px; - float: right; -} - -#controls #picker-switch { - text-align: center; - float: left; -} - -#controls .icon { - width: 48px; - height: 48px; - margin: 10px 0; - background-repeat: no-repeat; - background-position: center; - border: 1px solid #DDD; - display: table; - float: left; -} - -#controls .icon:hover { - cursor: pointer; -} - -#controls .picker-icon { - background-image: url('https://mdn.mozillademos.org/files/6081/picker.png'); -} - -#controls #void-sample { - margin-right: 10px; - background-image: url('https://mdn.mozillademos.org/files/6087/void.png'); - background-position: center left; -} - -#controls #void-sample[data-active='true'] { - border-color: #CCC; - background-position: center right; -} - -#controls .switch { - width: 106px; - padding: 1px; - border: 1px solid #CCC; - font-size: 14px; - text-align: center; - line-height: 24px; - overflow: hidden; - float: left; -} - -#controls .switch:hover { - cursor: pointer; -} - -#controls .switch > * { - width: 50%; - padding: 2px 0; - background-color: #EEE; - float: left; -} - -#controls .switch [data-active='true'] { - color: #FFF; - background-image: url('https://mdn.mozillademos.org/files/6025/grain.png'); - background-color: #777; -} - -/** - * Trash Can - */ - -#delete { - width: 100%; - height: 94px; - background-color: #DDD; - background-image: url('https://mdn.mozillademos.org/files/6025/grain.png'); - background-repeat: repeat; - - text-align: center; - color: #777; - - position: relative; - float: right; -} - -#delete #trash-can { - width: 80%; - height: 80%; - border: 2px dashed #FFF; - border-radius: 5px; - background: url('https://mdn.mozillademos.org/files/6085/trash-can.png') no-repeat center; - - position: absolute; - top: 10%; - left: 10%; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; - - transition: all 0.2s; -} - -#delete[drag-state='enter'] { - background-color: #999; -} - -/** - * Color Theme - */ - -#color-theme { - margin: 0 8px 0 0; - border: 1px solid #EEE; - display: inline-block; - float: right; -} - -#color-theme .box { - width: 80px; - height: 92px; - float: left; -} - -/** - * Color info box - */ -#color-info { - width: 360px; - float: left; -} - -#color-info .title { - width: 100%; - padding: 15px; - font-size: 18px; - text-align: center; - background-image: url('https://mdn.mozillademos.org/files/6071/color-wheel.png'); - background-repeat:no-repeat; - background-position: center left 30%; -} - -#color-info .copy-container { - position: absolute; - top: -100%; -} - -#color-info .property { - min-width: 280px; - height: 30px; - margin: 10px 0; - text-align: center; - line-height: 30px; -} - -#color-info .property > * { - float: left; -} - -#color-info .property .type { - width: 60px; - height: 100%; - padding: 0 16px 0 0; - text-align: right; -} - -#color-info .property .value { - width: 200px; - height: 100%; - padding: 0 10px; - font-family: "Segoe UI", Arial, Helvetica, sans-serif; - font-size: 16px; - color: #777; - text-align: center; - background-color: #FFF; - border: none; -} - -#color-info .property .value:hover { - color: #37994A; -} - -#color-info .property .value:hover + .copy { - background-position: center right; -} - -#color-info .property .copy { - width: 24px; - height: 100%; - padding: 0 5px; - background-color: #FFF; - background-image: url('https://mdn.mozillademos.org/files/6073/copy.png'); - background-repeat: no-repeat; - background-position: center left; - border-left: 1px solid #EEE; - text-align: right; - float: left; -} - -#color-info .property .copy:hover { - background-position: center right; -} - - -/** - * Color Palette - */ - -#palette { - width: 1000px; - padding: 10px 0; - background-image: url('https://mdn.mozillademos.org/files/6025/grain.png'); - background-repeat: repeat; - background-color: #EEE; - color: #777; - - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -#color-palette { - width: 640px; - font-family: Arial, Helvetica, sans-serif; - color: #777; - float: left; -} - -#color-palette .container { - width: 100%; - height: 50px; - line-height: 50px; - overflow: hidden; - float: left; - transition: all 0.5s; -} - -#color-palette .container > * { - float: left; -} - -#color-palette .title { - width: 100px; - padding: 0 10px; - text-align: right; - line-height: inherit; -} - -#color-palette .palette { - width: 456px; - height: 38px; - margin: 3px; - padding: 3px; - display: table; - background-color: #FFF; -} - -#color-palette .palette .sample { - width: 30px; - height: 30px; - margin: 3px; - position: relative; - border: 1px solid #DDD; - float: left; - transition: all 0.2s; -} - -#color-palette .palette .sample:hover { - cursor: pointer; - border-color: #BBB; - transform: scale(1.15); - border-radius: 3px; -} - -#color-palette .controls { -} - -#color-palette .controls > * { - float: left; -} - -#color-palette .controls > *:hover { - cursor: pointer; -} - -#color-palette .controls .lock { - width: 24px; - height: 24px; - margin: 10px; - padding: 3px; - background-image: url('https://mdn.mozillademos.org/files/6077/lock.png'); - background-repeat: no-repeat; - background-position: bottom right; -} - -#color-palette .controls .lock:hover { - /*background-image: url('images/unlocked-hover.png');*/ - background-position: bottom left; -} - -#color-palette .controls .lock[locked-state='true'] { - /*background-image: url('images/locked.png');*/ - background-position: top left ; -} - -#color-palette .controls .lock[locked-state='true']:hover { - /*background-image: url('images/lock-hover.png');*/ - background-position: top right; -} - -/** - * Canvas - */ - -#canvas { - width: 100%; - height: 300px; - min-height: 250px; - border-top: 1px solid #DDD; - background-image: url('https://mdn.mozillademos.org/files/6025/grain.png'); - background-repeat: repeat; - position: relative; - float: left; -} - -#canvas[data-tutorial='drop'] { - text-align: center; - font-size: 30px; - color: #777; -} - -#canvas[data-tutorial='drop']:before { - content: "Drop colors here to compare"; - width: 40%; - padding: 30px 9% 70px 11%; - - background-image: url('https://mdn.mozillademos.org/files/6075/drop.png'); - background-repeat: no-repeat; - background-position: left 35px top 60%; - - text-align: right; - - border: 3px dashed rgb(221, 221, 221); - border-radius: 15px; - - position: absolute; - top: 50px; - left: 20%; -} - -#canvas[data-tutorial='drop']:after { - content: "adjust, change or modify"; - width: 40%; - font-size: 24px; - position: absolute; - top: 130px; - left: 32%; - z-index: 2; -} - -#canvas [data-tutorial='dblclick'] { - background-color: #999 !important; -} - -#canvas [data-tutorial='dblclick']:before { - content: "double click to activate"; - width: 80px; - color: #FFF; - position: absolute; - top: 10%; - left: 20%; - z-index: 2; -} - -#canvas .sample { - width: 100px; - height: 100px; - min-width: 20px; - min-height: 20px; - position: absolute; - border: 1px solid rgba(255, 255, 255, 0.3); -} - -#canvas .sample:hover { - cursor: move; -} - -#canvas .sample[data-active='true']:after { - content: ""; - position: absolute; - background: url('https://mdn.mozillademos.org/files/6065/arrow.png') center no-repeat; - width: 100%; - height: 12px; - top: -12px; - z-index: 2; -} - -#canvas .sample:hover > * { - cursor: pointer; - display: block !important; -} - -#canvas .sample .resize-handle { - display: none; -} - -#canvas .sample .pick { - width: 10px; - height: 10px; - margin: 5px; - background: url('https://mdn.mozillademos.org/files/6079/pick.png') center no-repeat; - position: absolute; - top: 0; - left: 0; - display: none; -} - -#canvas .sample .delete { - width: 10px; - height: 10px; - margin: 5px; - background: url('https://mdn.mozillademos.org/files/6069/close.png') center no-repeat; - position: absolute; - top: 0; - right: 0; - display: none; -} - - -/** - * Canvas controls - */ - -#canvas .toggle-bg { - width: 16px; - height: 16px; - margin: 5px; - background: url("images/canvas-controls.png") center left no-repeat; - position: absolute; - top: 0; - right: 0; -} - -#canvas .toggle-bg:hover { - cursor: pointer; -} - -#canvas[data-bg='true'] { - background: none; -} - -#canvas[data-bg='true'] .toggle-bg { - background: url('https://mdn.mozillademos.org/files/6067/canvas-controls.png') center right no-repeat; -} - -#zindex { - height: 20px; - margin: 5px; - font-size: 16px; - position: absolute; - opacity: 0; - top: -10000px; - left: 0; - color: #777; - float: left; - transition: opacity 1s; -} - -#zindex input { - border: 1px solid #DDD; - font-size: 16px; - color: #777; -} - -#zindex .ui-input-slider-info { - width: 60px; -} - -#zindex[data-active='true'] { - top: 0; - opacity: 1; -} - -</pre> - -<h3 id="JavaScript_Content">JavaScript Content</h3> - -<pre class="brush: js">'use strict'; - -var UIColorPicker = (function UIColorPicker() { - - function getElemById(id) { - return document.getElementById(id); - } - - var subscribers = []; - var pickers = []; - - /** - * RGBA Color class - * - * HSV/HSB and HSL (hue, saturation, value / brightness, lightness) - * @param hue 0-360 - * @param saturation 0-100 - * @param value 0-100 - * @param lightness 0-100 - */ - - function Color(color) { - - if(color instanceof Color === true) { - this.copy(color); - return; - } - - this.r = 0; - this.g = 0; - this.b = 0; - this.a = 1; - this.hue = 0; - this.saturation = 0; - this.value = 0; - this.lightness = 0; - this.format = 'HSV'; - } - - function RGBColor(r, g, b) { - var color = new Color(); - color.setRGBA(r, g, b, 1); - return color; - } - - function RGBAColor(r, g, b, a) { - var color = new Color(); - color.setRGBA(r, g, b, a); - return color; - } - - function HSVColor(h, s, v) { - var color = new Color(); - color.setHSV(h, s, v); - return color; - } - - function HSVAColor(h, s, v, a) { - var color = new Color(); - color.setHSV(h, s, v); - color.a = a; - return color; - } - - function HSLColor(h, s, l) { - var color = new Color(); - color.setHSL(h, s, l); - return color; - } - - function HSLAColor(h, s, l, a) { - var color = new Color(); - color.setHSL(h, s, l); - color.a = a; - return color; - } - - Color.prototype.copy = function copy(obj) { - if(obj instanceof Color !== true) { - console.log('Typeof parameter not Color'); - return; - } - - this.r = obj.r; - this.g = obj.g; - this.b = obj.b; - this.a = obj.a; - this.hue = obj.hue; - this.saturation = obj.saturation; - this.value = obj.value; - this.format = '' + obj.format; - this.lightness = obj.lightness; - }; - - Color.prototype.setFormat = function setFormat(format) { - if (format === 'HSV') - this.format = 'HSV'; - if (format === 'HSL') - this.format = 'HSL'; - }; - - /*========== Methods to set Color Properties ==========*/ - - Color.prototype.isValidRGBValue = function isValidRGBValue(value) { - return (typeof(value) === 'number' && isNaN(value) === false && - value >= 0 && value <= 255); - }; - - Color.prototype.setRGBA = function setRGBA(red, green, blue, alpha) { - if (this.isValidRGBValue(red) === false || - this.isValidRGBValue(green) === false || - this.isValidRGBValue(blue) === false) - return; - - this.r = red | 0; - this.g = green | 0; - this.b = blue | 0; - - if (this.isValidRGBValue(alpha) === true) - this.a = alpha | 0; - }; - - Color.prototype.setByName = function setByName(name, value) { - if (name === 'r' || name === 'g' || name === 'b') { - if(this.isValidRGBValue(value) === false) - return; - - this[name] = value; - this.updateHSX(); - } - }; - - Color.prototype.setHSV = function setHSV(hue, saturation, value) { - this.hue = hue; - this.saturation = saturation; - this.value = value; - this.HSVtoRGB(); - }; - - Color.prototype.setHSL = function setHSL(hue, saturation, lightness) { - this.hue = hue; - this.saturation = saturation; - this.lightness = lightness; - this.HSLtoRGB(); - }; - - Color.prototype.setHue = function setHue(value) { - if (typeof(value) !== 'number' || isNaN(value) === true || - value < 0 || value > 359) - return; - this.hue = value; - this.updateRGB(); - }; - - Color.prototype.setSaturation = function setSaturation(value) { - if (typeof(value) !== 'number' || isNaN(value) === true || - value < 0 || value > 100) - return; - this.saturation = value; - this.updateRGB(); - }; - - Color.prototype.setValue = function setValue(value) { - if (typeof(value) !== 'number' || isNaN(value) === true || - value < 0 || value > 100) - return; - this.value = value; - this.HSVtoRGB(); - }; - - Color.prototype.setLightness = function setLightness(value) { - if (typeof(value) !== 'number' || isNaN(value) === true || - value < 0 || value > 100) - return; - this.lightness = value; - this.HSLtoRGB(); - }; - - Color.prototype.setHexa = function setHexa(value) { - var valid = /(^#{0,1}[0-9A-F]{6}$)|(^#{0,1}[0-9A-F]{3}$)/i.test(value); - - if (valid !== true) - return; - - if (value[0] === '#') - value = value.slice(1, value.length); - - if (value.length === 3) - value = value.replace(/([0-9A-F])([0-9A-F])([0-9A-F])/i,'$1$1$2$2$3$3'); - - this.r = parseInt(value.substr(0, 2), 16); - this.g = parseInt(value.substr(2, 2), 16); - this.b = parseInt(value.substr(4, 2), 16); - - this.alpha = 1; - this.RGBtoHSV(); - }; - - /*========== Conversion Methods ==========*/ - - Color.prototype.convertToHSL = function convertToHSL() { - if (this.format === 'HSL') - return; - - this.setFormat('HSL'); - this.RGBtoHSL(); - }; - - Color.prototype.convertToHSV = function convertToHSV() { - if (this.format === 'HSV') - return; - - this.setFormat('HSV'); - this.RGBtoHSV(); - }; - - /*========== Update Methods ==========*/ - - Color.prototype.updateRGB = function updateRGB() { - if (this.format === 'HSV') { - this.HSVtoRGB(); - return; - } - - if (this.format === 'HSL') { - this.HSLtoRGB(); - return; - } - }; - - Color.prototype.updateHSX = function updateHSX() { - if (this.format === 'HSV') { - this.RGBtoHSV(); - return; - } - - if (this.format === 'HSL') { - this.RGBtoHSL(); - return; - } - }; - - Color.prototype.HSVtoRGB = function HSVtoRGB() { - var sat = this.saturation / 100; - var value = this.value / 100; - var C = sat * value; - var H = this.hue / 60; - var X = C * (1 - Math.abs(H % 2 - 1)); - var m = value - C; - var precision = 255; - - C = (C + m) * precision | 0; - X = (X + m) * precision | 0; - m = m * precision | 0; - - if (H >= 0 && H < 1) { this.setRGBA(C, X, m); return; } - if (H >= 1 && H < 2) { this.setRGBA(X, C, m); return; } - if (H >= 2 && H < 3) { this.setRGBA(m, C, X); return; } - if (H >= 3 && H < 4) { this.setRGBA(m, X, C); return; } - if (H >= 4 && H < 5) { this.setRGBA(X, m, C); return; } - if (H >= 5 && H < 6) { this.setRGBA(C, m, X); return; } - }; - - Color.prototype.HSLtoRGB = function HSLtoRGB() { - var sat = this.saturation / 100; - var light = this.lightness / 100; - var C = sat * (1 - Math.abs(2 * light - 1)); - var H = this.hue / 60; - var X = C * (1 - Math.abs(H % 2 - 1)); - var m = light - C/2; - var precision = 255; - - C = (C + m) * precision | 0; - X = (X + m) * precision | 0; - m = m * precision | 0; - - if (H >= 0 && H < 1) { this.setRGBA(C, X, m); return; } - if (H >= 1 && H < 2) { this.setRGBA(X, C, m); return; } - if (H >= 2 && H < 3) { this.setRGBA(m, C, X); return; } - if (H >= 3 && H < 4) { this.setRGBA(m, X, C); return; } - if (H >= 4 && H < 5) { this.setRGBA(X, m, C); return; } - if (H >= 5 && H < 6) { this.setRGBA(C, m, X); return; } - }; - - Color.prototype.RGBtoHSV = function RGBtoHSV() { - var red = this.r / 255; - var green = this.g / 255; - var blue = this.b / 255; - - var cmax = Math.max(red, green, blue); - var cmin = Math.min(red, green, blue); - var delta = cmax - cmin; - var hue = 0; - var saturation = 0; - - if (delta) { - if (cmax === red ) { hue = ((green - blue) / delta); } - if (cmax === green ) { hue = 2 + (blue - red) / delta; } - if (cmax === blue ) { hue = 4 + (red - green) / delta; } - if (cmax) saturation = delta / cmax; - } - - this.hue = 60 * hue | 0; - if (this.hue < 0) this.hue += 360; - this.saturation = (saturation * 100) | 0; - this.value = (cmax * 100) | 0; - }; - - Color.prototype.RGBtoHSL = function RGBtoHSL() { - var red = this.r / 255; - var green = this.g / 255; - var blue = this.b / 255; - - var cmax = Math.max(red, green, blue); - var cmin = Math.min(red, green, blue); - var delta = cmax - cmin; - var hue = 0; - var saturation = 0; - var lightness = (cmax + cmin) / 2; - var X = (1 - Math.abs(2 * lightness - 1)); - - if (delta) { - if (cmax === red ) { hue = ((green - blue) / delta); } - if (cmax === green ) { hue = 2 + (blue - red) / delta; } - if (cmax === blue ) { hue = 4 + (red - green) / delta; } - if (cmax) saturation = delta / X; - } - - this.hue = 60 * hue | 0; - if (this.hue < 0) this.hue += 360; - this.saturation = (saturation * 100) | 0; - this.lightness = (lightness * 100) | 0; - }; - - /*========== Get Methods ==========*/ - - Color.prototype.getHexa = function getHexa() { - var r = this.r.toString(16); - var g = this.g.toString(16); - var b = this.b.toString(16); - if (this.r < 16) r = '0' + r; - if (this.g < 16) g = '0' + g; - if (this.b < 16) b = '0' + b; - var value = '#' + r + g + b; - return value.toUpperCase(); - }; - - Color.prototype.getRGBA = function getRGBA() { - - var rgb = '(' + this.r + ', ' + this.g + ', ' + this.b; - var a = ''; - var v = ''; - var x = parseFloat(this.a); - if (x !== 1) { - a = 'a'; - v = ', ' + x; - } - - var value = 'rgb' + a + rgb + v + ')'; - return value; - }; - - Color.prototype.getHSLA = function getHSLA() { - if (this.format === 'HSV') { - var color = new Color(this); - color.setFormat('HSL'); - color.updateHSX(); - return color.getHSLA(); - } - - var a = ''; - var v = ''; - var hsl = '(' + this.hue + ', ' + this.saturation + '%, ' + this.lightness +'%'; - var x = parseFloat(this.a); - if (x !== 1) { - a = 'a'; - v = ', ' + x; - } - - var value = 'hsl' + a + hsl + v + ')'; - return value; - }; - - Color.prototype.getColor = function getColor() { - if (this.a | 0 === 1) - return this.getHexa(); - return this.getRGBA(); - }; - - /*=======================================================================*/ - /*=======================================================================*/ - - /*========== Capture Mouse Movement ==========*/ - - var setMouseTracking = function setMouseTracking(elem, callback) { - elem.addEventListener('mousedown', function(e) { - callback(e); - document.addEventListener('mousemove', callback); - }); - - document.addEventListener('mouseup', function(e) { - document.removeEventListener('mousemove', callback); - }); - }; - - /*====================*/ - // Color Picker Class - /*====================*/ - - function ColorPicker(node) { - this.color = new Color(); - this.node = node; - this.subscribers = []; - - var type = this.node.getAttribute('data-mode'); - var topic = this.node.getAttribute('data-topic'); - - this.topic = topic; - this.picker_mode = (type === 'HSL') ? 'HSL' : 'HSV'; - this.color.setFormat(this.picker_mode); - - this.createPickingArea(); - this.createHueArea(); - - this.newInputComponent('H', 'hue', this.inputChangeHue.bind(this)); - this.newInputComponent('S', 'saturation', this.inputChangeSaturation.bind(this)); - this.newInputComponent('V', 'value', this.inputChangeValue.bind(this)); - this.newInputComponent('L', 'lightness', this.inputChangeLightness.bind(this)); - - this.createAlphaArea(); - - this.newInputComponent('R', 'red', this.inputChangeRed.bind(this)); - this.newInputComponent('G', 'green', this.inputChangeGreen.bind(this)); - this.newInputComponent('B', 'blue', this.inputChangeBlue.bind(this)); - - this.createPreviewBox(); - this.createChangeModeButton(); - - this.newInputComponent('alpha', 'alpha', this.inputChangeAlpha.bind(this)); - this.newInputComponent('hexa', 'hexa', this.inputChangeHexa.bind(this)); - - this.setColor(this.color); - pickers[topic] = this; - } - - /*************************************************************************/ - // Function for generating the color-picker - /*************************************************************************/ - - ColorPicker.prototype.createPickingArea = function createPickingArea() { - var area = document.createElement('div'); - var picker = document.createElement('div'); - - area.className = 'picking-area'; - picker.className = 'picker'; - - this.picking_area = area; - this.color_picker = picker; - setMouseTracking(area, this.updateColor.bind(this)); - - area.appendChild(picker); - this.node.appendChild(area); - }; - - ColorPicker.prototype.createHueArea = function createHueArea() { - var area = document.createElement('div'); - var picker = document.createElement('div'); - - area.className = 'hue'; - picker.className ='slider-picker'; - - this.hue_area = area; - this.hue_picker = picker; - setMouseTracking(area, this.updateHueSlider.bind(this)); - - area.appendChild(picker); - this.node.appendChild(area); - }; - - ColorPicker.prototype.createAlphaArea = function createAlphaArea() { - var area = document.createElement('div'); - var mask = document.createElement('div'); - var picker = document.createElement('div'); - - area.className = 'alpha'; - mask.className = 'alpha-mask'; - picker.className = 'slider-picker'; - - this.alpha_area = area; - this.alpha_mask = mask; - this.alpha_picker = picker; - setMouseTracking(area, this.updateAlphaSlider.bind(this)); - - area.appendChild(mask); - mask.appendChild(picker); - this.node.appendChild(area); - }; - - ColorPicker.prototype.createPreviewBox = function createPreviewBox(e) { - var preview_box = document.createElement('div'); - var preview_color = document.createElement('div'); - - preview_box.className = 'preview'; - preview_color.className = 'preview-color'; - - this.preview_color = preview_color; - - preview_box.appendChild(preview_color); - this.node.appendChild(preview_box); - }; - - ColorPicker.prototype.newInputComponent = function newInputComponent(title, topic, onChangeFunc) { - var wrapper = document.createElement('div'); - var input = document.createElement('input'); - var info = document.createElement('span'); - - wrapper.className = 'input'; - wrapper.setAttribute('data-topic', topic); - info.textContent = title; - info.className = 'name'; - input.setAttribute('type', 'text'); - - wrapper.appendChild(info); - wrapper.appendChild(input); - this.node.appendChild(wrapper); - - input.addEventListener('change', onChangeFunc); - input.addEventListener('click', function() { - this.select(); - }); - - this.subscribe(topic, function(value) { - input.value = value; - }); - }; - - ColorPicker.prototype.createChangeModeButton = function createChangeModeButton() { - - var button = document.createElement('div'); - button.className = 'switch_mode'; - button.addEventListener('click', function() { - if (this.picker_mode === 'HSV') - this.setPickerMode('HSL'); - else - this.setPickerMode('HSV'); - - }.bind(this)); - - this.node.appendChild(button); - }; - - /*************************************************************************/ - // Updates properties of UI elements - /*************************************************************************/ - - ColorPicker.prototype.updateColor = function updateColor(e) { - var x = e.pageX - this.picking_area.offsetLeft; - var y = e.pageY - this.picking_area.offsetTop; - var picker_offset = 5; - - // width and height should be the same - var size = this.picking_area.clientWidth; - - if (x > size) x = size; - if (y > size) y = size; - if (x < 0) x = 0; - if (y < 0) y = 0; - - var value = 100 - (y * 100 / size) | 0; - var saturation = x * 100 / size | 0; - - if (this.picker_mode === 'HSV') - this.color.setHSV(this.color.hue, saturation, value); - if (this.picker_mode === 'HSL') - this.color.setHSL(this.color.hue, saturation, value); - - this.color_picker.style.left = x - picker_offset + 'px'; - this.color_picker.style.top = y - picker_offset + 'px'; - - this.updateAlphaGradient(); - this.updatePreviewColor(); - - this.notify('value', value); - this.notify('lightness', value); - this.notify('saturation', saturation); - - this.notify('red', this.color.r); - this.notify('green', this.color.g); - this.notify('blue', this.color.b); - this.notify('hexa', this.color.getHexa()); - - notify(this.topic, this.color); - }; - - ColorPicker.prototype.updateHueSlider = function updateHueSlider(e) { - var x = e.pageX - this.hue_area.offsetLeft; - var width = this.hue_area.clientWidth; - - if (x < 0) x = 0; - if (x > width) x = width; - - // TODO 360 => 359 - var hue = ((359 * x) / width) | 0; - // if (hue === 360) hue = 359; - - this.updateSliderPosition(this.hue_picker, x); - this.setHue(hue); - }; - - ColorPicker.prototype.updateAlphaSlider = function updateAlphaSlider(e) { - var x = e.pageX - this.alpha_area.offsetLeft; - var width = this.alpha_area.clientWidth; - - if (x < 0) x = 0; - if (x > width) x = width; - - this.color.a = (x / width).toFixed(2); - - this.updateSliderPosition(this.alpha_picker, x); - this.updatePreviewColor(); - - this.notify('alpha', this.color.a); - notify(this.topic, this.color); - }; - - ColorPicker.prototype.setHue = function setHue(value) { - this.color.setHue(value); - - this.updatePickerBackground(); - this.updateAlphaGradient(); - this.updatePreviewColor(); - - this.notify('red', this.color.r); - this.notify('green', this.color.g); - this.notify('blue', this.color.b); - this.notify('hexa', this.color.getHexa()); - this.notify('hue', this.color.hue); - - notify(this.topic, this.color); - }; - - // Updates when one of Saturation/Value/Lightness changes - ColorPicker.prototype.updateSLV = function updateSLV() { - this.updatePickerPosition(); - this.updateAlphaGradient(); - this.updatePreviewColor(); - - this.notify('red', this.color.r); - this.notify('green', this.color.g); - this.notify('blue', this.color.b); - this.notify('hexa', this.color.getHexa()); - - notify(this.topic, this.color); - }; - - /*************************************************************************/ - // Update positions of various UI elements - /*************************************************************************/ - - ColorPicker.prototype.updatePickerPosition = function updatePickerPosition() { - var size = this.picking_area.clientWidth; - var value = 0; - var offset = 5; - - if (this.picker_mode === 'HSV') - value = this.color.value; - if (this.picker_mode === 'HSL') - value = this.color.lightness; - - var x = (this.color.saturation * size / 100) | 0; - var y = size - (value * size / 100) | 0; - - this.color_picker.style.left = x - offset + 'px'; - this.color_picker.style.top = y - offset + 'px'; - }; - - ColorPicker.prototype.updateSliderPosition = function updateSliderPosition(elem, pos) { - elem.style.left = Math.max(pos - 3, -2) + 'px'; - }; - - ColorPicker.prototype.updateHuePicker = function updateHuePicker() { - var size = this.hue_area.clientWidth; - var offset = 1; - var pos = (this.color.hue * size / 360 ) | 0; - this.hue_picker.style.left = pos - offset + 'px'; - }; - - ColorPicker.prototype.updateAlphaPicker = function updateAlphaPicker() { - var size = this.alpha_area.clientWidth; - var offset = 1; - var pos = (this.color.a * size) | 0; - this.alpha_picker.style.left = pos - offset + 'px'; - }; - - /*************************************************************************/ - // Update background colors - /*************************************************************************/ - - ColorPicker.prototype.updatePickerBackground = function updatePickerBackground() { - var nc = new Color(this.color); - nc.setHSV(nc.hue, 100, 100); - this.picking_area.style.backgroundColor = nc.getHexa(); - }; - - ColorPicker.prototype.updateAlphaGradient = function updateAlphaGradient() { - this.alpha_mask.style.backgroundColor = this.color.getHexa(); - }; - - ColorPicker.prototype.updatePreviewColor = function updatePreviewColor() { - this.preview_color.style.backgroundColor = this.color.getColor(); - }; - - /*************************************************************************/ - // Update input elements - /*************************************************************************/ - - ColorPicker.prototype.inputChangeHue = function inputChangeHue(e) { - var value = parseInt(e.target.value); - this.setHue(value); - this.updateHuePicker(); - }; - - ColorPicker.prototype.inputChangeSaturation = function inputChangeSaturation(e) { - var value = parseInt(e.target.value); - this.color.setSaturation(value); - e.target.value = this.color.saturation; - this.updateSLV(); - }; - - ColorPicker.prototype.inputChangeValue = function inputChangeValue(e) { - var value = parseInt(e.target.value); - this.color.setValue(value); - e.target.value = this.color.value; - this.updateSLV(); - }; - - ColorPicker.prototype.inputChangeLightness = function inputChangeLightness(e) { - var value = parseInt(e.target.value); - this.color.setLightness(value); - e.target.value = this.color.lightness; - this.updateSLV(); - }; - - ColorPicker.prototype.inputChangeRed = function inputChangeRed(e) { - var value = parseInt(e.target.value); - this.color.setByName('r', value); - e.target.value = this.color.r; - this.setColor(this.color); - }; - - ColorPicker.prototype.inputChangeGreen = function inputChangeGreen(e) { - var value = parseInt(e.target.value); - this.color.setByName('g', value); - e.target.value = this.color.g; - this.setColor(this.color); - }; - - ColorPicker.prototype.inputChangeBlue = function inputChangeBlue(e) { - var value = parseInt(e.target.value); - this.color.setByName('b', value); - e.target.value = this.color.b; - this.setColor(this.color); - }; - - ColorPicker.prototype.inputChangeAlpha = function inputChangeAlpha(e) { - var value = parseFloat(e.target.value); - - if (typeof value === 'number' && isNaN(value) === false && - value >= 0 && value <= 1) - this.color.a = value.toFixed(2); - - e.target.value = this.color.a; - this.updateAlphaPicker(); - }; - - ColorPicker.prototype.inputChangeHexa = function inputChangeHexa(e) { - var value = e.target.value; - this.color.setHexa(value); - this.setColor(this.color); - }; - - /*************************************************************************/ - // Internal Pub/Sub - /*************************************************************************/ - - ColorPicker.prototype.subscribe = function subscribe(topic, callback) { - this.subscribers[topic] = callback; - }; - - ColorPicker.prototype.notify = function notify(topic, value) { - if (this.subscribers[topic]) - this.subscribers[topic](value); - }; - - /*************************************************************************/ - // Set Picker Properties - /*************************************************************************/ - - ColorPicker.prototype.setColor = function setColor(color) { - if(color instanceof Color !== true) { - console.log('Typeof parameter not Color'); - return; - } - - if (color.format !== this.picker_mode) { - color.setFormat(this.picker_mode); - color.updateHSX(); - } - - this.color.copy(color); - this.updateHuePicker(); - this.updatePickerPosition(); - this.updatePickerBackground(); - this.updateAlphaPicker(); - this.updateAlphaGradient(); - this.updatePreviewColor(); - - this.notify('red', this.color.r); - this.notify('green', this.color.g); - this.notify('blue', this.color.b); - - this.notify('hue', this.color.hue); - this.notify('saturation', this.color.saturation); - this.notify('value', this.color.value); - this.notify('lightness', this.color.lightness); - - this.notify('alpha', this.color.a); - this.notify('hexa', this.color.getHexa()); - notify(this.topic, this.color); - }; - - ColorPicker.prototype.setPickerMode = function setPickerMode(mode) { - if (mode !== 'HSV' && mode !== 'HSL') - return; - - this.picker_mode = mode; - this.node.setAttribute('data-mode', this.picker_mode); - this.setColor(this.color); - }; - - /*************************************************************************/ - // UNUSED - /*************************************************************************/ - - var setPickerMode = function setPickerMode(topic, mode) { - if (pickers[topic]) - pickers[topic].setPickerMode(mode); - }; - - var setColor = function setColor(topic, color) { - if (pickers[topic]) - pickers[topic].setColor(color); - }; - - var getColor = function getColor(topic) { - if (pickers[topic]) - return new Color(pickers[topic].color); - }; - - var subscribe = function subscribe(topic, callback) { - if (subscribers[topic] === undefined) - subscribers[topic] = []; - - subscribers[topic].push(callback); - }; - - var unsubscribe = function unsubscribe(callback) { - subscribers.indexOf(callback); - subscribers.splice(index, 1); - }; - - var notify = function notify(topic, value) { - if (subscribers[topic] === undefined || subscribers[topic].length === 0) - return; - - var color = new Color(value); - for (var i in subscribers[topic]) - subscribers[topic][i](color); - }; - - var init = function init() { - var elem = document.querySelectorAll('.ui-color-picker'); - var size = elem.length; - for (var i = 0; i < size; i++) - new ColorPicker(elem[i]); - }; - - return { - init : init, - Color : Color, - RGBColor : RGBColor, - RGBAColor : RGBAColor, - HSVColor : HSVColor, - HSVAColor : HSVAColor, - HSLColor : HSLColor, - HSLAColor : HSLAColor, - setColor : setColor, - getColor : getColor, - subscribe : subscribe, - unsubscribe : unsubscribe, - setPickerMode : setPickerMode - }; - -})(); - - - -/** - * UI-SlidersManager - */ - -var InputSliderManager = (function InputSliderManager() { - - var subscribers = {}; - var sliders = []; - - var InputComponent = function InputComponent(obj) { - var input = document.createElement('input'); - input.setAttribute('type', 'text'); - input.style.width = 50 + obj.precision * 10 + 'px'; - - input.addEventListener('click', function(e) { - this.select(); - }); - - input.addEventListener('change', function(e) { - var value = parseFloat(e.target.value); - - if (isNaN(value) === true) - setValue(obj.topic, obj.value); - else - setValue(obj.topic, value); - }); - - return input; - }; - - var SliderComponent = function SliderComponent(obj, sign) { - var slider = document.createElement('div'); - var startX = null; - var start_value = 0; - - slider.addEventListener("click", function(e) { - document.removeEventListener("mousemove", sliderMotion); - setValue(obj.topic, obj.value + obj.step * sign); - }); - - slider.addEventListener("mousedown", function(e) { - startX = e.clientX; - start_value = obj.value; - document.body.style.cursor = "e-resize"; - - document.addEventListener("mouseup", slideEnd); - document.addEventListener("mousemove", sliderMotion); - }); - - var slideEnd = function slideEnd(e) { - document.removeEventListener("mousemove", sliderMotion); - document.body.style.cursor = "auto"; - slider.style.cursor = "pointer"; - }; - - var sliderMotion = function sliderMotion(e) { - slider.style.cursor = "e-resize"; - var delta = (e.clientX - startX) / obj.sensivity | 0; - var value = delta * obj.step + start_value; - setValue(obj.topic, value); - }; - - return slider; - }; - - var InputSlider = function(node) { - var min = parseFloat(node.getAttribute('data-min')); - var max = parseFloat(node.getAttribute('data-max')); - var step = parseFloat(node.getAttribute('data-step')); - var value = parseFloat(node.getAttribute('data-value')); - var topic = node.getAttribute('data-topic'); - var unit = node.getAttribute('data-unit'); - var name = node.getAttribute('data-info'); - var sensivity = node.getAttribute('data-sensivity') | 0; - var precision = node.getAttribute('data-precision') | 0; - - this.min = isNaN(min) ? 0 : min; - this.max = isNaN(max) ? 100 : max; - this.precision = precision >= 0 ? precision : 0; - this.step = step < 0 || isNaN(step) ? 1 : step.toFixed(precision); - this.topic = topic; - this.node = node; - this.unit = unit === null ? '' : unit; - this.sensivity = sensivity > 0 ? sensivity : 5; - value = isNaN(value) ? this.min : value; - - var input = new InputComponent(this); - var slider_left = new SliderComponent(this, -1); - var slider_right = new SliderComponent(this, 1); - - slider_left.className = 'ui-input-slider-left'; - slider_right.className = 'ui-input-slider-right'; - - if (name) { - var info = document.createElement('span'); - info.className = 'ui-input-slider-info'; - info.textContent = name; - node.appendChild(info); - } - - node.appendChild(slider_left); - node.appendChild(input); - node.appendChild(slider_right); - - this.input = input; - sliders[topic] = this; - setValue(topic, value); - }; - - InputSlider.prototype.setInputValue = function setInputValue() { - this.input.value = this.value.toFixed(this.precision) + this.unit; - }; - - var setValue = function setValue(topic, value, send_notify) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - value = parseFloat(value.toFixed(slider.precision)); - - if (value > slider.max) value = slider.max; - if (value < slider.min) value = slider.min; - - slider.value = value; - slider.node.setAttribute('data-value', value); - - slider.setInputValue(); - - if (send_notify === false) - return; - - notify.call(slider); - }; - - var setMax = function setMax(topic, value) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - slider.max = value; - setValue(topic, slider.value); - }; - - var setMin = function setMin(topic, value) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - slider.min = value; - setValue(topic, slider.value); - }; - - var setUnit = function setUnit(topic, unit) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - slider.unit = unit; - setValue(topic, slider.value); - }; - - var setStep = function setStep(topic, value) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - slider.step = parseFloat(value); - setValue(topic, slider.value); - }; - - var setPrecision = function setPrecision(topic, value) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - value = value | 0; - slider.precision = value; - - var step = parseFloat(slider.step.toFixed(value)); - if (step === 0) - slider.step = 1 / Math.pow(10, value); - - setValue(topic, slider.value); - }; - - var setSensivity = function setSensivity(topic, value) { - var slider = sliders[topic]; - if (slider === undefined) - return; - - value = value | 0; - - slider.sensivity = value > 0 ? value : 5; - }; - - var getNode = function getNode(topic) { - return sliders[topic].node; - }; - - var getPrecision = function getPrecision(topic) { - return sliders[topic].precision; - }; - - var getStep = function getStep(topic) { - return sliders[topic].step; - }; - - var subscribe = function subscribe(topic, callback) { - if (subscribers[topic] === undefined) - subscribers[topic] = []; - subscribers[topic].push(callback); - }; - - var unsubscribe = function unsubscribe(topic, callback) { - subscribers[topic].indexOf(callback); - subscribers[topic].splice(index, 1); - }; - - var notify = function notify() { - if (subscribers[this.topic] === undefined) - return; - for (var i = 0; i < subscribers[this.topic].length; i++) - subscribers[this.topic][i](this.value); - }; - - var createSlider = function createSlider(topic, label) { - var slider = document.createElement('div'); - slider.className = 'ui-input-slider'; - slider.setAttribute('data-topic', topic); - - if (label !== undefined) - slider.setAttribute('data-info', label); - - new InputSlider(slider); - return slider; - }; - - var init = function init() { - var elem = document.querySelectorAll('.ui-input-slider'); - var size = elem.length; - for (var i = 0; i < size; i++) - new InputSlider(elem[i]); - }; - - return { - init : init, - setMax : setMax, - setMin : setMin, - setUnit : setUnit, - setStep : setStep, - getNode : getNode, - getStep : getStep, - setValue : setValue, - subscribe : subscribe, - unsubscribe : unsubscribe, - setPrecision : setPrecision, - setSensivity : setSensivity, - getPrecision : getPrecision, - createSlider : createSlider, - }; - -})(); - - -'use strict'; - -window.addEventListener("load", function() { - ColorPickerTool.init(); -}); - -var ColorPickerTool = (function ColorPickerTool() { - - /*========== Get DOM Element By ID ==========*/ - - function getElemById(id) { - return document.getElementById(id); - } - - function allowDropEvent(e) { - e.preventDefault(); - } - - /*========== Make an element resizable relative to it's parent ==========*/ - - var UIComponent = (function UIComponent() { - - function makeResizable(elem, axis) { - var valueX = 0; - var valueY = 0; - var action = 0; - - var resizeStart = function resizeStart(e) { - e.stopPropagation(); - e.preventDefault(); - if (e.button !== 0) - return; - - valueX = e.clientX - elem.clientWidth; - valueY = e.clientY - elem.clientHeight; - - document.body.setAttribute('data-resize', axis); - document.addEventListener('mousemove', mouseMove); - document.addEventListener('mouseup', resizeEnd); - }; - - var mouseMove = function mouseMove(e) { - if (action >= 0) - elem.style.width = e.clientX - valueX + 'px'; - if (action <= 0) - elem.style.height = e.clientY - valueY + 'px'; - }; - - var resizeEnd = function resizeEnd(e) { - if (e.button !== 0) - return; - - document.body.removeAttribute('data-resize', axis); - document.removeEventListener('mousemove', mouseMove); - document.removeEventListener('mouseup', resizeEnd); - }; - - var handle = document.createElement('div'); - handle.className = 'resize-handle'; - - if (axis === 'width') action = 1; - else if (axis === 'height') action = -1; - else axis = 'both'; - - handle.className = 'resize-handle'; - handle.setAttribute('data-resize', axis); - handle.addEventListener('mousedown', resizeStart); - elem.appendChild(handle); - }; - - /*========== Make an element draggable relative to it's parent ==========*/ - - var makeDraggable = function makeDraggable(elem, endFunction) { - - var offsetTop; - var offsetLeft; - - elem.setAttribute('data-draggable', 'true'); - - var dragStart = function dragStart(e) { - e.preventDefault(); - e.stopPropagation(); - - if (e.target.getAttribute('data-draggable') !== 'true' || - e.target !== elem || e.button !== 0) - return; - - offsetLeft = e.clientX - elem.offsetLeft; - offsetTop = e.clientY - elem.offsetTop; - - document.addEventListener('mousemove', mouseDrag); - document.addEventListener('mouseup', dragEnd); - }; - - var dragEnd = function dragEnd(e) { - if (e.button !== 0) - return; - - document.removeEventListener('mousemove', mouseDrag); - document.removeEventListener('mouseup', dragEnd); - }; - - var mouseDrag = function mouseDrag(e) { - elem.style.left = e.clientX - offsetLeft + 'px'; - elem.style.top = e.clientY - offsetTop + 'px'; - }; - - elem.addEventListener('mousedown', dragStart, false); - }; - - return { - makeResizable : makeResizable, - makeDraggable : makeDraggable - }; - - })(); - - /*========== Color Class ==========*/ - - var Color = UIColorPicker.Color; - var HSLColor = UIColorPicker.HSLColor; - - /** - * ColorPalette - */ - var ColorPalette = (function ColorPalette() { - - var samples = []; - var color_palette; - var complementary; - - var hideNode = function(node) { - node.setAttribute('data-hidden', 'true'); - }; - - var ColorSample = function ColorSample(id) { - var node = document.createElement('div'); - node.className = 'sample'; - - this.uid = samples.length; - this.node = node; - this.color = new Color(); - - node.setAttribute('sample-id', this.uid); - node.setAttribute('draggable', 'true'); - node.addEventListener('dragstart', this.dragStart.bind(this)); - node.addEventListener('click', this.pickColor.bind(this)); - - samples.push(this); - }; - - ColorSample.prototype.updateBgColor = function updateBgColor() { - this.node.style.backgroundColor = this.color.getColor(); - }; - - ColorSample.prototype.updateColor = function updateColor(color) { - this.color.copy(color); - this.updateBgColor(); - }; - - ColorSample.prototype.updateHue = function updateHue(color, degree, steps) { - this.color.copy(color); - var hue = (steps * degree + this.color.hue) % 360; - if (hue < 0) hue += 360; - this.color.setHue(hue); - this.updateBgColor(); - }; - - ColorSample.prototype.updateSaturation = function updateSaturation(color, value, steps) { - var saturation = color.saturation + value * steps; - if (saturation <= 0) { - this.node.setAttribute('data-hidden', 'true'); - return; - } - - this.node.removeAttribute('data-hidden'); - this.color.copy(color); - this.color.setSaturation(saturation); - this.updateBgColor(); - }; - - ColorSample.prototype.updateLightness = function updateLightness(color, value, steps) { - var lightness = color.lightness + value * steps; - if (lightness <= 0) { - this.node.setAttribute('data-hidden', 'true'); - return; - } - this.node.removeAttribute('data-hidden'); - this.color.copy(color); - this.color.setLightness(lightness); - this.updateBgColor(); - }; - - ColorSample.prototype.updateBrightness = function updateBrightness(color, value, steps) { - var brightness = color.value + value * steps; - if (brightness <= 0) { - this.node.setAttribute('data-hidden', 'true'); - return; - } - this.node.removeAttribute('data-hidden'); - this.color.copy(color); - this.color.setValue(brightness); - this.updateBgColor(); - }; - - ColorSample.prototype.updateAlpha = function updateAlpha(color, value, steps) { - var alpha = parseFloat(color.a) + value * steps; - if (alpha <= 0) { - this.node.setAttribute('data-hidden', 'true'); - return; - } - this.node.removeAttribute('data-hidden'); - this.color.copy(color); - this.color.a = parseFloat(alpha.toFixed(2)); - this.updateBgColor(); - }; - - ColorSample.prototype.pickColor = function pickColor() { - UIColorPicker.setColor('picker', this.color); - }; - - ColorSample.prototype.dragStart = function dragStart(e) { - e.dataTransfer.setData('sampleID', this.uid); - e.dataTransfer.setData('location', 'palette-samples'); - }; - - var Palette = function Palette(text, size) { - this.samples = []; - this.locked = false; - - var palette = document.createElement('div'); - var title = document.createElement('div'); - var controls = document.createElement('div'); - var container = document.createElement('div'); - var lock = document.createElement('div'); - - container.className = 'container'; - title.className = 'title'; - palette.className = 'palette'; - controls.className = 'controls'; - lock.className = 'lock'; - title.textContent = text; - - controls.appendChild(lock); - container.appendChild(title); - container.appendChild(controls); - container.appendChild(palette); - - lock.addEventListener('click', function () { - this.locked = !this.locked; - lock.setAttribute('locked-state', this.locked); - }.bind(this)); - - for(var i = 0; i < size; i++) { - var sample = new ColorSample(); - this.samples.push(sample); - palette.appendChild(sample.node); - } - - this.container = container; - this.title = title; - }; - - var createHuePalette = function createHuePalette() { - var palette = new Palette('Hue', 12); - - UIColorPicker.subscribe('picker', function(color) { - if (palette.locked === true) - return; - - for(var i = 0; i < 12; i++) { - palette.samples[i].updateHue(color, 30, i); - } - }); - - color_palette.appendChild(palette.container); - }; - - var createSaturationPalette = function createSaturationPalette() { - var palette = new Palette('Saturation', 11); - - UIColorPicker.subscribe('picker', function(color) { - if (palette.locked === true) - return; - - for(var i = 0; i < 11; i++) { - palette.samples[i].updateSaturation(color, -10, i); - } - }); - - color_palette.appendChild(palette.container); - }; - - /* Brightness or Lightness - depends on the picker mode */ - var createVLPalette = function createSaturationPalette() { - var palette = new Palette('Lightness', 11); - - UIColorPicker.subscribe('picker', function(color) { - if (palette.locked === true) - return; - - if(color.format === 'HSL') { - palette.title.textContent = 'Lightness'; - for(var i = 0; i < 11; i++) - palette.samples[i].updateLightness(color, -10, i); - } - else { - palette.title.textContent = 'Value'; - for(var i = 0; i < 11; i++) - palette.samples[i].updateBrightness(color, -10, i); - } - }); - - color_palette.appendChild(palette.container); - }; - - var isBlankPalette = function isBlankPalette(container, value) { - if (value === 0) { - container.setAttribute('data-collapsed', 'true'); - return true; - } - - container.removeAttribute('data-collapsed'); - return false; - }; - - var createAlphaPalette = function createAlphaPalette() { - var palette = new Palette('Alpha', 10); - - UIColorPicker.subscribe('picker', function(color) { - if (palette.locked === true) - return; - - for(var i = 0; i < 10; i++) { - palette.samples[i].updateAlpha(color, -0.1, i); - } - }); - - color_palette.appendChild(palette.container); - }; - - var getSampleColor = function getSampleColor(id) { - if (samples[id] !== undefined && samples[id]!== null) - return new Color(samples[id].color); - }; - - var init = function init() { - color_palette = getElemById('color-palette'); - - createHuePalette(); - createSaturationPalette(); - createVLPalette(); - createAlphaPalette(); - - }; - - return { - init : init, - getSampleColor : getSampleColor - }; - - })(); - - /** - * ColorInfo - */ - var ColorInfo = (function ColorInfo() { - - var info_box; - var select; - var RGBA; - var HEXA; - var HSLA; - - var updateInfo = function updateInfo(color) { - if (color.a | 0 === 1) { - RGBA.info.textContent = 'RGB'; - HSLA.info.textContent = 'HSL'; - } - else { - RGBA.info.textContent = 'RGBA'; - HSLA.info.textContent = 'HSLA'; - } - - RGBA.value.value = color.getRGBA(); - HSLA.value.value = color.getHSLA(); - HEXA.value.value = color.getHexa(); - }; - - var InfoProperty = function InfoProperty(info) { - - var node = document.createElement('div'); - var title = document.createElement('div'); - var value = document.createElement('input'); - var copy = document.createElement('div'); - - node.className = 'property'; - title.className = 'type'; - value.className = 'value'; - copy.className = 'copy'; - - title.textContent = info; - value.setAttribute('type', 'text'); - - copy.addEventListener('click', function() { - value.select(); - }); - - node.appendChild(title); - node.appendChild(value); - node.appendChild(copy); - - this.node = node; - this.value = value; - this.info = title; - - info_box.appendChild(node); - }; - - var init = function init() { - - info_box = getElemById('color-info'); - - RGBA = new InfoProperty('RGBA'); - HSLA = new InfoProperty('HSLA'); - HEXA = new InfoProperty('HEXA'); - - UIColorPicker.subscribe('picker', updateInfo); - - }; - - return { - init: init - }; - - })(); - - /** - * ColorPicker Samples - */ - var ColorPickerSamples = (function ColorPickerSamples() { - - var samples = []; - var nr_samples = 0; - var active = null; - var container = null; - var samples_per_line = 10; - var trash_can = null; - var base_color = new HSLColor(0, 50, 100); - var add_btn; - var add_btn_pos; - - var ColorSample = function ColorSample() { - var node = document.createElement('div'); - node.className = 'sample'; - - this.uid = samples.length; - this.index = nr_samples++; - this.node = node; - this.color = new Color(base_color); - - node.setAttribute('sample-id', this.uid); - node.setAttribute('draggable', 'true'); - - node.addEventListener('dragstart', this.dragStart.bind(this)); - node.addEventListener('dragover' , allowDropEvent); - node.addEventListener('drop' , this.dragDrop.bind(this)); - - this.updatePosition(this.index); - this.updateBgColor(); - samples.push(this); - }; - - ColorSample.prototype.updateBgColor = function updateBgColor() { - this.node.style.backgroundColor = this.color.getColor(); - }; - - ColorSample.prototype.updatePosition = function updatePosition(index) { - this.index = index; - this.posY = 5 + ((index / samples_per_line) | 0) * 52; - this.posX = 5 + ((index % samples_per_line) | 0) * 52; - this.node.style.top = this.posY + 'px'; - this.node.style.left = this.posX + 'px'; - }; - - ColorSample.prototype.updateColor = function updateColor(color) { - this.color.copy(color); - this.updateBgColor(); - }; - - ColorSample.prototype.activate = function activate() { - UIColorPicker.setColor('picker', this.color); - this.node.setAttribute('data-active', 'true'); - }; - - ColorSample.prototype.deactivate = function deactivate() { - this.node.removeAttribute('data-active'); - }; - - ColorSample.prototype.dragStart = function dragStart(e) { - e.dataTransfer.setData('sampleID', this.uid); - e.dataTransfer.setData('location', 'picker-samples'); - }; - - ColorSample.prototype.dragDrop = function dragDrop(e) { - e.stopPropagation(); - this.color = Tool.getSampleColorFrom(e); - this.updateBgColor(); - }; - - ColorSample.prototype.deleteSample = function deleteSample() { - container.removeChild(this.node); - samples[this.uid] = null; - nr_samples--; - }; - - var updateUI = function updateUI() { - updateContainerProp(); - - var index = 0; - var nr = samples.length; - for (var i=0; i < nr; i++) - if (samples[i] !== null) { - samples[i].updatePosition(index); - index++; - } - - AddSampleButton.updatePosition(index); - }; - - var deleteSample = function deleteSample(e) { - trash_can.parentElement.setAttribute('drag-state', 'none'); - - var location = e.dataTransfer.getData('location'); - if (location !== 'picker-samples') - return; - - var sampleID = e.dataTransfer.getData('sampleID'); - samples[sampleID].deleteSample(); - console.log(samples); - - updateUI(); - }; - - var createDropSample = function createDropSample() { - var sample = document.createElement('div'); - sample.id = 'drop-effect-sample'; - sample.className = 'sample'; - container.appendChild(sample); - }; - - var setActivateSample = function setActivateSample(e) { - if (e.target.className !== 'sample') - return; - - unsetActiveSample(active); - Tool.unsetVoidSample(); - CanvasSamples.unsetActiveSample(); - active = samples[e.target.getAttribute('sample-id')]; - active.activate(); - }; - - var unsetActiveSample = function unsetActiveSample() { - if (active) - active.deactivate(); - active = null; - }; - - var getSampleColor = function getSampleColor(id) { - if (samples[id] !== undefined && samples[id]!== null) - return new Color(samples[id].color); - }; - - var updateContainerProp = function updateContainerProp() { - samples_per_line = ((container.clientWidth - 5) / 52) | 0; - var height = 52 * (1 + (nr_samples / samples_per_line) | 0); - container.style.height = height + 10 + 'px'; - }; - - var AddSampleButton = (function AddSampleButton() { - var node; - var _index = 0; - var _posX; - var _posY; - - var updatePosition = function updatePosition(index) { - _index = index; - _posY = 5 + ((index / samples_per_line) | 0) * 52; - _posX = 5 + ((index % samples_per_line) | 0) * 52; - - node.style.top = _posY + 'px'; - node.style.left = _posX + 'px'; - }; - - var addButtonClick = function addButtonClick() { - var sample = new ColorSample(); - container.appendChild(sample.node); - updatePosition(_index + 1); - updateUI(); - }; - - var init = function init() { - node = document.createElement('div'); - var icon = document.createElement('div'); - - node.className = 'sample'; - icon.id = 'add-icon'; - node.appendChild(icon); - node.addEventListener('click', addButtonClick); - - updatePosition(0); - container.appendChild(node); - }; - - return { - init : init, - updatePosition : updatePosition - }; - })(); - - var init = function init() { - container = getElemById('picker-samples'); - trash_can = getElemById('trash-can'); - - AddSampleButton.init(); - - for (var i=0; i<16; i++) { - var sample = new ColorSample(); - container.appendChild(sample.node); - } - - AddSampleButton.updatePosition(samples.length); - updateUI(); - - active = samples[0]; - active.activate(); - - container.addEventListener('click', setActivateSample); - - trash_can.addEventListener('dragover', allowDropEvent); - trash_can.addEventListener('dragenter', function() { - this.parentElement.setAttribute('drag-state', 'enter'); - }); - trash_can.addEventListener('dragleave', function(e) { - this.parentElement.setAttribute('drag-state', 'none'); - }); - trash_can.addEventListener('drop', deleteSample); - - UIColorPicker.subscribe('picker', function(color) { - if (active) - active.updateColor(color); - }); - - }; - - return { - init : init, - getSampleColor : getSampleColor, - unsetActiveSample : unsetActiveSample - }; - - })(); - - /** - * Canvas Samples - */ - var CanvasSamples = (function CanvasSamples() { - - var active = null; - var canvas = null; - var samples = []; - var zindex = null; - var tutorial = true; - - var CanvasSample = function CanvasSample(color, posX, posY) { - - var node = document.createElement('div'); - var pick = document.createElement('div'); - var delete_btn = document.createElement('div'); - node.className = 'sample'; - pick.className = 'pick'; - delete_btn.className = 'delete'; - - this.uid = samples.length; - this.node = node; - this.color = color; - this.updateBgColor(); - this.zIndex = 1; - - node.style.top = posY - 50 + 'px'; - node.style.left = posX - 50 + 'px'; - node.setAttribute('sample-id', this.uid); - - node.appendChild(pick); - node.appendChild(delete_btn); - - var activate = function activate() { - setActiveSample(this); - }.bind(this); - - node.addEventListener('dblclick', activate); - pick.addEventListener('click', activate); - delete_btn.addEventListener('click', this.deleteSample.bind(this)); - - UIComponent.makeDraggable(node); - UIComponent.makeResizable(node); - - samples.push(this); - canvas.appendChild(node); - return this; - }; - - CanvasSample.prototype.updateBgColor = function updateBgColor() { - this.node.style.backgroundColor = this.color.getColor(); - }; - - CanvasSample.prototype.updateColor = function updateColor(color) { - this.color.copy(color); - this.updateBgColor(); - }; - - CanvasSample.prototype.updateZIndex = function updateZIndex(value) { - this.zIndex = value; - this.node.style.zIndex = value; - }; - - CanvasSample.prototype.activate = function activate() { - this.node.setAttribute('data-active', 'true'); - zindex.setAttribute('data-active', 'true'); - - UIColorPicker.setColor('picker', this.color); - InputSliderManager.setValue('z-index', this.zIndex); - }; - - CanvasSample.prototype.deactivate = function deactivate() { - this.node.removeAttribute('data-active'); - zindex.removeAttribute('data-active'); - }; - - CanvasSample.prototype.deleteSample = function deleteSample() { - if (active === this) - unsetActiveSample(); - canvas.removeChild(this.node); - samples[this.uid] = null; - }; - - CanvasSample.prototype.updatePosition = function updatePosition(posX, posY) { - this.node.style.top = posY - this.startY + 'px'; - this.node.style.left = posX - this.startX + 'px'; - }; - - var canvasDropEvent = function canvasDropEvent(e) { - var color = Tool.getSampleColorFrom(e); - - if (color) { - var offsetX = e.pageX - canvas.offsetLeft; - var offsetY = e.pageY - canvas.offsetTop; - var sample = new CanvasSample(color, offsetX, offsetY); - if (tutorial) { - tutorial = false; - canvas.removeAttribute('data-tutorial'); - var info = new CanvasSample(new Color(), 100, 100); - info.node.setAttribute('data-tutorial', 'dblclick'); - } - } - - }; - - var setActiveSample = function setActiveSample(sample) { - ColorPickerSamples.unsetActiveSample(); - Tool.unsetVoidSample(); - unsetActiveSample(); - active = sample; - active.activate(); - }; - - var unsetActiveSample = function unsetActiveSample() { - if (active) - active.deactivate(); - active = null; - }; - - var createToggleBgButton = function createToggleBgButton() { - var button = document.createElement('div'); - var state = false; - button.className = 'toggle-bg'; - canvas.appendChild(button); - - button.addEventListener('click', function() { - console.log(state); - state = !state; - canvas.setAttribute('data-bg', state); - }); - }; - - var init = function init() { - canvas = getElemById('canvas'); - zindex = getElemById('zindex'); - - canvas.addEventListener('dragover', allowDropEvent); - canvas.addEventListener('drop', canvasDropEvent); - - createToggleBgButton(); - - UIColorPicker.subscribe('picker', function(color) { - if (active) active.updateColor(color); - }); - - InputSliderManager.subscribe('z-index', function (value) { - if (active) active.updateZIndex(value); - }); - - UIComponent.makeResizable(canvas, 'height'); - }; - - return { - init : init, - unsetActiveSample : unsetActiveSample - }; - - })(); - - var StateButton = function StateButton(node, state) { - this.state = false; - this.callback = null; - - node.addEventListener('click', function() { - this.state = !this.state; - if (typeof this.callback === "function") - this.callback(this.state); - }.bind(this)); - }; - - StateButton.prototype.set = function set() { - this.state = true; - if (typeof this.callback === "function") - this.callback(this.state); - }; - - StateButton.prototype.unset = function unset() { - this.state = false; - if (typeof this.callback === "function") - this.callback(this.state); - }; - - StateButton.prototype.subscribe = function subscribe(func) { - this.callback = func; - }; - - - /** - * Tool - */ - var Tool = (function Tool() { - - var samples = []; - var controls = null; - var void_sw; - - var createPickerModeSwitch = function createPickerModeSwitch() { - var parent = getElemById('controls'); - var icon = document.createElement('div'); - var button = document.createElement('div'); - var hsv = document.createElement('div'); - var hsl = document.createElement('div'); - var active = null; - - icon.className = 'icon picker-icon'; - button.className = 'switch'; - button.appendChild(hsv); - button.appendChild(hsl); - - hsv.textContent = 'HSV'; - hsl.textContent = 'HSL'; - - active = hsl; - active.setAttribute('data-active', 'true'); - - function switchPickingModeTo(elem) { - active.removeAttribute('data-active'); - active = elem; - active.setAttribute('data-active', 'true'); - UIColorPicker.setPickerMode('picker', active.textContent); - }; - - var picker_sw = new StateButton(icon); - picker_sw.subscribe(function() { - if (active === hsv) - switchPickingModeTo(hsl); - else - switchPickingModeTo(hsv); - }); - - hsv.addEventListener('click', function() { - switchPickingModeTo(hsv); - }); - hsl.addEventListener('click', function() { - switchPickingModeTo(hsl); - }); - - parent.appendChild(icon); - parent.appendChild(button); - }; - - var setPickerDragAndDrop = function setPickerDragAndDrop() { - var preview = document.querySelector('#picker .preview-color'); - var picking_area = document.querySelector('#picker .picking-area'); - - preview.setAttribute('draggable', 'true'); - preview.addEventListener('drop', drop); - preview.addEventListener('dragstart', dragStart); - preview.addEventListener('dragover', allowDropEvent); - - picking_area.addEventListener('drop', drop); - picking_area.addEventListener('dragover', allowDropEvent); - - function drop(e) { - var color = getSampleColorFrom(e); - UIColorPicker.setColor('picker', color); - }; - - function dragStart(e) { - e.dataTransfer.setData('sampleID', 'picker'); - e.dataTransfer.setData('location', 'picker'); - }; - }; - - var getSampleColorFrom = function getSampleColorFrom(e) { - var sampleID = e.dataTransfer.getData('sampleID'); - var location = e.dataTransfer.getData('location'); - - if (location === 'picker') - return UIColorPicker.getColor(sampleID); - if (location === 'picker-samples') - return ColorPickerSamples.getSampleColor(sampleID); - if (location === 'palette-samples') - return ColorPalette.getSampleColor(sampleID); - }; - - var setVoidSwitch = function setVoidSwitch() { - var void_sample = getElemById('void-sample'); - void_sw = new StateButton(void_sample); - void_sw.subscribe( function (state) { - void_sample.setAttribute('data-active', state); - if (state === true) { - ColorPickerSamples.unsetActiveSample(); - CanvasSamples.unsetActiveSample(); - } - }); - }; - - var unsetVoidSample = function unsetVoidSample() { - void_sw.unset(); - }; - - var init = function init() { - controls = getElemById('controls'); - - var color = new Color(); - color.setHSL(0, 51, 51); - UIColorPicker.setColor('picker', color); - - setPickerDragAndDrop(); - createPickerModeSwitch(); - setVoidSwitch(); - }; - - return { - init : init, - unsetVoidSample : unsetVoidSample, - getSampleColorFrom : getSampleColorFrom - }; - - })(); - - var init = function init() { - UIColorPicker.init(); - InputSliderManager.init(); - ColorInfo.init(); - ColorPalette.init(); - ColorPickerSamples.init(); - CanvasSamples.init(); - Tool.init(); - }; - - return { - init : init - }; - -})(); -</pre> -</div> - -<p>{{CSSRef}}</p> +{{CSSRef}} -<p><span class="seoSummary">このツールは、ウェブの独自の色を簡単に作成、調整、実験することができます。</span> HEXA 色, RGB (Red/Green/Blue), HSL (Hue/Saturation/Lightness) RGB など、 <a href="/ja/docs/Web/CSS">CSS</a> で対応している様々な<a href="/ja/docs/Web/CSS/color_value">色形式</a>に変換することもできます。アルファチャネルの制御も、 RGB (rgba) 及び HSL (hsla) 形式で対応しています。</p> +このツールは、ウェブの独自の色を簡単に作成、調整、実験することができます。 HEXA 色, RGB (Red/Green/Blue), HSL (Hue/Saturation/Lightness) RGB など、 [CSS](/ja/docs/Web/CSS) で対応している様々な[色形式](/ja/docs/Web/CSS/color_value)に変換することもできます。アルファチャネルの制御も、 RGB (rgba) および HSL (hsla) 形式で対応しています。 -<p>色を定義するパラメーターを調整すると、3つの標準ウェブ CSS 形式すべてが表示されます。さらに、現在選択されている色に基づいて、 HSL および HSV のパレット、およびアルファが生成されます。「スポイト」スタイルのカラーピッカーボックスは、 HSL または HSV 形式の間で切り替えることができます。また、ツールの下部にあるボックスに色をドラッグし、色を重ね合わせることで、色とその重なり具合をテストすることもできます。 相対 Z インデックス値を調整して、前後に移動させることができます。</p> +色を定義するパラメーターを調整すると、3 つの標準ウェブ CSS 形式すべてが表示されます。さらに、現在選択されている色に基づいて、 HSL および HSV のパレット、およびアルファが生成されます。「スポイト」スタイルのカラーピッカーボックスは、 HSL または HSV 形式の間で切り替えることができます。また、ツールの下部にあるボックスに色をドラッグし、色を重ね合わせることで、色とその重なり具合をテストすることもできます。 相対 Z インデックス値を調整して、前後に移動させることができます。 -<p>このツールは <a href="/ja/docs/Web/HTML">HTML</a> に適用する完全な CSS 色を識別するのに役立ちます。</p> +このツールは [HTML](/ja/docs/Web/HTML) に適用する完全な CSS 色を識別するのに役立ちます。 -<div>{{ EmbedLiveSample('ColorPicker_Tool', '100%', '900') }}</div> +{{EmbedGHLiveSample("css-examples/tools/color-picker/", '100%', 900)}} -<p>上記で作成した色は、特に注意書きがない限り、 CSS や HTML のどこの色でも使用することができます。</p> +上記で作成した色は、特に注意書きがない限り、 CSS や HTML のどこの色でも使用することができます。 -<h2 id="See_also" name="See_also">関連情報</h2> +## 関連情報 -<p>色の使用について詳しくは、以下を参照してください。</p> +色の使用について詳しくは、以下を参照してください。 -<ul> - <li><a href="/ja/docs/Web/HTML/Applying_color">CSS を使った HTML の要素への色の適用</a></li> - <li><a href="/ja/docs/Learn/CSS/Styling_text/Fundamentals">Fundamental text and font styling</a></li> - <li><a href="/ja/docs/Learn/CSS/Styling_boxes/Borders">Styling borders using CSS</a></li> - <li><a href="/ja/docs/Learn/CSS/Styling_boxes/Backgrounds">Changing background styles using CSS</a></li> - <li><a href="/ja/docs/Learn/Accessibility/CSS_and_JavaScript#Color_and_color_contrast">色とそのコントラスト</a></li> -</ul> +- [CSS を使った HTML の要素への色の適用](/ja/docs/Web/HTML/Applying_color) +- [基本的なテキストとフォントの装飾](/ja/docs/Learn/CSS/Styling_text/Fundamentals) +- [CSS を使用した境界のスタイル付け](/ja/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders) +- [CSS を使用した背景スタイルの変更](/ja/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders) +- [色とそのコントラスト](/ja/docs/Learn/Accessibility/CSS_and_JavaScript#color_and_color_contrast) diff --git a/files/ja/web/css/opacity/index.md b/files/ja/web/css/opacity/index.md index 48781e619b..5e7760a7ef 100644 --- a/files/ja/web/css/opacity/index.md +++ b/files/ja/web/css/opacity/index.md @@ -4,66 +4,91 @@ slug: Web/CSS/opacity tags: - CSS - CSS プロパティ - - Opacity - - Reference - 不透明度 + - リファレンス + - recipe:css-property +browser-compat: css.properties.opacity translation_of: Web/CSS/opacity --- -<div>{{CSSRef}}</div> +{{CSSRef}} -<p>CSS の <strong><code>opacity</code></strong> プロパティは、要素の不透明度を設定します。不透明度は要素の裏にあるコンテンツが隠れる度合いであり、透明度の逆です。</p> +**`opacity`** は CSS のプロパティで、要素の不透明度を設定します。不透明度は要素の裏にあるコンテンツが隠れる度合いであり、透明度の逆です。 -<div>{{EmbedInteractiveExample("pages/css/opacity.html")}}</div> +{{EmbedInteractiveExample("pages/css/opacity.html")}} -<div class="hidden">このデモのソースファイルは GitHub リポジトリに格納されています。デモプロジェクトに協力したい場合は、 <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a> をクローンしてプルリクエストを送信してください。</div> +## 構文 -<p>この値は子要素に継承されませんが、その効果は当該要素の内容を含む全体に及びます。すなわち、要素とそれに含まれる子要素は、互いに透明度が異なっていても、その要素の背景に対しては同程度の透明度となります。</p> +```css +opacity: 0.9 +opacity: 90% -<p>このプロパティを <code>1</code> 以外の値で用いると、その要素は新しい<a href="/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context">重ね合わせコンテキスト</a>を作ります。</p> +/* グローバル値 */ +opacity: inherit; +opacity: initial; +opacity: revert; +opacity: unset; +``` -<p>もし、<a href="http://stackoverflow.com/questions/13508877/resetting-the-opacity-of-a-child-elements-maple-browser-samsung-tv-app">子要素に透明度を適用したくない場合</a>は、以下のように代わりに {{cssxref("background")}} プロパティを使用してください。</p> +### 値 -<pre class="brush:css notranslate">background: rgba(0, 0, 0, 0.4);</pre> +- `<alpha-value>` -<h2 id="Syntax" name="Syntax">構文</h2> + - : {{cssxref("number")}} を `0.0` 以上 `1.0` 以下で、また {{cssxref("percentage")}} を `0%` 以上 `100%` 以下で、チャネルの不透明度 (つまり、アルファチャネルの値) を表します。範囲外の数値も有効ですが、近い方の限界値に丸められます。 -<h3 id="Values" name="Values">値</h3> + | 値 | 意味 | + | ----------------------------------------------------- | ------------------------------------------------------------- | + | `0` | 要素は完全に透明です (つまり、不可視です)。 | + | `0` と `1` の中間にある何れかの {{cssxref("number")}} | 要素は半透明です (つまり、要素の背後のコンテンツが見えます)。 | + | `1` (既定値) | 要素は完全に不透明です (中身が詰まって見えます)。 | -<dl> - <dt><code><alpha-value></code></dt> - <dd>{{cssxref("number")}} を <code>0.0</code> 以上 <code>1.0</code> 以下で、また {{cssxref("percentage")}} を <code>0%</code> 以上 <code>100%</code> 以下で、チャネルの不透明度 (つまり、アルファチャネルの値) を表します。範囲外の数値も有効ですが、近い方の限界値におさめられます。 - <table class="standard-table"> - <tbody> - <tr> - <th>値</th> - <th>意味</th> - </tr> - <tr> - <td><code>0</code></td> - <td>要素は完全に透明です (つまり、不可視です)</td> - </tr> - <tr> - <td>{{cssxref("number")}} が <code>0</code> より大きく <code>1</code> 未満の何れかの値</td> - <td>要素は半透明です (つまり、要素の背後のコンテンツが見えます)。</td> - </tr> - <tr> - <td><code>1</code> (既定値)</td> - <td>要素は完全に不透明です (中身が詰まって見えます)</td> - </tr> - </tbody> - </table> - </dd> -</dl> +## 解説 -<h3 id="Formal_syntax" name="Formal_syntax">形式文法</h3> +`opacity` の値は子要素に継承されませんが、要素のコンテンツを含む全体に適用されます。すなわち、ある要素とその子の不透明度が互いに異なっていたとしても、その要素の背景に対してはすべて同じ不透明度になります。 + +このプロパティを `1` 以外の値で用いると、その要素は新しい[重ね合わせコンテキスト](/ja/docs/Web/CSS/CSS_Positioning/Understanding_z_index/The_stacking_context)を作ります。 + +背景の不透明度のみを変更したい場合は、{{cssxref("background")}} プロパティでアルファチャネルを使用できる[色の値](/ja/docs/Web/CSS/color_value)を使用してください。 + +```css +background: rgba(0, 0, 0, 0.4); +``` + +## アクセシビリティの考慮 + +文字列の opacity を調整した場合、テキストの色と、テキストが配置されている背景の色とのコントラスト比が、弱視の人がページの内容を読むことができる程度に十分高くなるよう確認することが重要です。 + +色のコントラスト比は、透明度を調整したテキストと背景色の明度の値を比較することで決定されます。現在の[ウェブコンテンツアクセシビリティガイドライン (Web Content Accessibility Guidelines, WCAG)](https://www.w3.org/WAI/intro/wcag) によれば、文字列コンテンツで 4.5:1 以上、見出しのような大きめの文字列で 3:1 以上のコントラスト比が求められています。大きめの文字列とは、太字ならば 18.66px 以上、または 24px 以上と定義されています。 + +- [WebAIM: Color Contrast Checker](https://webaim.org/resources/contrastchecker/) +- [MDN "WCAG を理解する ― ガイドライン 1.4 の解説"](/ja/docs/Web/Accessibility/Understanding_WCAG/Perceivable#guideline_1.4_make_it_easier_for_users_to_see_and_hear_content_including_separating_foreground_from_background) +- [Understanding Success Criterion 1.4.3 | W3C Understanding WCAG 2.0](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html) + +## 公式定義 + +{{cssinfo}} + +## 形式文法 {{csssyntax}} -<h2 id="Examples" name="Examples">例</h2> +## 例 + +<h3 id="Setting_opacity">基本的な例</h3> + +次の例では、`opacity` プロパティで要素とその内容全体の不透明度を変更することで、テキストを非常に読みにくくしています。 + +#### HTML + +```html +<div class="light">何とか見える程度でしょう。</div> +<div class="medium">簡単に見えるでしょう。</div> +<div class="heavy">とても見やすいでしょう。</div> +``` -<h3 id="Basic_example" name="Basic_example">基本的な例</h3> +#### CSS -<pre class="brush: css notranslate">div { background-color: yellow; } +```css +div { background-color: yellow; font-weight: bold; font-size: 130%; } .light { opacity: 0.2; /* Barely see the text over the background */ } @@ -73,80 +98,55 @@ translation_of: Web/CSS/opacity .heavy { opacity: 0.9; /* See the text very clearly over the background */ } -</pre> +``` -<pre class="brush: html notranslate"><div class="light">You can barely see this.</div> -<div class="medium">This is easier to see.</div> -<div class="heavy">This is very easy to see.</div> -</pre> +#### 結果 -<p>{{EmbedLiveSample('Basic_example', '640', '64')}}</p> +{{EmbedLiveSample('Setting_opacity', '640', '105')}} -<h3 id="Different_opacity_with_hover" name="Different_opacity_with_hover">:hover を使った透明度の変化</h3> +<h3 id="Setting_opacity_on_hover">ホバー時の透明度の設定</h3> -<pre class="brush: css notranslate">img.opacity { +次の例では、ホバー時に不透明度を変更し、親要素の縞模様の背景画像が透けて見えるようにしています。 + +#### HTML + +```html +<div class="wrapper"> + <img src="//interactive-examples.mdn.mozilla.net/media/dino.svg" + alt="MDN Dino" width="128" height="146" + class="opacity"> +</div> +``` + +#### CSS + +```css +img.opacity { opacity: 1; - filter: alpha(opacity=100); /* IE8 and lower */ - zoom: 1; /* Triggers "hasLayout" in IE 7 and lower */ } img.opacity:hover { opacity: 0.5; - filter: alpha(opacity=50); - zoom: 1; -}</pre> - -<pre class="brush: html notranslate"><img src="<a href="/static/img/opengraph-logo.png">//developer.mozilla.org/static/img/opengraph-logo.png</a>" - alt="MDN ロゴ" width="128" height="146" - class="opacity"> -</pre> - -<p>{{EmbedLiveSample('Different_opacity_with_hover', '150', '175')}}</p> - -<h2 id="Accessibility_concerns" name="Accessibility_concerns">アクセシビリティの考慮事項</h2> - -<p>文字列の opacity を調整した場合、テキストの色と、テキストが配置されている背景の色とのコントラスト比が、弱視の人がページの内容を読むことができる程度に十分高くなるよう確認することが重要です。</p> - -<p>色のコントラスト比は、透明度を調整したテキストと背景色の明度の値を比較することで決定されます。現在の<a href="https://www.w3.org/WAI/intro/wcag">ウェブコンテンツアクセシビリティガイドライン (Web Content Accessibility Guidelines, WCAG)</a> によれば、文字列コンテンツで 4.5:1 以上、見出しのような大きめの文字列で 3:1 以上のコントラスト比が求められています。大きめの文字列とは、太字ならば 18.66px 以上、または 24px 以上と定義されています。</p> - -<ul> - <li><a href="https://webaim.org/resources/contrastchecker/">WebAIM: Color Contrast Checker</a></li> - <li><a href="/ja/docs/Web/Accessibility/Understanding_WCAG/Perceivable#Guideline_1.4_Make_it_easier_for_users_to_see_and_hear_content_including_separating_foreground_from_background">MDN "WCAG を理解する ― ガイドライン 1.4 の解説"</a></li> - <li><a href="https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html">Understanding Success Criterion 1.4.3 | W3C Understanding WCAG 2.0</a></li> -</ul> - -<h2 id="Specifications" name="Specifications">仕様書</h2> - -<table class="standard-table"> - <thead> - <tr> - <th scope="col">仕様書</th> - <th scope="col">状態</th> - <th scope="col">備考</th> - </tr> - </thead> - <tbody> - <tr> - <td>{{SpecName('CSS4 Colors', '#transparency', 'opacity')}}</td> - <td>{{Spec2('CSS4 Colors')}}</td> - <td>opacity の値にパーセント値を定義。</td> - </tr> - <tr> - <td>{{SpecName('CSS3 Colors', '#opacity', 'opacity')}}</td> - <td>{{Spec2('CSS3 Colors')}}</td> - <td>初回定義</td> - </tr> - </tbody> -</table> - -<p>{{cssinfo}}</p> - -<h2 id="Browser_compatibility" name="Browser_compatibility">ブラウザーの互換性</h2> - -<p>{{Compat("css.properties.opacity", 2)}}</p> - -<h2 id="See_also" name="See_also">関連情報</h2> - -<ul> - <li><a href="http://msdn.microsoft.com/ja-jp/library/ms532910%28VS.85%29.aspx">マイクロソフトの filter:alpha(opacity=xx)</a></li> -</ul> +} + +.wrapper { + width: 200px; + height: 160px; + background-color: #f03cc3; + background-image: linear-gradient(90deg, transparent 50%, + rgba(255,255,255,.5) 50%); + background-size: 20px 20px; +} +``` + +#### 結果 + +{{EmbedLiveSample('Setting_opacity_on_hover', '150', '200')}} + +## 仕様書 + +{{Specifications}} + +## ブラウザーの互換性 + +{{Compat}} diff --git a/files/ja/web/html/applying_color/index.md b/files/ja/web/html/applying_color/index.md index 3e49ec608c..b08409d00c 100644 --- a/files/ja/web/html/applying_color/index.md +++ b/files/ja/web/html/applying_color/index.md @@ -4,174 +4,159 @@ slug: Web/HTML/Applying_color tags: - Beginner - CSS - - CSS Colors + - CSS 色 - Guide - HTML - - HTML Colors - - HTML Styles + - HTML 色 + - HTML スタイル - Styling HTML - color translation_of: Web/HTML/Applying_color --- -<div>{{HTMLRef}}</div> -<p>色使いは人間の表現の基本形です。子どもは絵がうまくなる前から色に触れています。恐らくこれこそが、人がウェブサイト開発を学ぶときにまず色を触る理由でしょう。<span class="seoSummary"><a href="/ja/docs/Web/CSS">CSS</a> では、<a href="/ja/docs/Web/HTML">HTML</a> <a href="/ja/docs/Web/HTML/Element">要素</a>に色を追加し好みの見た目にする方法が多岐に渡ります。この記事では CSS の色を HTML の中で利用できる各方法の基本をご案内します。</span></p> +{{HTMLRef}} -<p>幸いなことに HTML での着色は本当に簡単で、ほぼ全ての要素に色をつけられます。</p> +この記事は、HTML での CSS の色を使用するそれぞれの方法を紹介する入門編です。 -<p>{{anch("Things that can have color", "色付けできる物の一覧とそのための CSS プロパティ")}}、{{anch("How to describe a color", "色の記述方法")}}、{{anch("Using color", "スタイルシートとスクリプトでの色の利用")}}など、色使いにおいて知っておくべき数多のことに触れていきます。{{anch("Letting the user picka color", "ユーザーに色を選択させる")}}方法にも触れます。</p> +色使いは人間の表現の基本形です。子どもは絵がうまくなる前から色に触れています。恐らくこれこそが、人がウェブサイト開発を学ぶときにまず色を触る理由でしょう。[CSS](/ja/docs/Web/CSS) では、[HTML](/ja/docs/Web/HTML) [要素](/ja/docs/Web/HTML/Element)に色を追加し好みの見た目にする方法が多岐に渡ります。 -<p>それから、{{anch("Using color wisely", "賢い色の使い方")}}について短い論述をします。これは、様々な視覚の人がいることを意識した、適切な色の選択方法です。</p> +ここでは、色を使用する際に必要なことのほとんどに触れていきます。[色をつけることができるものと、それに関係する CSS プロパティの一覧](#色を付けることができるもの)、[色の記述方法](#色の記述方法)、実際に[スタイルシートとスクリプトの両方で色を使用する方法](#色の活用)などです。また、ユーザーに色を選んでもらう方法についても見ていきます。 -<h2 id="Things_that_can_have_color" name="Things_that_can_have_color">色付けできる物</h2> +それから、[賢い色の使い方](#賢い色の使い方)について短い論述をします。これは、様々な視覚の人がいることを意識した、適切な色の選択方法です。 -<p>要素レベルでは、HTML 内のすべての物に色を付けられます。そこで、テキストや境界線などの要素として描画されるものの種類ごとに、色を付ける CSS プロパティのリストを見ていきます。</p> +## 色を付けることができるもの -<p>基礎的なレベルでならば、 {{cssxref("color")}} プロパティは HTML 要素の手前側の色を定義し、{{cssxref("background-color")}} は HTML 要素の背景色を定義すると言えます。これらのプロパティはほぼ全ての要素で使用できます。</p> +要素レベルでは、HTML のすべてのものに色を適用することができます。それよりも、テキストや境界線など、要素の中に描かれているものの種類で見てみましょう。それぞれについて、色を適用する CSS プロパティの一覧を見てみましょう。 -<h3 id="Text" name="Text">テキスト</h3> +基礎的なレベルでならば、{{cssxref("color")}} プロパティは HTML 要素の内容物の色を定義し、{{cssxref("background-color")}} は HTML 要素の背景色を定義すると言えます。これらのプロパティはほぼすべての要素で使用できます。 -<p>この要素を描画するときは、以下のプロパティに基づいてテキストの色、背景色、テキストの装飾を決定します。</p> +### テキスト -<dl> - <dt>{{cssxref("color")}}</dt> - <dd>テキストと<a href="/ja/docs/Learn/CSS/Styling_text/Fundamentals#Font_style_font_weight_text_transform_and_text_decoration">テキストの装飾</a> (下線や上線、打ち消し線などを付加するもの) に使用する色です。</dd> - <dt>{{cssxref("background-color")}}</dt> - <dd>テキストの背景色です。</dd> - <dt>{{cssxref("text-shadow")}}</dt> - <dd>テキストに適用する影の効果を設定します。影の設定には、影のベース色 (他のパラメータに基づいて背景をぼかして混色する色) があります。より詳しくは{{SectionOnPage("/ja/docs/Learn/CSS/Styling_text/Fundamentals", "テキストのドロップシャドウ")}}を参照してください。</dd> - <dt>{{cssxref("text-decoration-color")}}</dt> - <dd>デフォルトでは、テキストの装飾 (下線、打ち消し線など) の色には <code>color</code> プロパティを使用します。しかし、<code>text-decoration-color</code> プロパティを用いることで、この挙動をオーバーライドして異なる色を使用できます。</dd> - <dt>{{cssxref("text-emphasis-color")}}</dt> - <dd>文章中の各文字に隣接した圏点の描画に使用する色です。主に東アジア言語の文字描画で使用します。</dd> - <dt>{{cssxref("caret-color")}}</dt> - <dd>要素の {{Glossary("caret", "キャレット")}} (テキスト入力カーソルとも表現されるもの) の描画に使用する色です。これは編集可能な要素では有用で、{{HTMLElement("input")}} や {{HTMLElement("textarea")}} または HTML {{htmlattrxref("contenteditable")}} 属性がセットされた要素に使用されます。</dd> -</dl> +要素がレンダリングされるたびに、テキスト、その背景、およびテキストの装飾の色を決定するために以下のプロパティが使用されます。 -<h3 id="Boxes" name="Boxes">ボックス</h3> +- {{cssxref("color")}} + - : テキストと[テキスト装飾](/ja/docs/Learn/CSS/Styling_text/Fundamentals#font_style_font_weight_text_transform_and_text_decoration) (下線や上線、打ち消し線などを付加するもの) に使用する色です。 +- {{cssxref("background-color")}} + - : テキストの背景色です。 +- {{cssxref("text-shadow")}} + - : テキストに適用する影の効果を設定します。影の設定には、影のベース色 (他のパラメータに基づいて背景をぼかして混色する色) があります。より詳しくは基本的な[テキストとフォントの装飾](/ja/docs/Learn/CSS/Styling_text/Fundamentals)の[テキストのドロップシャドウ](/ja/docs/Learn/CSS/Styling_text/Fundamentals#text_drop_shadows)を参照してください。 +- {{cssxref("text-decoration-color")}} + - : 既定では、テキストの装飾 (下線、打ち消し線など) の色には `color` プロパティを使用します。しかし、`text-decoration-color` プロパティを用いると、この挙動を上書きして異なる色を使用できます。 +- {{cssxref("text-emphasis-color")}} + - : テキストの各文字に隣接した圏点の描画に使用する色です。主に東アジア言語の文字描画で使用します。 +- {{cssxref("caret-color")}} + - : 要素の {{Glossary("caret", "キャレット")}} (テキスト入力カーソルとも表現されるもの) の描画に使用する色です。これは編集可能な要素でのみ有用であり、{{HTMLElement("input")}} や {{HTMLElement("textarea")}} または HTML の {{htmlattrxref("contenteditable")}} 属性が設定された要素に使用されます。 -<p>すべての要素は中身があるボックスであり、そのボックスの内容に加えて、背景と境界線もあります。</p> +### ボックス -<dl> - <dt>{{anch("Borders", "境界線")}}</dt> - <dd>ボックスの境界線の色を設定できる CSS プロパティ一覧は、{{anch("Borders", "境界線")}} の章を参照してください。</dd> - <dt>{{cssxref("background-color")}}</dt> - <dd>要素の前面を除いて、その要素の領域で使われる背景色です。</dd> - <dt>{{cssxref("column-rule-color")}}</dt> - <dd>テキストの列を区切る線に使う色です。</dd> - <dt>{{cssxref("outline-color")}}</dt> - <dd>要素の外側に輪郭線を描くときに使う色です。この輪郭線は境界線とは異なり、ドキュメント内でそのスペースを確保しません (そのため他のコンテンツと重なる可能性があります)。一般的には、入力イベントを受け取る要素を示したフォーカスインジケーターに使用されます。</dd> -</dl> +すべての要素は中身があるボックスであり、そのボックスの内容に加えて、背景と境界線もあります。 -<h3 id="Borders" name="Borders">境界線</h3> +- [境界線](#境界線) + - : ボックスの境界線の色を設定できる CSS プロパティ一覧は、[境界線](#境界線)の節を参照してください。 +- {{cssxref("background-color")}} + - : 要素の内容がない領域で使用される背景色です。 +- {{cssxref("column-rule-color")}} + - : テキストの列を区切る線に使う色です。 +- {{cssxref("outline-color")}} + - : 要素の外側に輪郭線を描くときに使う色です。この輪郭線は境界線とは異なり、文書内でその空間を確保しません (そのため他のコンテンツと重なる可能性があります)。一般的には、入力イベントを受け取る要素を示すフォーカスインジケーターに使用されます。 -<p>あらゆる要素には、周りに境界線が存在します。基本的な要素の境界は、要素の内容の端に描かれている線です。要素とその境界線の関係性については {{SectionOnPage("/ja/docs/Learn/CSS/Introduction_to_CSS/Box_model", "ボックスのプロパティ")}} を、より詳しい境界線へのスタイルの適用については <a href="/ja/docs/Learn/CSS/Styling_boxes/Borders">CSS での境界線のスタイル付け</a> をご参照ください。</p> +### 境界線 -<p>{{cssxref("border")}} 短縮プロパティを使用することもできます。これは、境界線に関する (色に関しない<a href="/ja/docs/Web/CSS/border-width">線幅</a>、<a href="/ja/docs/Web/CSS/border-style">線の種類</a> (実線、破線など) のような境界線の機能も含んだ) すべての設定をこれ一つで行えます。</p> +あらゆる要素で、周囲に[境界線](/ja/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders)を描画することができます。基本的な要素の境界線は、要素の内容物の辺を囲むように描かれた線です。 +基本的な要素の境界は、要素の内容の端に描かれている線です。要素とその境界線の関係性については、[ボックスモデル](/ja/docs/Learn/CSS/Building_blocks/The_box_model)の[ボックスのプロパティ](/ja/docs/Learn/CSS/Building_blocks/The_box_model#ボックスのプロパティ)を、より詳しい境界線へのスタイルの適用については [CSS での境界線のスタイル付け](/ja/docs/Learn/CSS/Building_blocks/Backgrounds_and_borders) を参照してください。 -<dl> - <dt>{{cssxref("border-color")}}</dt> - <dd>要素の境界線の各辺に使用する単色を指定します。</dd> - <dt>{{cssxref("border-left-color")}} と {{cssxref("border-right-color")}} と {{cssxref("border-top-color")}} と {{cssxref("border-bottom-color")}}</dt> - <dd>要素の境界線の各辺に対応する色を指定できます。</dd> - <dt>{{cssxref("border-block-start-color")}} と {{cssxref("border-block-end-color")}}</dt> - <dd>これらは、境界線が囲むブロックの始点と終点に最も近い境界線の描画色を設定することができます。左から右への書き方 (英語の書き方など) では、ブロック開始の境界線は上端、ブロック終了の境界線は下端になります。これは、インライン開始とインライン終了である左右の (ボックス内の各行のテキストの開始と終了の位置に対応する) 端とは異なります。</dd> - <dt>{{cssxref("border-inline-start-color")}} と {{cssxref("border-inline-end-color")}}</dt> - <dd>これらは、ボックス内のテキスト行の先頭と末尾に最も近い境界線の縁に色を付けられます。これは {{cssxref("writing-mode")}}、{{cssxref("direction")}}、{{cssxref("text-orientation")}} プロパティに依存しますが、どちら側になるかは {{cssxref("writing-mode")}}、{{cssxref("direction")}}、{{cssxref("text-orientation")}} プロパティによって異なります。例えば、ボックスのテキストが右から左に描画される場合、<code>border-inline-start-color</code> は境界線の右側に適用されます。</dd> -</dl> +{{cssxref("border")}} 一括指定プロパティを使用することもできます。これは、境界線に関する (色以外の[線幅](/ja/docs/Web/CSS/border-width)、[線種](/ja/docs/Web/CSS/border-style) (実線、破線など) などの特性も含んだ) すべての設定をこれ一つで行えます。 -<h3 id="Other_ways_to_use_color" name="Other_ways_to_use_color">色をつける他の方法</h3> +- {{cssxref("border-color")}} + - : 要素の境界線の各辺に使用する単一の色を指定します。 +- {{cssxref("border-left-color")}}, {{cssxref("border-right-color")}}, {{cssxref("border-top-color")}}, {{cssxref("border-bottom-color")}} + - : 要素の境界線の各辺に対応する色を指定できます。 +- {{cssxref("border-block-start-color")}}, {{cssxref("border-block-end-color")}} + - : これらは、境界線が囲むブロックの先頭と末尾に最も近い境界線の描画色を設定することができます。左から右への書き方 (英語の書き方など) では、ブロック先頭の境界線は上端、ブロック末尾の境界線は下端になります。これは、インラインの先頭とインラインの末尾である左右の (ボックス内の各行のテキストの先頭と末尾の位置に対応する) 端とは異なります。 +- {{cssxref("border-inline-start-color")}}, {{cssxref("border-inline-end-color")}} + - : これらは、ボックス内のテキスト行の先頭と末尾に最も近い境界線の縁に色を付けられます。これは {{cssxref("writing-mode")}}、{{cssxref("direction")}}、{{cssxref("text-orientation")}} プロパティに依存しますが、どちら側になるかは {{cssxref("writing-mode")}}、{{cssxref("direction")}}、{{cssxref("text-orientation")}} プロパティによって異なります。例えば、ボックスのテキストが右から左に描画される場合、`border-inline-start-color` は境界線の右側に適用されます。 -<p>CSS が唯一の色を付けるためのウェブ技術ではありません。色もサポートしている、ウェブで使用可能なグラフィック技術があります。</p> +### 色をつける他の方法 -<dl> - <dt>HTML <a href="/ja/docs/Web/API/Canvas_API">Canvas API</a></dt> - <dd>Canvas API では、2D のビットマップ画像を {{HTMLElement("canvas")}} 要素の中に描画できます。より詳しくは <a href="/ja/docs/Web/API/Canvas_API/Tutorial">Canvas チュートリアル</a>をご参照ください。</dd> - <dt><a href="/ja/docs/Web/SVG">SVG</a> (Scalable Vector Graphics)</dt> - <dd>SVG ならば、特定の形状、パターン、線を描くコマンドで画像を描画できます。 SVG のコマンドは XML の形式となっており、直接ウェブページに埋め込めます。また、img 要素を使うと他の画像と同じような配置もできます。</dd> - <dt><a href="/ja/docs/Web/API/WebGL_API">WebGL</a></dt> - <dd>Web Graphics Library は Open GL ES を基にした API で、ウェブ上に 2D や 3D のハイパフォーマンスなグラフィックを描画できます。より詳しくは <a href="/ja/docs/Web/API/WebGL_API/Tutorial">WebGL チュートリアル</a>をご参照ください。</dd> -</dl> +CSS が唯一の色を付けるためのウェブ技術ではありません。色に対応している、ウェブで使用可能なグラフィック技術があります。 -<h2 id="How_to_describe_a_color" name="How_to_describe_a_color">色の指定方法</h2> +- HTML [Canvas API](/ja/docs/Web/API/Canvas_API) + - : Canvas API では、2D のビットマップ画像を {{HTMLElement("canvas")}} 要素の中に描画できます。より詳しくは [Canvas チュートリアル](/ja/docs/Web/API/Canvas_API/Tutorial)を参照してください。 +- [SVG](/ja/docs/Web/SVG) (Scalable Vector Graphics) + - : SVG ならば、特定の形状、パターン、線を描くコマンドで画像を描画できます。 SVG のコマンドは XML の形式となっており、直接ウェブページに埋め込めます。また、img 要素を使うと他の画像と同じような配置もできます。 +- [WebGL](/ja/docs/Web/API/WebGL_API) + - : Web Graphics Library は Open GL ES を基にした API で、ウェブ上に 2D や 3D のハイパフォーマンスなグラフィックを描画できます。より詳しくは [WebGL チュートリアル](/ja/docs/Web/API/WebGL_API/Tutorial)を参照してください。 -<p>CSS で色を表現するには、アナログの概念である「色」の概念を、コンピュータが解釈できるようなデジタル形式に翻訳する方法が必要です。これは通常、原色の集合それぞれをどのくらい混ぜるか、どのくらいの明るさにするかなど、色を構成要素に分解することで行います。ここでは、CSS で色を表現するいくつかの方法を示します。</p> +## 色の記述方法 -<p>色の値型の詳細は、CSS {{cssxref("<color>")}} 単位のリファレンスをご参照ください。</p> +CSS で色を表現するには、アナログの概念である「色」の概念を、コンピュータが解釈できるようなデジタル形式に翻訳する方法が必要です。これは通常、原色の集合それぞれをどのくらい混ぜるか、どのくらいの明るさにするかなど、色を構成要素に分解することで行います。ここでは、CSS で色を表現するいくつかの方法を示します。 -<h3 id="Keywords" name="Keywords">キーワード</h3> +色の値型の詳細は、CSS の {{cssxref("<color>")}} 単位のリファレンスを参照してください。 -<p>標準の色名がいくつか定義されており、色の数値表現の代わりにこれらのキーワードを使用できます。色キーワードには原色と副色 (<code>red</code>、<code>blue</code>、<code>orange</code> など)、灰色 (<code>black</code> から <code>white</code> までの <code>darkgray</code> や <code>lightgrey</code> といった色を含む)、これらを混ぜた色である <code>lightseagreen</code>、<code>cornflowerblue</code>、<code>rebeccapurple</code> が含まれます。</p> +### キーワード -<p>利用可能な全ての色キーワードの一覧は、{{SectionOnPage("/ja/docs/Web/CSS/color_value", "色キーワード")}}をご参照ください。</p> +標準的な色名が定義されており、使用したい色を表すキーワードがあれば、色の数値表現の代わりにこれらのキーワードを使用することができます。色キーワードには原色と副色 (`red`、`blue`、`orange` など)、灰色 (`black` から `white` までの `darkgray` や `lightgrey` といった色を含む)、これらを混ぜた色である `lightseagreen`、`cornflowerblue`、`rebeccapurple` が含まれます。 -<h3 id="RGB_values" name="RGB_values">RGB 値</h3> +利用可能な全ての色キーワードの一覧は、[<color>](/ja/docs/Web/CSS/color_value) の[色キーワード](/ja/docs/Web/CSS/color_value#色キーワード)を参照してください。 -<p>CSS での RGB の色表現は 3 通りあります。</p> +### RGB 値 -<h4 id="Hexadecimal_string_notation" name="Hexadecimal_string_notation">16 進数文字列表記</h4> +CSS での RGB の色表現は 3 通りあります。 -<p>16 進数文字列表記は、色の各要素 (赤、緑、青) を表すために 16 進数の数字で色を表します。また、4 つ目の要素のアルファチャネル (または不透明度) を含められます。各色要素は、0 〜 255 (0x00 と 0xFF) の間の数値、または任意で 0 ~ 15 (0x0 と 0xF) の間の数値として表せます。全要素は同じ桁数で指定する必要があります。1 桁の表記を使用した場合、描画時の最終的な色は <code>"#D"</code> が <code>"#DD"</code> になるように各構成要素の桁を 2 回繰り返して計算します。</p> +#### 16 進数文字列表記 -<p>16 進数文字列表記の色は、常に文字 <code>"#"</code> で始まります。その後にカラーコードの 16 進数が来ます。文字列の大文字小文字は区別されません。</p> +16 進数文字列表記は、色の各要素 (赤、緑、青) を表すために 16 進数の数字で色を表します。また、4 つ目の要素のアルファチャネル (または不透明度) を含められます。各色要素は、0 〜 255 (0x00 と 0xFF) の間の数値、または任意で 0 ~ 15 (0x0 と 0xF) の間の数値として表せます。全要素は同じ桁数で指定する必要があります。1 桁の表記を使用した場合、描画時の最終的な色は `"#D"` が `"#DD"` になるように各構成要素の桁を 2 回繰り返して計算します。 -<dl> - <dt><code>"#rrggbb"</code></dt> - <dd>16 進数の完全不透明色を指定します。赤色成分が <code>0xrr</code>、緑色成分がが <code>0xgg</code>、青色成分が <code>0xbb</code> です。</dd> - <dt><code>"#rrggbbaa"</code></dt> - <dd>16 進数の色を指定します。赤色成分が <code>0xrr</code>、緑色成分がが <code>0xgg</code>、青色成分が <code>0xbb</code> です。アルファチャンネルは <code>0xaa</code> で指定します。この値が小さいほど透明に近づきます。</dd> - <dt><code>"#rgb"</code></dt> - <dd>16 進数の完全不透明色を指定します。赤色成分が <code>0xrr</code>、緑色成分がが <code>0xgg</code>、青色成分が <code>0xbb</code> です。</dd> - <dt><code>"#rgba"</code></dt> - <dd>16 進数の色を指定します。赤色成分が <code>0xrr</code>、緑色成分がが <code>0xgg</code>、青色成分が <code>0xbb</code> です。アルファチャンネルは <code>0xaa</code> で指定します。この値が小さいほど透明に近づきます。</dd> -</dl> +16 進数文字列表記の色は、常に文字 `"#"` で始まります。その後にカラーコードの 16 進数が来ます。文字列の大文字小文字は区別されません。 -<p>例として、明るい青の不透明色は <code>"#0000ff"</code> や <code>"#00f"</code> で表現できます。25% 不透明にするには、<code>"#0000ff44"</code> や <code>"#00f4"</code> のようにします。</p> +- `"#rrggbb"` + - : 16 進数の完全不透明色を指定します。赤色成分が `0xrr`、緑色成分が `0xgg`、青色成分が `0xbb` です。 +- `"#rrggbbaa"` + - : 16 進数の色を指定します。赤色成分が `0xrr`、緑色成分が `0xgg`、青色成分が `0xbb` です。アルファチャンネルは `0xaa` で指定します。この値が小さいほど透明に近づきます。 +- `"#rgb"` + - : 16 進数の完全不透明色を指定します。赤色成分が `0xrr`、緑色成分が `0xgg`、青色成分が `0xbb` です。 +- `"#rgba"` + - : 16 進数の色を指定します。赤色成分が `0xrr`、緑色成分が `0xgg`、青色成分が `0xbb` です。アルファチャンネルは `0xaa` で指定します。この値が小さいほど透明に近づきます。 -<h4 id="RGB_functional_notation" name="RGB_functional_notation">RGB 関数表記</h4> +例として、明るい青の不透明色は `"#0000ff"` や `"#00f"` で表現できます。25% 不透明にするには、`"#0000ff44"` や `"#00f4"` のようにします。 -<p>RGB (赤/緑/青) 関数表記法は、16 進文字列表記法と同様に赤、緑、青の各成分 (任意では不透明度のアルファチャンネル成分) を用いて色を表現しますが、文字列ではなく CSS 関数 {{cssxref("color_value", "rgb()", "#rgb()")}} で色を定義します。この関数は、入力パラメータとして赤、緑、青の各成分の値と、任意の第 4 引数のアルファチャンネル値を受け取ります。</p> +#### RGB 関数表記 -<p>これらの引数の正常値は以下の通りです。</p> +RGB (赤/緑/青) 関数表記法は、16 進文字列表記法と同様に赤、緑、青の各成分 (任意では不透明度のアルファチャンネル成分) を用いて色を表現しますが、文字列ではなく CSS 関数 {{cssxref("color_value", "rgb()", "#rgb()")}} で色を定義します。この関数は、入力引数として赤、緑、青の各成分の値と、任意の第 4 引数のアルファチャンネル値を受け取ります。 -<dl> - <dt><code>red</code>、<code>green</code>、<code>blue</code></dt> - <dd>0 以上 255 以下の {{cssxref("<integer>")}} 型の値か、0% から 100% の {{cssxref("<percentage>")}} 型の値です。</dd> - <dt><code>alpha</code></dt> - <dd>アルファチャンネルは、0.0 (完全透過) から 1.0 (完全不透明) の間の数値です。また、 パーセントも指定でき、これは 0% が 0.0 と同じで 100% が 1.0 と同じです。</dd> -</dl> +これらの引数の正常値は以下の通りです。 -<p>例えば、不透明度 50% の明るい赤は <code>rgb(255, 0, 0, 0.5)</code> や <code>rgb(100%, 0, 0, 50%)</code> のように表現できます。</p> +- `red`、`green`、`blue` + - : 0 以上 255 以下の {{cssxref("<integer>")}} 型の値か、0% から 100% の {{cssxref("<percentage>")}} 型の値です。 +- `alpha` + - : アルファチャンネルは、0.0 (完全透過) から 1.0 (完全不透明) の間の数値です。また、 パーセントも指定でき、これは 0% が 0.0 と同じで 100% が 1.0 と同じです。 -<h3 id="HSL_functional_notation" name="HSL_functional_notation">HSL 関数表記</h3> +例えば、不透明度 50% の明るい赤は `rgb(255, 0, 0, 0.5)` や `rgb(100%, 0, 0, 50%)` のように表現できます。 -<p>デザイナーやアーティストは {{interwiki("wikipedia", "HSL and HSV", "HSL")}} (Hue/Saturation/Luminosity) で作業しようとすることがあります。ウェブにおける HSL 色は、HSL 関数表記で表現します。CSS の <code>hsl()</code> 関数の表現方法は、<code>rgb()</code> 関数とよく似ています。</p> +<h3 id="HSL_functional_notation">HSL 関数表記</h3> -<div style="padding-bottom: 20px;"> -<figure style="width: 500px;"><img alt="HSL 色円柱" src="https://mdn.mozillademos.org/files/15445/1200px-HSL_color_solid_cylinder_alpha_lowgamma.png" style="height: 375px; width: 500px;"> -<figcaption><em><strong>図 1. HSL 色円柱</strong> </em>色相は、可視スペクトルの色を表す円形の色相環に沿った位置に基づいて実際の色を定義します。彩度は、灰色の強さ、もしくはその色相で取りうる最も濃い色に対する割合です。輝度 (または明度) の値が高くなると、色は最も暗い色から最も明るい色 (黒から白) へと変化します。<em>画像提供は <a href="https://www.wikipedia.org/">Wikipedia </a>の <a href="http://commons.wikimedia.org/wiki/User:SharkD">SharkD</a> さんより、<a href="http://creativecommons.org/licenses/by-sa/3.0">CC BY-SA 3.0</a> ライセンスで配布されているものです。</em></figcaption> -</figure> -</div> +デザイナーやアーティストは {{interwiki("wikipedia", "HSL and HSV", "HSL")}} (Hue/Saturation/Luminosity) で作業しようとすることがあります。ウェブにおける HSL 色は、HSL 関数表記で表現します。CSS の `hsl()` 関数の表現方法は、`rgb()` 関数とよく似ています。 + +以下の図は HSL 色円筒を表しています。色相 (Hue) は、可視スペクトルの色を表す円形の色相環に沿った位置に基づいて実際の色を定義します。彩度 (Saturation) は、灰色の強さ、もしくはその色相で取りうる最も濃い色に対する割合です。輝度 (または明度) の値が高くなると、色は最も暗い色から最も明るい色 (黒から白) へと変化します。画像の提供元は、[Wikipedia](https://www.wikipedia.org/) の [SharkD](http://commons.wikimedia.org/wiki/User:SharkD) さんより、[CC BY-SA 3.0](https://creativecommons.org/licenses/by-sa/3.0) ライセンスで配布されているものです。 -<p>HSL カラーの色相 (H) 成分の値は、赤から黄、緑、水、青、マゼンタ (そして 360° で再び赤に戻る) までの角度で、ベースの色を特定します。度 (<code>deg</code>)、ラジアン (<code>rad</code>)、グラジアン (<code>grad</code>)、回転 (<code>turn</code>) など、CSS がサポートする任意の {{cssxref("<angle>")}} 単位で値を指定できます。しかしこれでは、鮮やかさや濁り、色の明るさや暗さを制御できません。</p> +![HSL 色円筒](640px-hsl_color_solid_cylinder.png) -<p>色の彩度 (S) 成分は、最終的な色を指定の色相が構成する割合を指定します。残りの輝度 (L) 成分は、灰色の強さを定義します。</p> +HSL カラーの色相 (H) 成分の値は、赤から黄、緑、水、青、マゼンタ (そして 360° で再び赤に戻る) までの角度で、ベースの色を特定します。度 (`deg`)、ラジアン (`rad`)、グラジアン (`grad`)、回転 (`turn`) など、CSS がサポートする任意の {{cssxref("<angle>")}} 単位で値を指定できます。しかしこれでは、鮮やかさや濁り、色の明るさや暗さを制御できません。 -<p>以下のように、完璧な絵の具の色を作るかのように考えてみましょう。</p> +色の彩度 (S) 成分は、最終的な色を指定の色相が構成する割合を指定します。残りの輝度 (L) 成分は、灰色の強さを定義します。 -<ol> - <li>ユーザーの画面で表現できる最も強い青など、その色で最も強いベースの絵の具から始めます。これが<strong>色相</strong> (H) 要素で、ベースとして使用したい鮮やかな色相環の周りの角度を表す値です。</li> - <li>次に、欲しい色の明るさに対応するグレースケールの絵の具を選びます。非常に明るくて白に近い色にしたいのか、それとも非常に暗くて黒に近い色にしたいのか、それともその中間のどこかにしたいのか。これはパーセンテージで指定し、0% が完全な黒、100% が完全な白となります。(彩度や色相に関係なく)。この値の間には文字通り灰色の領域があります。</li> - <li>灰色の絵の具と完全に鮮やかな色が手に入ったので、これらを混ぜ合わせる必要があります。色の彩度 (S) 成分は、最終的な色のうち完全に鮮やかな色が構成するパーセントを示します。残りは、彩度を表すグレーの絵の具となります。</li> -</ol> +以下のように、完璧な絵の具の色を作るかのように考えてみましょう。 -<p>任意でアルファチャンネルを追加して、色を 100% 以下の不透明度にすることもできます。</p> +1. ユーザーの画面で表現できる最も強い青など、その色で最も強いベースの絵の具から始めます。これが**色相** (H) 要素で、ベースとして使用したい鮮やかな色相環の周りの角度を表す値です。 +2. 次に、欲しい色の明るさに対応するグレースケールの絵の具を選びます。非常に明るくて白に近い色にしたいのか、それとも非常に暗くて黒に近い色にしたいのか、それともその中間のどこかにしたいのか。これはパーセンテージで指定し、0% が完全な黒、100% が完全な白となります。(彩度や色相に関係なく)。この値の間には文字通り灰色の領域があります。 +3. 灰色の絵の具と完全に鮮やかな色が手に入ったので、これらを混ぜ合わせる必要があります。色の彩度 (S) 成分は、最終的な色のうち完全に鮮やかな色が構成するパーセントを示します。残りは、彩度を表すグレーの絵の具となります。 -<p>こちらは、HSL 表記のサンプル色です。</p> +任意でアルファチャンネルを追加して、色を 100% 以下の不透明度にすることもできます。 -<div id="hsl-swatches"> -<div class="hidden"> -<pre class="brush: css notranslate">table { +こちらは、HSL 表記のサンプル色です。 + +```css hidden +table { border: 1px solid black; font: 16px "Open Sans", Helvetica, Arial, sans-serif; border-spacing: 0; @@ -186,103 +171,107 @@ th, td { th { background-color: hsl(0, 0%, 75%); -}</pre> - -<pre class="brush: html notranslate"><table> - <thead> - <tr> - <th scope="col">Color in HSL notation</th> - <th scope="col">Example</th> - </tr> - </thead> - <tbody> - <tr> - <td><code>hsl(90deg, 100%, 50%)</code></td> - <td style="background-color: hsl(90deg, 100%, 50%);">&nbsp;</td> - </tr> - <tr> - <td><code>hsl(90, 100%, 50%)</code></td> - <td style="background-color: hsl(90, 100%, 50%);">&nbsp;</td> - </tr> - <tr> - <td><code>hsl(0.15turn, 50%, 75%)</code></td> - <td style="background-color: hsl(0.15turn, 50%, 75%);">&nbsp;</td> - </tr> - <tr> - <td><code>hsl(0.15turn, 90%, 75%)</code></td> - <td style="background-color: hsl(0.15turn, 90%, 75%);">&nbsp;</td> - </tr> - <tr> - <td><code>hsl(0.15turn, 90%, 50%)</code></td> - <td style="background-color: hsl(0.15turn, 90%, 50%);">&nbsp;</td> - </tr> - <tr> - <td><code>hsl(270deg, 90%, 50%)</code></td> - <td style="background-color: hsl(270deg, 90%, 50%);">&nbsp;</td> - </tr> - </tbody> -</table></pre> -</div> - -<p>{{EmbedLiveSample("hsl-swatches", 300, 260)}}</p> -</div> - -<div class="note"> -<p>注意として、色相の単位を省略した場合は度 (<code>deg</code>) と見なされます。</p> -</div> - -<h2 id="Using_color" name="Using_color">色の活用</h2> - -<p>要素に色を適用する CSS プロパティの存在と、色の記述に使用可能な形式が分かったので、これをまとめて色を活用し始めてみましょう。{{anch("着色できる物")}}のリストを見て把握できたと思いますが、CSS で色を付けられる物はたくさんあります。ここでは、{{Glossary("stylesheet", "スタイルシート")}}内で色を使う場合と、{{Glossary("JavaScript")}} コードで要素のスタイルを変更するために色を追加したり変更したりする場合の、2 つの側面から見ていきます。</p> - -<h3 id="Specifying_colors_in_stylesheets" name="Specifying_colors_in_stylesheets">スタイルシートでの色指定</h3> - -<p>要素に色を適用する最も簡単な方法は、要素の描画に使用する CSS で色を指定することです。前述のプロパティをすべて使用するわけではありませんが、いくつかの例を見てみましょう。色を使う場所によらず、考え方は同じです。</p> - -<p>先にこれからやることの結果を見てから、サンプルを見ていきます。</p> - -<div>{{EmbedLiveSample("Specifying_colors_in_stylesheets", 650, 150)}}</div> - -<h4 id="HTML">HTML</h4> - -<p>上記の例を作成するための HTML は、この通りです。</p> - -<pre class="brush: html notranslate"><div class="wrapper"> - <div class="box boxLeft"> - <p> +} +``` + +```html +<table> + <thead> + <tr> + <th scope="col">Color in HSL notation</th> + <th scope="col">Example</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>hsl(90deg, 100%, 50%)</code></td> + <td style="background-color: hsl(90deg, 100%, 50%);"> </td> + </tr> + <tr> + <td><code>hsl(90, 100%, 50%)</code></td> + <td style="background-color: hsl(90, 100%, 50%);"> </td> + </tr> + <tr> + <td><code>hsl(0.15turn, 50%, 75%)</code></td> + <td style="background-color: hsl(0.15turn, 50%, 75%);"> </td> + </tr> + <tr> + <td><code>hsl(0.15turn, 90%, 75%)</code></td> + <td style="background-color: hsl(0.15turn, 90%, 75%);"> </td> + </tr> + <tr> + <td><code>hsl(0.15turn, 90%, 50%)</code></td> + <td style="background-color: hsl(0.15turn, 90%, 50%);"> </td> + </tr> + <tr> + <td><code>hsl(270deg, 90%, 50%)</code></td> + <td style="background-color: hsl(270deg, 90%, 50%);"> </td> + </tr> + </tbody> +</table> +``` + +{{EmbedLiveSample("HSL_functional_notation", 300, 260)}} + +> **Note:** 色相の単位を省略した場合は度 (`deg`) と見なされます。 + +## 色の活用 + +要素に色を適用する CSS プロパティの存在と、色の記述に使用可能な形式が分かったので、これをまとめて色を活用し始めてみましょう。{{anch("着色できる物")}}のリストを見て把握できたと思いますが、CSS で色を付けられる物はたくさんあります。ここでは、{{Glossary("stylesheet", "スタイルシート")}}内で色を使う場合と、{{Glossary("JavaScript")}} コードで要素のスタイルを変更するために色を追加したり変更したりする場合の、2 つの側面から見ていきます。 + +<h3 id="Specifying_colors_in_stylesheets">スタイルシートでの色指定</h3> + +要素に色を適用する最も簡単な方法は、要素の描画に使用する CSS で色を指定することです。前述のプロパティをすべて使用するわけではありませんが、いくつかの例を見てみましょう。色を使う場所によらず、考え方は同じです。 + +先にこれからやることの結果を見てから、サンプルを見ていきます。 + +{{EmbedLiveSample("Specifying_colors_in_stylesheets", 650, 150)}} + +#### HTML + +上記の例を作成するための HTML は、この通りです。 + +```html +<div class="wrapper"> + <div class="box boxLeft"> + <p> This is the first box. - </p> - </div> - <div class="box boxRight"> - <p> + </p> + </div> + <div class="box boxRight"> + <p> This is the second box. - </p> - </div> -</div></pre> + </p> + </div> +</div> +``` -<p>これは非常にシンプルで、{{HTMLElement("div")}} をコンテンツのラッパーとして使用し、さらに 2 つの <div> で構成しています。</p> +これはとてもシンプルで、{{HTMLElement("div")}} をコンテンツのラッパーとして使用し、さらに 2 つの `<div>` で構成しています。 -<p>魔法はいつも、CSS で起こります。上記の HTML で定義したレイアウトに、色を適用していきます。</p> +魔法はいつも、CSS で起こります。上記の HTML で定義したレイアウトに、色を適用していきます。 -<h4 id="CSS">CSS</h4> +#### CSS -<p>上記の結果を作り出す CSS を一つずつ見ていけば、面白い部分も一つずつ見られるでしょう。</p> +上記の結果を作り出す CSS を一つずつ見ていけば、面白い部分も一つずつ見られるでしょう。 -<pre class="brush: css notranslate">.wrapper { +```css +.wrapper { width: 620px; height: 110px; margin: 0; padding: 10px; border: 6px solid mediumturquoise; -}</pre> +} +``` -<p><code>.wrapper</code> クラスは、他のすべてのコンテンツを囲む {{HTMLElement("div")}} にスタイルを割り当てるために使っています。これは {{cssxref("width")}} と {{cssxref("height")}} を使ってコンテナのサイズを決定し、さらに {{cssxref("margin")}} と {{cssxref("padding")}} を使っています。</p> +`.wrapper` クラスは、他のすべてのコンテンツを囲む {{HTMLElement("div")}} にスタイルを割り当てるために使っています。これは {{cssxref("width")}} と {{cssxref("height")}} を使ってコンテナのサイズを決定し、さらに {{cssxref("margin")}} と {{cssxref("padding")}} を使っています。 -<p>ここでの論述でさらに興味深いのは、{{cssxref("border")}} プロパティで要素の縁に境界線を設定していることです。この境界線は幅 6 ピクセルの実線で、色は <code>mediumturquoise</code> です。</p> +ここでの論述でさらに興味深いのは、{{cssxref("border")}} プロパティで要素の縁に境界線を設定していることです。この境界線は幅 6 ピクセルの実線で、色は `mediumturquoise` です。 -<p>2 つの色付きボックスには共通のプロパティがいくつかありますので、そのプロパティを定義するクラス <code>.box</code> を作成します。</p> +2 つの色付きボックスには共通のプロパティがいくつかありますので、そのプロパティを定義するクラス `.box` を作成します。 -<pre class="brush: css notranslate">.box { +```css +.box { width: 290px; height: 100px; margin: 0; @@ -291,90 +280,92 @@ th { display: flex; justify-content: center; align-items: center; -}</pre> +} +``` -<p>簡単に言えば、<code>.box</code> は各ボックスのサイズとその中で使用するフォントの構成を確立しています。また、<a href="/ja/docs/Web/CSS/CSS_Flexible_Box_Layout">CSS フレックスボックス</a>も利用して簡単に各ボックスのコンテンツを中央揃えしています。{{cssxref("display", "display: flex")}} で <code>flex</code> モードを有効にし、{{cssxref("justify-content")}} と {{cssxref("align-items")}} を <code>center</code> に設定しています。あとは、2 つのボックスそれぞれに異なるプロパティを定義するクラスを作るだけです。</p> +簡単に言えば、`.box` は各ボックスのサイズとその中で使用するフォントの構成を確立しています。また、[CSS フレックスボックス](/ja/docs/Web/CSS/CSS_Flexible_Box_Layout)も利用して簡単に各ボックスのコンテンツを中央揃えしています。{{cssxref("display", "display: flex")}} で `flex` モードを有効にし、{{cssxref("justify-content")}} と {{cssxref("align-items")}} を `center` に設定しています。あとは、2 つのボックスそれぞれに異なるプロパティを定義するクラスを作るだけです。 -<pre class="brush: css notranslate">.boxLeft { +```css +.boxLeft { float: left; background-color: rgb(245, 130, 130); outline: 2px solid darkred; -}</pre> +} +``` -<p><code>.boxLeft</code> クラスは、左側のボックスのスタイルとして巧みに使われ、以下のようにボックスを左側に浮かせて色を設定しています。</p> +`.boxLeft` クラスは、左側のボックスのスタイルとして巧みに使われ、以下のようにボックスを左側に浮かせて色を設定しています。 -<ul> - <li>CSS {{cssxref("background-color")}} プロパティを <code>rgb(245, 130, 130)</code> の値に変更することで、ボックスの背景色を設定しています。</li> - <li>ボックスに輪郭線を定義しています。一般的によく使われる <code>border</code> とは異なり、{{cssxref("outline")}} はレイアウトに全く影響しません。この輪郭線は、2 ピクセルの太さの、濃い赤色の実線です。色の指定に <code>darkred</code> キーワードを使用していることにご注意ください。</li> - <li>注意として、テキストの色は明示的に設定していません。この場合 {{cssxref("color")}} の値はそれを含んだ最も近い要素から継承されます。すなわち、デフォルトである黒色です。</li> -</ul> +- CSS {{cssxref("background-color")}} プロパティを `rgb(245, 130, 130)` の値に変更することで、ボックスの背景色を設定しています。 +- ボックスに輪郭線を定義しています。一般的によく使われる `border` とは異なり、{{cssxref("outline")}} はレイアウトに全く影響しません。この輪郭線は、2 ピクセルの太さの、濃い赤色の実線です。色の指定に `darkred` キーワードを使用していることにご注意ください。 +- 注意として、テキストの色は明示的に設定していません。この場合 {{cssxref("color")}} の値はそれを含んだ最も近い要素から継承されます。すなわち、既定である黒色です。 -<pre class="brush: css notranslate">.boxRight { +```css +.boxRight { float: right; background-color: hsl(270deg, 50%, 75%); outline: 4px dashed rgb(110, 20, 120); color: hsl(0deg, 100%, 100%); text-decoration: underline wavy #88ff88; text-shadow: 2px 2px 3px black; -}</pre> +} +``` -<div class="blockIndicator note"> -<p>こちらを Safari で表示しようとしても、正常に表示されません。なぜなら、Safari は <code>text-decoration: underline wavy #88ff88</code> をサポートしていないからです。</p> -</div> +> **Note:** こちらを Safari で表示しようとしても、正常に表示されません。なぜなら、Safari は `text-decoration: underline wavy #88ff88` をサポートしていないからです。 -<p>最後に、<code>.boxRight</code> クラスで右に描画されるボックス固有のプロパティを記述します。これは、先のボックスの隣に表示されるように、ボックスを右に浮かす設定をしています。そして、以下のように色を設定しています。</p> +最後に、`.boxRight` クラスで右に描画されるボックス固有のプロパティを記述します。これは、先のボックスの隣に表示されるように、ボックスを右に浮かす設定をしています。そして、以下のように色を設定しています。 -<ul> - <li><code>background-color</code> は <code>hsl(270deg, 50%, 75%)</code> で指定した HSL 値を設定しています。この色は中くらいの紫色です。</li> - <li>ボックスの <code>outline</code> は、 ボックスを太さ 4 ピクセルの破線で囲み、色はやや濃い紫色 (<code>rgb(110, 20, 120)</code>) となるように指定しています。</li> - <li>前景 (テキスト) の色は、{{cssxref("color")}} プロパティを <code>hsl(0deg, 100%, 100%)</code> にすることで指定してあります。これは白色を指定する方法のうちの一つです。</li> - <li>{{cssxref("text-decoration")}} でテキストの下に緑の波線を引いています。</li> - <li>最後に、{{cssxref("text-shadow")}} を使用してテキストに少しだけ影をつけています。この <code>color</code> 引数は <code>black</code> にしています。</li> -</ul> +- `background-color` は `hsl(270deg, 50%, 75%)` で指定した HSL 値を設定しています。この色は中くらいの紫色です。 +- ボックスの `outline` は、 ボックスを太さ 4 ピクセルの破線で囲み、色はやや濃い紫色 (`rgb(110, 20, 120)`) となるように指定しています。 +- 前景 (テキスト) の色は、{{cssxref("color")}} プロパティを `hsl(0deg, 100%, 100%)` にすることで指定してあります。これは白色を指定する方法のうちの一つです。 +- {{cssxref("text-decoration")}} でテキストの下に緑の波線を引いています。 +- 最後に、{{cssxref("text-shadow")}} を使用してテキストに少しだけ影をつけています。この `color` 引数は `black` にしています。 -<h2 id="Letting_the_user_pick_a_color" name="Letting_the_user_pick_a_color">ユーザーに色を選択させる</h2> +<h2 id="Letting_the_user_pick_a_color">ユーザーに色を選択させる</h2> -<p>ウェブサイト上では、ユーザーに色を選択させる必要がある場合があります。カスタマイズ可能なユーザーインターフェースがある場合や、お絵かきアプリを実装している場合などが考えられるでしょう。編集可能なテキストがあってユーザーにテキストの色を選択させる、あるいはアプリでフォルダやアイテムに色を割り当てることができる場合があるかもしれません。古くは、独自の{{interwiki("wikipedia", "カラーピッカー")}}を実装する必要がありましたが、HTML では {{HTMLElement("input")}} 要素を通じて {{htmlattrxref("type", "input")}} 属性の値を <code>"color"</code> にすれば、ブラウザが色選択を提供できるようになりました。</p> +ウェブサイト上では、ユーザーに色を選択させる必要がある場合があります。カスタマイズ可能なユーザーインターフェースがある場合や、お絵かきアプリを実装している場合などが考えられるでしょう。編集可能なテキストがあってユーザーにテキストの色を選択させる、あるいはアプリでフォルダーやアイテムに色を割り当てることができる場合があるかもしれません。古くは、独自の{{interwiki("wikipedia", "カラーピッカー")}}を実装する必要がありましたが、HTML では {{HTMLElement("input")}} 要素を通じて {{htmlattrxref("type", "input")}} 属性の値を `"color"` にすれば、ブラウザーがカラーピッカーを提供できるようになりました。 -<p><code><input></code> 要素は、先で取り上げた {{anch("Hexadecimal string notation", "16進数文字列表記")}} でのみ色を表します。</p> +`<input>` 要素は、先で取り上げた [16 進数文字列表記](#16_進数文字列表記)でのみ色を表します。 -<h3 id="Example_Picking_a_color" name="Example_Picking_a_color">例: 色の選択</h3> +<h3 id="Example_Picking_a_color">例: 色の選択</h3> -<p>ユーザーが色を選択できる簡単な例を見てみましょう。ユーザーが色を調整すると、サンプルの周囲の境界線が新しい色を反映するように変化します。色を選び終えると、カラーピッカーの値が表示されます。</p> +ユーザーが色を選択できる簡単な例を見てみましょう。ユーザーが色を調整すると、サンプルの周囲の境界線が新しい色を反映するように変化します。色を選び終えると、カラーピッカーの値が表示されます。 -<p>{{EmbedLiveSample("Example_Picking_a_color", 525, 275)}}</p> +{{EmbedLiveSample("Example_Picking_a_color", 525, 275)}} -<div class="note"> -<p>macOS では、カラーピッカーウインドウを閉じると色の選択が完了したことになります。</p> -</div> +> **Note:** macOS では、カラーピッカーウインドウを閉じると色の選択が完了したことになります。 -<h4 id="HTML_2">HTML</h4> +#### HTML -<p>この HTML は、({{HTMLElement("label")}} 要素で作成したラベル付きの) カラーピッカーコントロールと、空の段落要素 ({{HTMLElement("p")}}) を含むボックスを作成します。この段落要素に JavaScript コードからテキストを出力する予定です。</p> +この HTML は、({{HTMLElement("label")}} 要素で作成したラベル付きの) カラーピッカーコントロールと、空の段落要素 ({{HTMLElement("p")}}) を含むボックスを作成します。この段落要素に JavaScript コードからテキストを出力する予定です。 -<pre class="brush: html notranslate"><div id="box"> - <label for="colorPicker">Border color:</label> - <input type="color" value="#8888ff" id="colorPicker"> - <p id="output"></p> -</div></pre> +```html +<div id="box"> + <label for="colorPicker">Border color:</label> + <input type="color" value="#8888ff" id="colorPicker"> + <p id="output"></p> +</div> +``` -<h4 id="CSS_2">CSS</h4> +#### CSS -<p>この CSS では、ボックスのサイズと見た目の基本的なスタイルを設定しています。境界線には 2 ピクセルの幅を設定していますが、色は下記の JavaScript のおかげで変化します。</p> +この CSS では、ボックスのサイズと見た目の基本的なスタイルを設定しています。境界線には 2 ピクセルの幅を設定していますが、色は下記の JavaScript のおかげで変化します。 -<pre class="brush: css notranslate">#box { +```css +#box { width: 500px; height: 200px; border: 2px solid rgb(245, 220, 225); padding: 4px 6px; font: 16px "Lucida Grande", "Helvetica", "Arial", "sans-serif" -}</pre> +} +``` -<h4 id="JavaScript">JavaScript</h4> +#### JavaScript -<p>このスクリプトは、境界線の開始色をカラーピッカーの値と同じに更新するタスクを処理します。<code><a href="/ja/docs/Web/HTML/Element/input/color"><input type="color"></a></code> 要素からの入力をハンドルするために、2 つのイベントハンドラを追加しています。</p> +このスクリプトは、境界線の開始色をカラーピッカーの値と同じに更新するタスクを処理します。[`<input type="color">`](/ja/docs/Web/HTML/Element/input/color) 要素からの入力を処理するために、2 つのイベントハンドラーを追加しています。 -<pre class="brush: js notranslate">let colorPicker = document.getElementById("colorPicker"); +```js +let colorPicker = document.getElementById("colorPicker"); let box = document.getElementById("box"); let output = document.getElementById("output"); @@ -386,131 +377,114 @@ colorPicker.addEventListener("input", function(event) { colorPicker.addEventListener("change", function(event) { output.innerText = "Color set to " + colorPicker.value + "."; -}, false);</pre> +}, false); +``` -<p>この {{event("input")}} イベントは要素の値が変更されるたびに送信されます。このイベントが来るたびに、ボックスの境界線の色をカラーピッカーの現在値に合わせます。</p> +この {{domxref("HTMLElement/input_event", "input")}} イベントは要素の値が変更されるたびに送信されます。このイベントが来るたびに、ボックスの境界線の色をカラーピッカーの現在値に合わせます。 -<p>カラーピッカーの値が確定したときに、{{event("change")}} イベントを受信します。ID が <code>"output"</code> の <code><p></code> 要素の内容を、最後に選択した色を表す文字列に設定することで応答します。</p> +カラーピッカーの値が確定したときに、{{domxref("HTMLElement/change_event", "change")}} イベントを受信します。ID が `"output"` である `<p>` 要素の内容を、最後に選択した色を表す文字列に設定することで応答します。 -<h2 id="Using_color_wisely" name="Using_color_wisely">賢く色を使う</h2> +## 賢く色を使う -<p>ウェブサイトのデザインで正しい色選びをする際には、芸術、デザイン、少なくとも基本的な色理論に精通していないと、格段に複雑な工程となるでしょう。間違った色の選択は、サイトが醜くなったり、さらに悪いことにコントラストや相反する色の問題でコンテンツが読めなくなってしまうことがあります。また、間違った色を使用してしまうことで、特定の視覚的問題、特に色覚異常を持つ人々がコンテンツを全く利用できなくなる恐れがあります。</p> +ウェブサイトのデザインで正しい色選びをする際には、芸術、デザイン、少なくとも基本的な色理論に精通していないと、格段に複雑な工程となるでしょう。間違った色の選択は、サイトが醜くなったり、さらに悪いことにコントラストや相反する色の問題でコンテンツが読めなくなってしまうことがあります。また、間違った色を使用してしまうことで、特定の視覚的問題、特に色覚異常を持つ人々がコンテンツを全く利用できなくなる恐れがあります。 -<h3 id="Finding_the_right_colors" name="Finding_the_right_colors">適切な色を見つける</h3> +### 適切な色を見つける -<p>何らかの芸術やデザインを触れずに、丁度よく正しい色を思い付くことは難しいでしょう。幸いなことに、あなたの手助けになりえる便利なツールがあります。これらは意思決定を助ける良きデザイナーを持つことには代わりませんが、火付け役にはなるでしょう。</p> +何らかの芸術やデザインを触れずに、丁度よく正しい色を思い付くことは難しいでしょう。幸いなことに、あなたの手助けになりえる便利なツールがあります。これらは意思決定を助ける良きデザイナーを持つことには代わりませんが、火付け役にはなるでしょう。 -<h4 id="Base_color" name="Base_color">ベースカラー</h4> +#### ベースカラー -<p>最初のステップは、<strong>ベースカラー</strong>を選ぶことです。これは、何らかの形であなたのウェブサイトやサイトの主題を定義する色です。緑がお茶を連想させるように、また青は空や海と関係があるように考えるところから、サイトを表すのに適切なベースカラー選びを始めると良いでしょう。ベースカラーを選ぶ方法はたくさんありますが、以下のようないくつかのアイデアがあります。</p> +最初のステップは、**ベースカラー**を選ぶことです。これは、何らかの形であなたのウェブサイトやサイトの主題を定義する色です。緑がお茶を連想させるように、また青は空や海と関係があるように考えるところから、サイトを表すのに適切なベースカラー選びを始めると良いでしょう。ベースカラーを選ぶ方法はたくさんありますが、以下のようないくつかのアイデアがあります。 -<ul> - <li>商品やアイデアで識別される既存の色や、伝えたい感情を代表する色など、コンテンツのトピックに自然に関連する色。</li> - <li>コンテンツが表す物に関連付いたイメージから来る色。特定の項目や製品に関するウェブサイトを作成する場合は、それらに物理的に存在する色を選びます。</li> - <li>ウェブサイトを探して既存のカラーパレットや画像をたくさん見ることで、インスピレーションを得ます。</li> -</ul> +- 商品やアイデアで識別される既存の色や、伝えたい感情を代表する色など、コンテンツのトピックに自然に関連する色。 +- コンテンツが表す物に関連付いたイメージから来る色。特定の項目や製品に関するウェブサイトを作成する場合は、それらに物理的に存在する色を選びます。 +- ウェブサイトを探して既存のカラーパレットや画像をたくさん見ることで、インスピレーションを得ます。 -<p>ベースカラーを決める際には、ウェブコンテンツから色を選択できるブラウザ拡張機能が特に便利です。拡張機能の中には、こういった作業を支援するために特別に設計されたものもあります。例えば、ウェブサイトの <a href="http://www.colorzilla.com/">ColorZilla</a> はウェブから色を選ぶためのスポイトツールの拡張機能 (<a href="http://www.colorzilla.com/chrome">Chrome</a> / <a href="http://www.colorzilla.com/firefox">Firefox</a>) を提供しています。また、様々なサイズの領域やページの選択すた領域のピクセルの色の平均を取ることもできます。</p> +ベースカラーを決める際には、ウェブコンテンツから色を選択できるブラウザー拡張機能が特に便利です。拡張機能の中には、こういった作業を支援するために特別に設計されたものもあります。例えば、ウェブサイトの [ColorZilla](https://www.colorzilla.com/) はウェブから色を選ぶためのスポイトツールの拡張機能 ([Chrome](https://www.colorzilla.com/chrome) / [Firefox](https://www.colorzilla.com/firefox)) を提供しています。また、様々なサイズの領域やページの選択すた領域のピクセルの色の平均を取ることもできます。 -<div class="note"> -<p>色の平均を取る利点は、一見同じ色に見えるものが、実際には驚くほど多様な数の関連色が協調して使用され、目的の効果を生み出すために混色されていることが多いためです。これらのピクセル内から 1 つだけ選んでしまうと、それだけでは非常に場違いな色になることがあります。</p> -</div> +> **Note:** 色の平均を取る利点は、一見同じ色に見えるものが、実際には驚くほど多様な数の関連色が協調して使用され、目的の効果を生み出すために混色されていることが多いためです。これらのピクセル内から 1 つだけ選んでしまうと、それだけでは非常に場違いな色になることがあります。 -<h4 id="Fleshing_out_the_palette" name="Fleshing_out_the_palette">パレットを豊かにする</h4> +#### パレットを豊かにする -<p>ベースカラーが決まれば、ベースカラーに色理論を適用して、ベースカラーと一緒に使用する適切なカラーパレットを構築します。さらなる適切な色の決定に役立つオンラインツールもたくさんあります。これらの多くはフィルターをかけた色表示もサポートしているので、さまざまな色盲の人がどう見えるかを確認できます。これがなぜ重要なのかについては、{{anch("Color and accessibility", "色とアクセシビリティ")}}で簡単に説明しています。</p> +ベースカラーが決まれば、ベースカラーに色理論を適用して、ベースカラーと一緒に使用する適切なカラーパレットを構築します。さらなる適切な色の決定に役立つオンラインツールもたくさんあります。これらの多くはフィルターをかけた色表示もサポートしているので、さまざまな色盲の人がどう見えるかを確認できます。これがなぜ重要なのかについては、{{anch("Color and accessibility", "色とアクセシビリティ")}}で簡単に説明しています。 -<p>以下はいくつかの例 (このリストが最終改訂された時点では、すべて無料で使用できるもの) です。</p> +以下はいくつかの例 (このリストが最終改訂された時点では、すべて無料で使用できるもの) です。 -<ul> - <li><a href="/ja/docs/Web/CSS/CSS_Colors/Color_picker_tool">MDN のカラーピッカーツール</a></li> - <li><a href="http://paletton.com">Paletton</a></li> - <li><a href="https://color.adobe.com/create/color-wheel">Adobe Color CC オンライン色相環</a></li> -</ul> +- [MDN のカラーピッカーツール](/ja/docs/Web/CSS/CSS_Colors/Color_picker_tool) +- [Paletton](http://paletton.com) +- [Adobe Color CC オンライン色相環](https://color.adobe.com/create/color-wheel) -<p>パレットをデザインする際には、これらのツールが典型的に生成する色に加えて、白 (またはほぼ白)、黒 (またはほぼ黒)、グレーの濃淡などの中核となる中性的な色を加える必要があることも念頭に置いてください。</p> +パレットをデザインする際には、これらのツールが典型的に生成する色に加えて、白 (またはほぼ白)、黒 (またはほぼ黒)、グレーの濃淡などの中核となる中性的な色を加える必要があることも念頭に置いてください。 -<div class="note"> -<p>通常は、可能な限り色の数を少なくした方がはるかに良くなります。ページ上の全てに色を加えるのではなく色をアクセントに使うと、内容が読みやすくなり使った色のインパクトが増します。</p> -</div> +> **Note:** 通常は、可能な限り色の数を少なくした方がはるかに良くなります。ページ上の全てに色を加えるのではなく色をアクセントに使うと、内容が読みやすくなり使った色のインパクトが増します。 -<h3 id="Color_theory_resources" name="Color_theory_resources">色理論に関する参考文献</h3> +### 色理論に関する参考文献 -<p>色理論の全面的な履修はこの記事の範囲を超えていますが、色理論に関する記事も豊富に用意されており、最寄りの学校や大学にも講座があるでしょうから、ぜひ参考にしてみてください。色理論に関する有用なリソースをいくつかご紹介します。</p> +色理論の全面的な履修はこの記事の範囲を超えていますが、色理論に関する記事も豊富に用意されており、最寄りの学校や大学にも講座があるでしょうから、ぜひ参考にしてみてください。色理論に関する有用なリソースをいくつかご紹介します。 -<dl> - <dt><a href="https://www.khanacademy.org/partner-content/pixar/color">Color Science</a> (<a href="https://www.khanacademy.org/">カーンアカデミー</a> と <a href="https://www.pixar.com/">ピクサー</a> の共著)</dt> - <dd>色とは何か、色の認識のされ方、色を使ったアイデアの表現方法などの概念を紹介するオンライン講座です。ピクサーのアーティストやデザイナーが講師を務めています。</dd> - <dt>Wikipedia の {{interwiki("wikipedia", "Color theory")}}</dt> - <dd>ウィキペディアの色理論に関する記事で、技術的観点の素晴らしい情報がたくさんあります。色選びの参考にはなりませんが、有用な情報が満載です。</dd> -</dl> +- [Color Science](https://www.khanacademy.org/partner-content/pixar/color) ([カーンアカデミー](https://www.khanacademy.org/) と [ピクサー](https://www.pixar.com/) の共著) + - : 色とは何か、色の認識のされ方、色を使ったアイデアの表現方法などの概念を紹介するオンライン講座です。ピクサーのアーティストやデザイナーが講師を務めています。 +- Wikipedia の {{interwiki("wikipedia", "en:Color theory")}} + - : ウィキペディアの色理論に関する記事で、技術的観点の素晴らしい情報がたくさんあります。色選びの参考にはなりませんが、有用な情報が満載です。 -<h3 id="Color_and_accessibility" name="Color_and_accessibility">色とアクセシビリティ</h3> +### 色とアクセシビリティ -<p>色が {{Glossary("accessibility", "アクセシビリティ")}} の問題となることがあります。色の不適切及び不注意な使用は、利用者の何割かが適切に使用できないウェブサイトやアプリになり、トラフィックの損失、ビジネスの損失、さらには広報の問題につながる可能性があります。そのため、色の使い方を慎重に検討することは重要です。</p> +色が{{Glossary("accessibility", "アクセシビリティ")}}の問題となることがあります。色の不適切および不注意な使用は、利用者の何割かが適切に使用できないウェブサイトやアプリになり、トラフィックの損失、ビジネスの損失、さらには広報の問題につながる可能性があります。そのため、色の使い方を慎重に検討することは重要です。 -<p>少なくとも {{interwiki("wikipedia", "色覚異常")}} についての基礎的な研究はしておいた方が良いでしょう。いくつかの種類がありますが、最も一般的なのは赤緑色覚異常で、赤と緑の色を区別しづらいものです。他にも、特定の色の違いを見分けることができないものから、全く色が見えないものまであります。</p> +少なくとも{{interwiki("wikipedia", "色覚異常")}}についての基礎的な調査はしておいた方が良いでしょう。いくつかの種類がありますが、最も一般的なのは赤緑色覚異常で、赤と緑の色を区別しづらいものです。他にも、特定の色の違いを見分けることができないものから、全く色が見えないものまであります。 -<div class="note"> -<p>最も重要なルール: 色だけで情報を知る手段を使ってはいけません。例えば、ある操作の成功や失敗を示すために、図形の色を白から緑、失敗を示すために赤に変えた場合、赤緑の色盲のユーザーはサイトを適切に利用できません。代わりにテキストと色を併用すれば、誰もが起こったことを理解できるようになるでしょう。</p> -</div> +> **Note:** 最も重要なルール: 色だけで情報を知る手段を使ってはいけません。例えば、ある操作の成功や失敗を示すために、図形の色を白から緑、失敗を示すために赤に変えた場合、赤緑の色盲のユーザーはサイトを適切に利用できません。代わりにテキストと色を併用すれば、誰もが起こったことを理解できるようになるでしょう。 -<p>色覚異常については、以下の記事をご覧ください。</p> +色覚異常については、以下の記事をご覧ください。 -<ul> - <li><a href="https://medlineplus.gov/colorblindness.html">Medline Plus: Color Blindness</a> (<span class="module__title__link">アメリカ国立衛生研究所)</span></li> - <li><a href="https://www.aao.org/eye-health/diseases/what-is-color-blindness">American Academy of Ophthamology: What Is Color Blindness?</a></li> - <li><a href="https://www.usability.gov/get-involved/blog/2010/02/color-blindness.html">Color Blindness & Web Design</a> (Usability.gov: アメリカ保健福祉省)</li> -</ul> +- [Medline Plus: Color Blindness](https://medlineplus.gov/colorblindness.html) (<span class="module__title__link">アメリカ国立衛生研究所)</span> +- [American Academy of Ophthamology: What Is Color Blindness?](https://www.aao.org/eye-health/diseases/what-is-color-blindness) +- [Color Blindness & Web Design](https://www.usability.gov/get-involved/blog/2010/02/color-blindness.html) (Usability.gov: アメリカ保健福祉省) -<h3 id="Palette_design_example" name="Palette_design_example">パレットデザインの例</h3> +### パレットデザインの例 -<p>サイトの適切なカラーパレットを選ぶにあたって、簡単な例を考えてみましょう。火星で開かれる新しいゲームのウェブサイトを構築すると想像してみてください。そこで、<a href="https://www.google.com/search?q=Mars&tbm=isch">火星の写真を Google 検索</a>してみましょう。火星のカラーリングの良い例がたくさんあるはずです。私たちは慎重にモックアップや映画の写真を避け、火星で撮影された写真を使うことにしました。そして、このゲームは惑星の表面で行われるため、人類が過去数十年にわたって表面に滞在させている火星着陸機の一つが撮影した写真を使用することにしました。カラーピッカーツールを使って、この選んだ色のサンプルを採ります。</p> +サイトの適切なカラーパレットを選ぶにあたって、簡単な例を考えてみましょう。火星で開かれる新しいゲームのウェブサイトを構築すると想像してみてください。そこで、[火星の写真を Google 検索](https://www.google.com/search?q=Mars&tbm=isch)してみましょう。火星のカラーリングの良い例がたくさんあるはずです。私たちは慎重にモックアップや映画の写真を避け、火星で撮影された写真を使うことにしました。そして、このゲームは惑星の表面で行われるため、人類が過去数十年にわたって表面に滞在させている火星着陸機の一つが撮影した写真を使用することにしました。カラーピッカーツールを使って、この選んだ色のサンプルを採ります。 -<p>スポイトツールを使って好みの色を特定し、件の色は <code>#D79C7A</code> であることを確認しました。これは火星表面のステレオタイプな錆びたオレンジレッドの色です。</p> +スポイトツールを使って好みの色を特定し、件の色は `#D79C7A` であることを確認しました。これは火星表面のステレオタイプな錆びたオレンジレッドの色です。 -<p>ベースカラーを選択したら、パレットを構築する必要があります。そこで、<a href="http://www.paletton.com/">Paletton </a>を使って他の色を考えてみることにしました。Plaetton を開くと、以下のような画面が出てきます。</p> +ベースカラーを選択したら、パレットを構築する必要があります。そこで、[Paletton](http://www.paletton.com/) を使って他の色を考えてみることにしました。Paletton を開くと、以下のような画面が出てきます。 -<p><img alt="Right after loading Paletton." src="https://mdn.mozillademos.org/files/15451/paletton1.png" style="height: 361px; width: 600px;"></p> +![Paletton を読み込んだ直後。](paletton1.png) -<p>次に、ツールの左下隅にある "Base RGB" の欄に色の 16 進数コード (<code>D79C7A</code>) を入力します。</p> +次に、ツールの左下隅にある "Base RGB" の欄に色の 16 進数コード (`D79C7A`) を入力します。 -<p><img alt="After entering base color" src="https://mdn.mozillademos.org/files/15453/paletton2.png" style="height: 361px; width: 600px;"></p> +![ベースカラーの入力後](paletton2.png) -<p>火星の写真から選んだ色をベースにした単色パレットが出てきました。何らかの理由で関連色がたくさん必要な場合は、そういった色も良い色になる可能性はあります。しかし、私たちが本当に欲しいのはアクセントカラー、ベースカラーに添えて目立つ色です。これを見つけるには、パレットの種類の選択メニューにある "add complementary" のトグル (現在は "Monochromatic") をクリックします。右下のアクセントカラーをクリックすると、補色が <code>#508D7C</code> であることが計算されます。</p> +火星の写真から選んだ色をベースにした単色パレットが出てきました。何らかの理由で関連色がたくさん必要な場合は、そういった色も良い色になる可能性はあります。しかし、私たちが本当に欲しいのはアクセントカラー、ベースカラーに添えて目立つ色です。これを見つけるには、パレットの種類の選択メニューにある "add complementary" のトグル (現在は "Monochromatic") をクリックします。右下のアクセントカラーをクリックすると、補色が `#508D7C` であることが計算されます。 -<p><img alt="Now with complementary colors included." src="https://mdn.mozillademos.org/files/15455/paletton3.png" style="height: 361px; width: 600px;"></p> +![補色も含まれるようになりました。](paletton3.png) -<p>提案された色が気に入らない場合は、配色を変更して、もっと良さそうな色を確かめることができます。例えば、提案の緑青色が気に入らない場合、トライアド配色のアイコンをクリックすれば以下のように表示されます。</p> +提案された色が気に入らない場合は、配色を変更して、もっと良さそうな色を確かめることができます。例えば、提案の緑青色が気に入らない場合、トライアド配色のアイコンをクリックすれば以下のように表示されます。 -<p><img alt="Triad color scheme selected" src="https://mdn.mozillademos.org/files/15457/paletton4.png" style="height: 361px; width: 600px;"></p> +![トライアド配色を選択](paletton4.png) -<p>右上のあの灰色っぽい青はなかなか良さそうですね。クリックすると、<code>#556E8D</code> でした。これをアクセントカラーとして、見出しやタブの強調表示のようにものを目立たせる目的で控えめに使用します。</p> +右上のあの灰色っぽい青はなかなか良さそうですね。クリックすると、`#556E8D` でした。これをアクセントカラーとして、見出しやタブの強調表示のようにものを目立たせる目的で控えめに使用します。 -<p><img alt="Triad color scheme selected" src="https://mdn.mozillademos.org/files/15459/paletton-color-detail.png" style="height: 370px; width: 526px;"></p> +![トライアド配色を選択](paletton-color-detail.png) -<p>これで、ベースカラーとアクセントカラーができました。さらに、グラデーションなどが必要な場合に備えて、それぞれの色の補色をいくつか用意します。これらの色を後から利用できるように、何らかの形式で出力しておきます。</p> +これで、ベースカラーとアクセントカラーができました。さらに、グラデーションなどが必要な場合に備えて、それぞれの色の補色をいくつか用意します。これらの色を後から利用できるように、何らかの形式で出力しておきます。 -<p>これらの色を決めてなお、適切な中性的カラーも選択する必要があります。一般的なデザインでは、テキストが鮮明で読みやすい十分なコントラストがありつつ、目に厳しいほどのコントラストではないというスイートスポットを見つけようとします。どちらかの方に行き過ぎてしまいがちなので、色を選んで使用例に着手したら、必ずフィードバックをもらうようにしましょう。コントラストが低すぎるとテキストが背景に洗い流されて読めなくなりがちです。またコントラストが高すぎると、ユーザーはサイトを見ているだけで、見栄えが悪く不愉快に感じるでしょう。</p> +これらの色を決めてなお、適切な中間的な色も選択する必要があります。一般的なデザインでは、テキストが鮮明で読みやすい十分なコントラストがありつつ、目に厳しいほどのコントラストではないというスイートスポットを見つけようとします。どちらかの方に行き過ぎてしまいがちなので、色を選んで使用例に着手したら、必ずフィードバックをもらうようにしましょう。コントラストが低すぎるとテキストが背景に洗い流されて読めなくなりがちです。またコントラストが高すぎると、ユーザーはサイトを見ているだけで、見栄えが悪く不愉快に感じるでしょう。 -<h3 id="色、背景、コントラスト、印刷">色、背景、コントラスト、印刷</h3> +### 色、背景、コントラスト、印刷 -<p>画面上では良いように見えるものが、紙の上では全く違って見えるかもしれません。さらに、往々にしてインクは高価なものです。ユーザーがページを印刷している場合、重要なのはテキストであるにも関わらず、背景すべてが貴重なインクを使い切るわけにはいきません。ほとんどのブラウザはデフォルトで、ドキュメント印刷時に背景画像を除きます。</p> +画面上では良いように見えるものが、紙の上では全く違って見えるかもしれません。さらに、往々にしてインクは高価なものです。ユーザーがページを印刷している場合、重要なのはテキストであるにも関わらず、背景すべてが貴重なインクを使い切るわけにはいきません。ほとんどのブラウザーは既定で、文書印刷時に背景画像を除きます。 -<p>背景色や画像が慎重に選択されている場合や、背景がコンテンツの有用性に決定的な影響を与える場合、CSS {{cssxref("color-adjust")}} プロパティを使用して、コンテンツの外観を調整しないようにブラウザに指示できます。</p> +背景色や画像が慎重に選択されている場合や、背景がコンテンツの有用性に決定的な影響を与える場合、CSS {{cssxref("color-adjust")}} プロパティを使用して、コンテンツの外観を調整しないようにブラウザーに指示できます。 -<p><code>color-adjust</code>、<code>economy</code> のデフォルト値は、ブラウザが必要に応じて外観を変更することができるかどうかを示します。ブラウザはドキュメントを描画する出力デバイスの種類に応じて、コンテンツの読みやすさや印刷の経済効率を最適化しようとします。</p> +`color-adjust`、`economy` の既定値は、ブラウザーが必要に応じて外観を変更することができるかどうかを示します。ブラウザーは文書を描画する出力機器の種類に応じて、コンテンツの読みやすさや印刷の経済効率を最適化しようとします。 -<p><code>color-adjust</code> を <code>exact</code> にすると、色や画像があった場合でも、それを使用することで適した動作の要素になる特別なデザインであることを、ブラウザに伝えられます。これを設定すると、ブラウザは要素の外観に手を加えることなく、CSS で指定された通りに要素を描画します。</p> +`color-adjust` を `exact` にすると、色や画像があった場合でも、それを使用することで適した動作の要素になる特別なデザインであることを、ブラウザーに伝えられます。これを設定すると、ブラウザーは要素の外観に手を加えることなく、CSS で指定された通りに要素を描画します。 -<div class="note"> -<p><strong>注意:</strong> <code>color-adjust: exact</code> を与えても CSS がその通りに使用されるとは限りません。ブラウザ出力を変更するユーザー設定 (印刷ダイアログボックスの「背景をプリントしない」チェックボックスなど) が提供されている場合、<code>color-adjust</code> の値はそれによって上書きされます。</p> -</div> +> **Note:** `color-adjust: exact` を与えても CSS がその通りに使用されるとは限りません。ブラウザー出力を変更するユーザー設定 (印刷ダイアログボックスの「背景を印刷しない」チェックボックスなど) が提供されている場合、`color-adjust` の値はそれによって上書きされます。 -<h2 id="See_also" name="See_also">関連情報</h2> +## 関連情報 -<ul> - <li><a href="/ja/docs/Learn/JavaScript/Client-side_web_APIs/Drawing_graphics">グラフィックの描画</a></li> - <li><a href="/ja/docs/Web/Guide/Graphics">ウェブのグラフィック</a></li> - <li><a href="/ja/docs/Web/CSS/CSS_Colors/Color_picker_tool">MDN のカラーピッカーツール</a></li> -</ul> +- [グラフィックの描画](/ja/docs/Learn/JavaScript/Client-side_web_APIs/Drawing_graphics) +- [ウェブのグラフィック](/ja/docs/Web/Guide/Graphics) +- [MDN のカラーピッカーツール](/ja/docs/Web/CSS/CSS_Colors/Color_picker_tool) |