edubun
日本語

色と単位

白い背景に薄い灰色 #bbbbbb の文字は、コントラスト比が 1.92 対 1 です。WCAG は、ふつうの文字に少なくとも 4.5 対 1 を求めています。

色の書き方

CSS では色をいくつかの書き方で指定できますが、どれも最後は同じもの、つまり画面上の赤・緑・青の光の量になります。red、navy、rebeccapurple のような色の名前は読みやすいのですが、種類がかぎられています。16進数表記では、赤・緑・青をそれぞれ 00 から ff(0 から 255)までの 2 けたの16進数で書きます。#1a5fb4 は赤 26、緑 95、青 180 で、中くらいの青です。rgb(26 95 180) は同じ色を10進数で表します。hsl(210 80% 40%) は、色相(色相環の上の角度で、0 が赤、120 が緑、240 が青)、彩度、明度で色を表します。数を一つ変えるだけで、同じ色相の明るい色や暗い色を作れるので便利です。

color: navy;
color: #1a5fb4;              /* same as #1A5FB4 */
color: #36c;                 /* short form of #3366cc */
color: rgb(26 95 180);
color: rgb(26 95 180 / 50%); /* half transparent */
color: hsl(210 80% 40%);
background-color: transparent;
コンマを使う古い書き方 rgb(26, 95, 180) も、今でもどこでも使えます。

スラッシュのあとに四つめの値を書くと、アルファチャンネル(不透明度)を指定できます。rgb(0 0 0 / 50%) は半分だけ不透明な黒で、うしろにあるものが透けて見えます。color は文字の色、background-color は要素のうしろの塗り、border-color は枠線の色を決めます。キーワード currentColor はその要素の文字の色を表します。文字と色をそろえたいアイコンや枠線に便利です。

コントラストは必須

背景と明るさが近すぎる文字は、多くの人にとって読みにくくなります。視力の弱い人、高齢の読者、そして日なたでスマートフォンを見ている人はみなそうです。W3C のアクセシビリティ指針である WCAG 2.2 は、これをコントラスト比で測ります。1 対 1(差がない)から 21 対 1(白地に黒)までです。達成基準 1.4.3 は、ふつうの文字に少なくとも 4.5 対 1、大きな文字に 3 対 1 を求めています。WCAG の言う大きな文字とは、18 ポイント以上、または太字で 14 ポイント以上の文字です。白地に濃い灰色 #767676 は 4.54 対 1 でぎりぎり合格し、#777777 は 4.48 でぎりぎり不合格です。ブラウザーの開発者ツールで文字の要素を調べるとコントラスト比が表示されるので、勘で決める必要はありません。

また、色だけで情報を伝えてはいけません。エラーを枠線を赤くするだけで示すフォームは、赤が見えにくい人には伝わりません。メッセージやアイコンもそえましょう。

絶対単位と相対単位

長さには単位が必要です(ゼロだけは例外)。px は CSS ピクセルで、固定の単位です。高密度の画面では CSS の 1 ピクセルが物理的なピクセルいくつ分にもなるので、目に見える大きさはだいたい同じに保たれます。相対単位はほかの何かに合わせて大きさが変わります。em はその要素自身のフォントサイズが基準なので、20 ピクセルの文字に padding: 0.5em とすると 10 ピクセルになります。rem はルート(html)のフォントサイズが基準です。読者が変えていなければブラウザーでは 16 ピクセルなので、1.25rem はふつう 20 ピクセルです。% は親が基準で、たいていは親の幅です。vw と vh はビューポートの幅と高さの100分の1、ch は今のフォントの数字ゼロのおよその幅です。

どれを使えばよいでしょうか。文字の大きさを rem で決めると、読者の設定が生かされます。ブラウザーで文字を大きくした人には、rem で決めたものがすべていっしょに大きくなりますが、px で固定した文字は大きくならないことがあります。em で決めたパディングは、囲んでいる文字といっしょに大きくなります。1 ピクセルの枠線のように、大きさを変えたくないものにはピクセルで十分です。

16進数の色#rrggbb、それぞれの組は 00 から ff
hsl()色相の角度、彩度 %、明度 %
アルファ不透明度。スラッシュのあとに書く:rgb(0 0 0 / 50%)
コントラスト比ふつうの文字 4.5:1、大きな文字 3:1(WCAG 1.4.3)
pxCSS ピクセル、固定
em要素のフォントサイズが基準
remルートのフォントサイズが基準(既定は 16px)
vw / vhビューポートの幅 / 高さの 1%
  1. #ff8000 の赤の量は、0 から 255 の目盛りでいくつですか?
  2. #ff8000 の緑の量はいくつですか?
  3. hsl() で、純粋な緑になる色相の角度はどれですか?
  4. WCAG 1.4.3 がふつうの文字に求める最低のコントラスト比はどれですか?
    • 4.5 to 1
    • 3 to 1
    • 7 to 1
  5. 白地の #777777 は 4.5 対 1 の条件に合格しますか?
    • いいえ、4.48 対 1 です
    • はい、4.54 対 1 です
    • はい、灰色ならどれでも合格です
  6. ルートのフォントサイズは 16px です。1.5rem は何ピクセルですか?
  7. ある要素が font-size: 20px で padding: 0.5em です。パディングは何ピクセルですか?
  8. ビューポートの幅は 400px です。50vw の幅はいくつですか?
  9. 文字の大きさを px ではなく rem で決めるのはなぜですか?
    • 読者のブラウザーの文字サイズ設定に従うから
    • いつも小さくなるから
    • 読み込みが速いから
  10. あるフォームは、エラーを赤い枠線だけで示しています。何が足りませんか?
    • メッセージかアイコン。色だけでは不十分だから
    • もっと濃い赤
    • 何も足りない
ポイント
  • 色の名前、16進数、rgb()、hsl()。スラッシュでアルファを加える。
  • WCAG 1.4.3:ふつうの文字は 4.5:1、大きな文字は 3:1。色だけに頼らない。
  • px は固定。em は要素のフォントサイズ、rem はルート(既定は 16px)に従う。
このコースの出典 (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

確認日: 2026-10-17