CSS の色指定に関するメモと、 JIS 慣用色の一覧表

http://hxxk.jp/2006/06/22/1900

記事データ

投稿者

真琴

投稿日時

2006-06-22T19:00+09:00

タグ
概要

CSS 2 の仕様において、色の指定の仕方がどのように示されているかのメモと、 JIS 慣用色の色情報を一覧にした表を付録サンプルで提供。

リプライ

1 件のリプライがあります。

記事本文

カラー関連の情報を各形式で CSS 内に記述

Lucky bag::blog: カラー関連の情報を CSS 内に記述という「ちょっとしたことなんだけど実は便利」な記事を受けて。 ちなみに本題に入る前の前振りとして、仕様についてつらつらと語っているため、サンプルだけ手っ取り早く見たいという方はそのセクションを直接参照してください。 というか本題より前振りの方が長いです。

Lucky bag::blog の e-luck さんはカラーネームと 16 進記法と関数的記法を紐付けて書いていますが、関数的記法のパーセント値ってあまり使われていないのかなあと思いました。 まあ、かくいう私も色情報は専ら 16 進記法による指定 ( #800080 のような指定 ) を使っていますが。 ただ、 rgb(128,128,128) という数字よりも、 rgb(50%,50%,50%) という書き方の方が直感的に色をイメージできそうな気がしませんか ? しませんか、そうか。

Cascading Style Sheets, Level 2 における色の指定方法

CSS の仕様ではどのようにして色を指定すると示されているでしょうか。 現時点での Recommendation である CSS の仕様は Cascading Style Sheets, Level 2 ですので、今回は基本的にはこの仕様およびその邦訳を元に確認していきます。 CSS2 syntax and basic data types - 4.3.6 Colors によると、

A <color> is either a keyword or a numerical RGB specification.

The list of keyword color names is: aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, and yellow. These 16 colors are defined in HTML 4.0 ([HTML40]). In addition to these color keywords, users may specify keywords that correspond to the colors used by certain objects in the user's environment. Please consult the section on system colors for more information.

<color>は,キーワード又は数値RGB指定のいずれかとする。

キーワード色名は,aqua, black, blue, fuchsia, gray, green, lime, maroon, navy, olive, purple, red, silver, teal, white, yellowとする。 これらの16色は,HTML 4.0([HTML40])で定義される。 これらの色キーワードに加えて,利用者は,利用者の環境のオブジェクトが使用する色に対応するキーワードを指定してもよい。 更なる情報を入手したい場合は,システム色を参照すること。

と示されています。 キーワードで指定できる色は引用文中にあるように 16 色 ( ただし CSS 2.1 では追加色として Orange (#ffA500) が新たに加えられています。 ) だけですので、多くの場合は数値による RGB 指定を行うことになると思います。 なお、カラーネームで検索すると、キーワードによる 16 色以外の色名も色々とヒットしますが、これはあくまでブラウザが内蔵している機能であり、色名によっては、また UA によっては予想した色と違うものになる可能性があることに注意してください。

The format of an RGB value in hexadecimal notation is a '#' immediately followed by either three or six hexadecimal characters. The three-digit RGB notation (#rgb) is converted into six-digit form (#rrggbb) by replicating digits, not by adding zeros. For example, #fb0 expands to #ffbb00. This ensures that white (#ffffff) can be specified with the short notation (#fff) and removes any dependencies on the color depth of the display.

The format of an RGB value in the functional notation is 'rgb('followed by a comma-separated list of three numerical values (either three integer values or three percentage values) followed by ')'. The integer value 255 corresponds to 100%, and to F or FF in the hexadecimal notation: rgb(255,255,255) = rgb(100%,100%,100%) = #FFF. Whitespace characters are allowed around the numerical values.

16進記法のRGB値のフォーマットは,'#'で始まり,その直後に3桁又は6桁の16進数が続くものとする。 3桁の数字のRGB記法(#rgb)は,ゼロを付加するのではなく,数字を重複させることによって,6桁の形式(#rrggbb)に変換される。 例えば,#fb0は#ffbb00に展開される。これによって,確実に白(#ffffff)は短い記法(#fff)で指定でき,ディスプレイの色ビット幅への依存性が除去される。

関数的記法でのRGB値のフォーマットは,'rgb('で始まり,これに三つの数値(三つの整数値又は三つのパーセント値のいずれか)をコンマで区切ったリストが続き,さらに')'が続くものとする。 整数値255は100%に対応し,16進記法でのF又はFFに対応する。 すなわち,rgb(255,255,255) = rgb(100%,100%,100%) = #FFFである。 空白文字が,数値の前後にあってもよい。

このように、 RGB 値の指定方法は 16 進数による記法と、関数的記法の 2 つに分かれ、更に関数的記法は <integer> 形式と <percentage> 形式に分かれます。

RGB 関数的記法における <integer> 形式と <percentage> 形式

さて、これらの形式について考えてみましょう。

まず <integer> 形式というのは文字通り整数値で、 The integer value 255 corresponds to 100% と、 255 = 100% として指定します。 なお、 CSS 2 では EM { color: rgb(255,0,0) } /* integer range 0 - 255 */ と、 0 から 255 までの間で指定するようにコメントで示されていましたが、 CSS 2.1 では em { color: rgb(255,0,0) } と、そのコメントが削除されている点にも留意してください。 ( Changes - C.3.6 Section 4.3.6 も併せて参照してください。 Deleted the comments about range restriction after the following examples: と明示されています。 )

次に <percentage> 形式ですが、これは整数値 255 を 100% としたパーセント値で指定します。 こちらも同様に CSS 2 では EM { color: rgb(100%, 0%, 0%) } /* float range 0.0% - 100.0% */ と、 0.0% から 100.0% までの間で指定するようにコメントで示されていましたが、 CSS 2.1 では em { color: rgb(100%, 0%, 0%) } と、そのコメントが削除されています。 なお、<percentage> 形式は The format of a percentage value (denoted by <percentage> in this specification) is an optional sign character ('+' or '-', with '+' being the default) immediately followed by a <number> immediately followed by '%'. のように、 + または - の符号付き ( 付けない場合のデフォルト値は + ) の実数の後に、 % を付けて指定することになっています。

RGB 関数的記法における <percentage> 形式はどこまで計算すべきか

<percentage> 形式には整数でなく実数が使えますが、 255 を 100% とする場合、たいていの値は小数点以下がずらずらと続くことになります。 例えば整数値で 51 の場合は割り切れて 20.0% になりますが、 55 の場合は約 21.568627... となりますので、ある程度のところで丸めを行うのが現実的でしょうか ?

試しに小数点以下を四捨五入した換算表を作ってみましたが、 10 進数の 4 も 6 も同じ 2% になりますね。 小数点第一位もしくは第二位くらいまでは指定した方が良いかもしれません。

10 進数16 進数%
0000%
1010%
2021%
3031%
4042%
5052%
6062%
7073%
8083%
9094%
100A4%
110B4%
120C5%
130D5%
140E5%
150F6%
16106%
17117%
18127%
19137%
20148%
21158%
22169%
23179%
24189%
251910%
261A10%
271B11%
281C11%
291D11%
301E12%
311F12%
322013%
332113%
342213%
352314%
362414%
372515%
382615%
392715%
402816%
412916%
422A16%
432B17%
442C17%
452D18%
462E18%
472F18%
483019%
493119%
503220%
513320%
523420%
533521%
543621%
553722%
563822%
573922%
583A23%
593B23%
603C24%
613D24%
623E24%
633F25%
644025%
654125%
664226%
674326%
684427%
694527%
704627%
714728%
724828%
734929%
744A29%
754B29%
764C30%
774D30%
784E31%
794F31%
805031%
815132%
825232%
835333%
845433%
855533%
865634%
875734%
885835%
895935%
905A35%
915B36%
925C36%
935D36%
945E37%
955F37%
966038%
976138%
986238%
996339%
1006439%
1016540%
1026640%
1036740%
1046841%
1056941%
1066A42%
1076B42%
1086C42%
1096D43%
1106E43%
1116F44%
1127044%
1137144%
1147245%
1157345%
1167445%
1177546%
1187646%
1197747%
1207847%
1217947%
1227A48%
1237B48%
1247C49%
1257D49%
1267E49%
1277F50%
1288050%
1298151%
1308251%
1318351%
1328452%
1338552%
1348653%
1358753%
1368853%
1378954%
1388A54%
1398B55%
1408C55%
1418D55%
1428E56%
1438F56%
1449056%
1459157%
1469257%
1479358%
1489458%
1499558%
1509659%
1519759%
1529860%
1539960%
1549A60%
1559B61%
1569C61%
1579D62%
1589E62%
1599F62%
160A063%
161A163%
162A264%
163A364%
164A464%
165A565%
166A665%
167A765%
168A866%
169A966%
170AA67%
171AB67%
172AC67%
173AD68%
174AE68%
175AF69%
176B069%
177B169%
178B270%
179B370%
180B471%
181B571%
182B671%
183B772%
184B872%
185B973%
186BA73%
187BB73%
188BC74%
189BD74%
190BE75%
191BF75%
192C075%
193C176%
194C276%
195C376%
196C477%
197C577%
198C678%
199C778%
200C878%
201C979%
202CA79%
203CB80%
204CC80%
205CD80%
206CE81%
207CF81%
208D082%
209D182%
210D282%
211D383%
212D483%
213D584%
214D684%
215D784%
216D885%
217D985%
218DA85%
219DB86%
220DC86%
221DD87%
222DE87%
223DF87%
224E088%
225E188%
226E289%
227E389%
228E489%
229E590%
230E690%
231E791%
232E891%
233E991%
234EA92%
235EB92%
236EC93%
237ED93%
238EE93%
239EF94%
240F094%
241F195%
242F295%
243F395%
244F496%
245F596%
246F696%
247F797%
248F897%
249F998%
250FA98%
251FB98%
252FC99%
253FD99%
254FE100%
255FF100%

JIS 慣用色のカラー関連の情報をまとめてみる

本当はこれから書く表だけを以って一つの記事にしようと思っていたのですが、 <percentage> 形式の RGB 関数的記法に換算していたときに、「あれ、パーセントの値を四捨五入して作っちゃったけど、確か <percentage> 形式の数字って整数じゃなくて実数だったよね......」と後から思い出してしまったので、長い長い前振りになったわけです。 まあ、仕様を読み返す良い機会だったので、今後のためにちょっと書かせてもらいました。

JIS Z 8102 に、物体色の色名が慣用色として示されているのですが、私はこれを参考にしてカラーリングを決めることがあります。 数値による指定だとどうしてもイメージが沸かないもので。 そこで冒頭に取り上げた Lucky bag::blog: カラー関連の情報を CSS 内に記述につながるのですが、その慣用色の色情報を一覧にしておくと後々楽だなあ ( 自分が ) ということで、一覧表を作ってみました。

Lucky bag::blog: カラー関連の情報を CSS 内に記述を参考にして、気に入った色の行を CSS ファイル内に書くと便利かもしれません。 また、 CSS に限らず RGB 形式で色を指定する時の簡易カラーチャートにしても良いかも。

トラックバック送信先

Lucky bag::blog: カラー関連の情報を CSS 内に記述

カラー関連の情報を CSS 内に書くというアイデアをもらって、慣用色の一覧を作ってみました。 「○○なイメージに合う色」を一覧から探して CSS 内に記録してもらうと良いかも。

リプライ

1 件のリプライが送られています。

2006-06-24T10:44+09:00 - 真琴

&#60;percentage&#62; 形式に実数が使えるとは言え、ブラウザあるいはモニタがどこまで細かく対応できるかによるのかなあ。 <a href="http://hxxk.jp/2006/06/22/colortable">http://hxxk.jp/2006/06/22/colortable</a> の各セルはそれぞれ 16 進数記法・関数的記法 (&#60;integer&#62;) ・関数的記法 (&#60;percentage&#62;) で色を指定していますが、関数的記法 (&#60;percentage&#62;) では小数点以下を四捨五入してしまっているので、他の 2 つの色と微妙に違ってくるはずなのですが、肉眼では分かりません。

この記事に対するご意見やご質問、ご感想などありましたらこのフォームに簡潔に記入して下さい。 簡潔に記入できない場合や、関連記事にてご意見をお寄せいただく場合は、ご自身の weblog にて記事を書かれた上で あてにトラックバックとして送信してください。

記入フォーム

補足情報

著作、講演、制作実績など