このページの中身

役割で色を持つ

色に「赤」ではなく「エラー」と名前を付けておくと、テーマを変えても部品側は1行も変わりません。

色を値ではなく役割で持つトークンの3層構造と、ダークモードで定義側だけを差し替える仕組みの図
図を大きく見る
図の中身を文字で読む
  • 3層で持つと、テーマ切り替えが定義側だけで済む
  • 1. 値そのもの(プリミティブ) 2. 役割(セマンティック) 3. 部品(コンポーネント)
  • --amber-500: #a8804a --color-accent --button-bg
  • 参照してよいのは次の層だけ テーマで差し替えるのはここ 部品だけの例外を許す層
  • 同じ役割名のまま、明暗で値が入れ替わる
  • 明るいテーマ 暗いテーマ
  • 申し込む 戻る 申し込む 戻る
  • 本文の文字 本文の文字
  • 補助的な文字 補助的な文字
  • 部品側のコードは1行も変わらない。 純黒と純白は使わない。彩度も落とす。

ひと目で#

セマンティックカラー
「赤」ではなく「エラー」と名づけた色
ブランドカラー
識別のための色。長いあいだ変えない
アクセントカラー
もっとも強く、もっとも少ない面積で使う色。1色に固定する
ニュートラルカラー
地と文字。画面の面積の9割以上を占める
ダークモード
利用者の設定に応じた明暗の切り替え

使い分け#

こうしたい使う色
押せるものを見分けさせたいアクセント色。押せるものにだけ使う
エラー、警告、成功を伝えたいセマンティックカラーに、アイコンと文言を添える
ブランドを識別させたいブランドカラー。ロゴと大きな面
画面全体の空気を決めたいニュートラルに色相を数パーセント含ませる
暗いテーマに対応したい役割名はそのまま、定義側の値を差し替える

間違えやすいところ#

ダークモードの3点#

  1. 純黒を避ける。背景は #121212 前後、文字は純白より少し落とす
  2. 彩度を落とす。暗い背景では高彩度がにじむ
  3. 階層が逆転する。影ではなく、手前の面ほど明るくする
暗い地では影による立体感が見えないことと、手前の面ほど明るくして階層を作るやり方の比較図
図を大きく見る
図の中身を文字で読む
  • 暗い地の階層は、影ではなく明度で作る
  • ✕ 影で浮かせる ○ 手前の面ほど明るく
  • カードのつもり いちばん手前のカード
  • 地もカードも #121212 面が明るい=近い、と読める
  • 影は暗い地に沈む。カードの輪郭はどこにもない 地 #121212 → 面 #1e1e1e → 手前 #262626
  • 純黒と純白は使わない。背景は #121212 前後、文字は純白より少し落とす。
  • 彩度も落とす。明るい地の高彩度をそのまま持ち込むと、暗い地の上でにじむ。

直す例#

架空の案件を1つ例にとります。どこを見て、何をどう直すかを書きます。

例として、引き継いだ CSS に、警告の赤が3種類ありました。#c0392b が12箇所、#e74c3c が8箇所、red が3箇所。どれも同じ意味のつもりで書かれています。暗い表示に対応しようとした瞬間、2つは地に沈み、1つだけ残りました。値で色を管理していると、切り替える場所が散らばります。

役割名に寄せます。エラーは --color-danger、リンクは --color-accent-text、罫と図形は --color-accent。部品側は役割名だけを見て、16進数は :root と @media (prefers-color-scheme: dark) の2か所にしか置きません。名前が同じまま、値だけ入れ替わる状態にします。

明るい表示と暗い表示で、役割名は同じまま値だけが差し替わることを示した実画面
図を大きく見る

暗い側では反転させません。地は純黒ではなく #121212 前後、彩度は落とし、手前の面ほど明るくします。影は暗い地では見えないので、階層は明度で作ります。

確認する#

使えるパターン#

この話が要る場面#

このページが答えになる、現場の困り事です。困り事の側から探すと、同じ場所に着きます。

ダークモードで色が破綻する

色を反転させない。役割ごとの変数を2組持ち、暗い地では彩度を10〜20%落とす。

このコードで動いている見本です

ダークモードで影が効かない

暗い地では影が見えない。影の代わりに面の明度を上げて手前を表す。

このコードで動いている見本です

色の変数名をどう付けるか

値ではなく役割で持つ。--color-brand-500 ではなく --color-text-muted や --color-surface。

このコードで動いている見本です

状態(成功・警告・エラー)の色を決めたい

色だけで区別しない。アイコンか文言を必ず併用する。色は補助と考える。

このコードで動いている見本です

この場面のほかの困り事と、そのまま貼れる部品は色を決めるにまとめてある。逆引きには全188件。

役割を試す#

この値は作業台で決められます。和文の予約ページに載せて、幅と明暗を替えて確かめてから CSS を持ち帰る: 色と階段

地・文字・アクセント・エラーの4役割を選び、カード上で組み合わせを確かめます。

見出し

本文テキスト。地と文字のコントラストを確かめます。

入力内容を確認してください

この道具は JavaScript で動きます。

出典#

関連#

この資料は、Webサイトを作るときに引くためのものです。 何のために作ったか。作っているのは AK²Lab。