サイトアイコン IT & ライフハックブログ|学びと実践のためのアイデア集

ダークモードと高コントラスト対応のアクセシビリティ完全ガイド:配色設計・コントラスト検証・OS設定尊重・アイコン/画像・フォーカス可視まで(WCAG 2.1 AA)

understated elegance sleek rectangular sunglasses for modern style

Photo by GlassesShop GS on Pexels.com

ダークモードと高コントラスト対応のアクセシビリティ完全ガイド:配色設計・コントラスト検証・OS設定尊重・アイコン/画像・フォーカス可視まで(WCAG 2.1 AA)

概要サマリー(先に要点)

  • ダークモードは“おしゃれ”ではなく、眩しさ軽減・疲労軽減・光過敏への配慮として重要なアクセシビリティ施策ですの。
  • ただし暗い背景は、コントラストが足りないと一気に読めなくなります。鍵は ①文字コントラスト ②色の意味に頼らない ③非テキスト要素(境界・アイコン・フォーカス)の3:1 ④テーマ間で一貫した状態表現
  • OS設定(prefers-color-scheme / prefers-contrast)を尊重し、ユーザーが選んだ環境を上書きしないことが大切です。
  • 画像・アイコン・グラフは“テーマで破綻しやすい”代表選手。SVGのcurrentColor、デュアルアセット、背景板、輪郭線で対策します。
  • この記事には、すぐ使える 配色トークン例、CSSテンプレ、チェックリスト、5分スモークテストを収録しています。

対象読者(具体):UI/UXデザイナー、フロントエンドエンジニア、デザインシステム担当、広報/編集者(画像を扱う方)、QA/テスター、SaaS/業務システム開発者
アクセシビリティレベルWCAG 2.1 AA 準拠を目標(関連:1.4.3、1.4.11、1.4.1、2.4.7、2.1.1 ほか)


1. はじめに:ダークモードは“見やすさの選択肢”を増やす

暗い画面は、夜間や暗所での閲覧に向き、眩しさを減らしてくれます。光に敏感な方、片頭痛が起きやすい方、疲労時に白背景がつらい方には、ダークモードが大きな助けになりますの。
一方で、黒背景に薄いグレー文字、細いアイコン、淡い境界線……といった“雰囲気重視”のダークUIは、読めない・押せない・状態が分からない、という事故を生みがちです。
ダークモードをアクセシブルにするには、単に背景を黒くするのではなく、コントラスト、色の意味、状態表現、フォーカスをテーマとして再設計する必要があります。この記事では、その具体策を実務向けに解説しますね。


2. 基本原則:ダークでもライトでも“同じ理解”に着地させる

2.1 文字のコントラスト(1.4.3)

  • 通常文字:4.5:1 以上
  • 大きい文字:3:1 以上

ダーク背景で白文字を使うとコントラストは確保しやすいですが、#FFFFFFは“眩しさ”が強いこともあります。実務では、本文は少し落ち着いた白(例:#E9ECF1)にして、行間をわずかに広げると読み疲れが減りますの。

2.2 非テキスト要素(1.4.11)

  • ボタンの境界線
  • 入力欄の枠
  • アイコン
  • フォーカスリング
    これらは 3:1 以上が目安です。薄い境界線で“あるように見える”だけは危険です。

2.3 色だけで意味を伝えない(1.4.1)

ダークモードは特に、色の差が分かりにくくなりがちです。

  • エラー=赤だけ
  • 選択=青だけ
    ではなく、アイコン・太字・下線・形状で重ねましょう。

3. OS設定を尊重する:prefers-color-schemeprefers-contrast

3.1 prefers-color-scheme(ライト/ダーク)

:root{
  --bg:#ffffff;
  --fg:#222222;
  --muted:#555;
  --border:#c9d1d9;
  --link:#0b63f6;
  --focus:#ff9900;
}

@media (prefers-color-scheme: dark){
  :root{
    --bg:#0f1115;
    --fg:#e9ecf1;
    --muted:#a9b3c1;
    --border:#273142;
    --link:#58a6ff;
    --focus:#ffb020;
  }
}

body{ background:var(--bg); color:var(--fg); }
a{ color:var(--link); text-decoration: underline; }
:focus-visible{ outline:3px solid var(--focus); outline-offset:3px; }

3.2 prefers-contrast(高コントラスト)

高コントラスト設定の利用者には、フォーカスや境界線を強めると安心ですわ。

@media (prefers-contrast: more){
  :root{
    --border:#ffffff;
  }
  a{ text-decoration-thickness: .14em; }
  :focus-visible{ outline-width:4px; }
}

3.3 ユーザーの選択を上書きしない

サイト内トグル(ライト/ダーク切替)を提供する場合も、OS設定を無視して勝手に固定しないように。
おすすめは

  • 初回:OS設定に従う
  • 変更:ユーザーの明示選択を保存
    です。

4. 配色設計:トークンで破綻を防ぐ(デザインシステム連携)

ダークモードで事故が起きる最大の理由は、色が“値ベタ書き”で増殖し、状態ごとに統一されないことです。
そこで、色は「用途」でトークン化します。

4.1 最小トークンセット(例)

  • 背景:--bg / --surface
  • 文字:--fg / --muted
  • 枠:--border
  • リンク:--link
  • 状態:--danger / --success / --warning
  • フォーカス:--focus

4.2 状態色は“背景との組み合わせ”で設計

エラー色(赤)も、背景が暗いと沈んで見えたり、逆に鮮やかすぎて痛かったりします。

  • 背景(surface)上での見え方
  • テキストとして載せた場合
  • 枠線として使う場合
    をセットで確認しますの。

5. リンク・ボタン・フォーム:ダークで起きやすい事故と対策

5.1 リンク:色+下線で判別

ダーク背景だと、リンク色が本文色に溶けやすいです。下線は“最後の砦”ですの。

a{ text-decoration: underline; text-underline-offset:.2em; }
a:hover, a:focus-visible{ text-decoration-thickness:.14em; }

5.2 ボタン:境界と押下状態を明確に

  • 境界線や影だけに頼らない
  • hover/focus/active の差を 明度差+輪郭 で出す

5.3 入力欄:枠線の3:1とプレースホルダー

  • プレースホルダーは薄くなりがちなので、ラベルを必ず可視に
  • 入力欄は背景(surface)と境界(border)を明確に
  • エラーは色だけにせず、アイコン+文言で

6. 画像・アイコン・図表:テーマで壊れやすい要素の攻略

6.1 SVGは currentColor を活用

文字色に追随するアイコンは、テーマ切替に強いです。

<svg aria-hidden="true" width="20" height="20" fill="currentColor">…</svg>

6.2 画像の“黒が溶ける”問題

  • ロゴが黒1色
  • 図が黒線だけ
    はダーク背景で消えます。対策は
  • ダーク用ロゴを用意
  • 輪郭線を追加
  • 背景板(白の薄いカード)を敷く
    のいずれかですわ。

6.3 グラフは色以外の符号化を

ダークモードでは色の見分けが難しくなることもあります。

  • 線種(実線/破線)
  • マーカー形状(●▲◆)
  • ラベルを線の近くに
    で、テーマを超えて理解できるようにします。

7. フォーカス可視:ダークで見失いがちな“現在地”を守る

ダーク背景では、フォーカスリングの色選定が難しくなります。

  • 背景と十分な明度差
  • 画像や色面の上でも見える
  • 細すぎない(3px以上)
    を基本に、トークンで固定しましょう。
:focus-visible{
  outline:3px solid var(--focus);
  outline-offset:3px;
}

8. 高コントラストモード(Windows等)と強制色への備え

OSが強制的に色を置き換えるモードでは、意図した配色が崩れます。

  • 重要な情報を背景色だけに依存しない
  • 下線、枠線、アイコンの形状など“色以外”の情報を用意
    が効きますの。
    加えて、SVGやアイコンが消える場合があるので、重要アイコンはテキスト併用が安全です。

9. 5分スモークテスト:ダークモードの最小確認

  1. 本文・リンク・ボタン文字が読める(4.5:1目安)
  2. 境界線・アイコン・フォーカスリングが見える(3:1目安)
  3. リンクは色だけでなく下線で判別できる
  4. フォーカスがライト/ダーク両方で見える
  5. エラー・成功・選択状態が色だけに依存していない
  6. ロゴや重要画像が背景に溶けない
  7. グラフが色だけで識別されていない
  8. OS設定(prefers-color-scheme/contrast)で期待通り変わる
  9. 200%拡大でも破綻しない(リフロー)

10. 対象読者にとっての価値(具体)

  • 光過敏・片頭痛がある方:眩しさが減り、長時間でも利用しやすい。
  • 弱視・拡大利用者:高コントラストと明確な境界で、要素の判別が安定する。
  • 色覚多様性のある方:色だけに依存しない状態表現で、理解が揺れにくい。
  • キーボード利用者:フォーカスリングが常に見え、迷子にならない。
  • 運用チーム:トークン化で配色の破綻が減り、更新時の品質を守りやすい。

11. まとめ:暗い画面でも“同じ理解”へ導く

  1. ダークモードは眩しさ軽減のアクセシビリティ施策。雰囲気より可読性を優先。
  2. 文字4.5:1、非テキスト3:1を目安に、テーマごとに検証する。
  3. OS設定(prefers-color-scheme/contrast)を尊重し、ユーザーの選択を上書きしない。
  4. トークン化で配色・状態表現・フォーカスを標準化し、破綻を防ぐ。
  5. 画像・アイコン・グラフは壊れやすいので、currentColor・輪郭・背景板・形状の重複で守る。
  6. 5分スモークテストで、更新後も読みやすさと判別性を維持する。

ダークモードは、“選べる”ことそのものが優しさですわ。
その選択肢が、どんな人にも同じ意味で届くように、落ち着いた配色と確かなコントラストで支えていきましょうね。


参考リンク(一次情報)

モバイルバージョンを終了