本文へ移動
easeweb
ご相談
トピックを検索

ダークモードでコントラストが足りなくなる文字とアイコン

ダークテーマが背景と本文の色だけを切り替え、補足のグレーの文字とSVGアイコンはライトテーマの色のまま残すため、暗いカードの上でかすんでしまう

WCAG 2.2
SC 1.4.3AASC 1.4.11AA· 2.1 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり .meta { color: #6b7280; }
アクセシビリティの問題を示した図: 弱視:何分かかるの?
01

問題

ダークモードを使う弱視の利用者が、レシピの所要時間を読みづらく、保存と共有のボタンも見つけにくい

02

試してみる

ダークモードをオンにして、各レシピの所要時間を読み、保存ボタンを探してみましょう

スイッチを入れると、端末をダークモードにしたときの見た目になります。カードが暗くなっても、「25分 · 4人分」を読み、保存と共有のアイコンを見つけられますか?

問題あり 修正できますか?

問題ダークテーマが背景と文字の色だけを切り替える

ポロねぎのグリル、ロメスコソース添え

25分 · 4人分

レモンと大麦のリゾット

40分 · 2人分

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

文字とアイコンのすべての色に、ダーク用の値を持たせる

修正前
問題ダークテーマが背景と文字の色だけを切り替える
<article class="recipe">  <h2>ポロねぎのグリル、ロメスコソース添え</h2>  <p class="meta">25分 · 4人分</p>  <button type="button" class="icon-button" aria-label="保存">    <svg viewBox="0 0 24 24" aria-hidden="true">      <path fill="#374151" d="…"/>    </svg>  </button>  <button type="button" class="icon-button" aria-label="共有">    <svg viewBox="0 0 24 24" aria-hidden="true">      <path fill="#374151" d="…"/>    </svg>  </button></article>
問題点2点

ライトテーマでは基準を満たします。ダークテーマでは次のようになります。

  • 所要時間の行は #6b7280 のままで、暗いカードの上で3.04:1です。
  • 保存と共有のアイコンは fill="#374151" のままで、暗いカードの上で1.42:1です。
修正後

すべての色にテーマのトークンを使う

<article class="recipe">  <h2>ポロねぎのグリル、ロメスコソース添え</h2>  <p class="meta">25分 · 4人分</p>  <button type="button" class="icon-button" aria-label="保存">    <svg viewBox="0 0 24 24" aria-hidden="true">      <path fill="currentColor" d="…"/>    </svg>  </button>  <button type="button" class="icon-button" aria-label="共有">    <svg viewBox="0 0 24 24" aria-hidden="true">      <path fill="currentColor" d="…"/>    </svg>  </button></article>
修正の手順4ステップ
  1. コンポーネントが使う役割ごとにトークンを用意します。ここでは控えめな文字の --muted とアイコンの --icon で、値はライトテーマのものです。ライトテーマの見た目は変わりません。
  2. 2つのトークンをダークのブロックで定義し直し、暗いカードの上で測ります。グレーは #9ca3af(5.78:1)、アイコンは #d1d5db(9.96:1)に明るくなります。
  3. .meta の色を、16進数の値から var(--muted) に変えます。
  4. SVGのパスを fill="currentColor" にし、.icon-button の色を --icon から取ります。アイコンはどちらのテーマでも、ボタンの色で描かれます。

これで修正前の例は直り、どちらのテーマでも1.4.3と1.4.11を満たします。ダーク版でも、控えめなグレーの行と柔らかいアイコンというデザインはそのままで、一段明るくなるだけです。

04

デザインの案

ダークテーマも、控えめなまま読みやすくできる

レシピサイトのダークテーマの描き方を6通り示します。それぞれを読み、Tabでリンクや入力欄に移動してみてください。3つはひと目で読め、3つは見分けにくくなっています。

デザインファイルで

  • ダーク版はページの色だけでなく画面ごとに描き、文字のスタイル、アイコン、入力欄の枠のそれぞれにダーク用の色を決める。
  • 各色の横に、そのテーマで置かれる面に対して測ったコントラスト比を書く。文字は最低4.5:1、アイコンと入力欄の枠は最低3:1。
  • 色には「控えめな文字」「アイコン」のように役割で名前を付け、どの名前にもライトとダークの値を持たせる。
  • ロゴとイラストも暗いページの上に置いて確認し、暗い版が見えなくなるところには明るい版を用意する。

合格

  • ほぼ黒の背景に、白に近い文字 #18181bの背景に、#e4e4e7のタイトル(13.96:1)と#a1a1aaの所要時間(6.91:1)を置きます。真っ黒に真っ白より柔らかく、どの行も4.5:1を大きく上回ります。
  • 明るいカードで奥行きを出す #0f172aの背景に#1e293bのカードを置き、影を使わずに奥行きを出します。#94a3b8の所要時間は、比率が最も低くなるカードの上で測ります。ページの上では6.96:1、カードの上では5.71:1です。
  • 付け合わせは ロメスコソースのレシピがおすすめです。

    ダークでは一段明るいアクセント 白の上で#2563eb(5.17:1)のリンクを、#1f2937のカードの上では#60a5fa(5.77:1)にします。ブランドの青に見えるまま、下線も残します。

不合格

  • 白40%の所要時間WCAG 1.4.3 不透明度40%の白は、どの暗い面の上でも柔らかく見えますが、#18181bの上では#747476になり、3.80:1です。不透明な#a1a1aaなら、同じ控えめな見た目のまま6.91:1になります。
  • 付け合わせは ロメスコソースのレシピがおすすめです。

    ライトテーマの青のままWCAG 1.4.3 #2563ebは白の上では5.17:1で基準を満たしますが、#1f2937のカードの上では2.84:1です。リンクは青いままですが、読みにくくなります。
  • 淡い塗りだけの検索欄WCAG 1.4.11 #18181bの背景の上の#27272aの塗りは1.19:1で、欄の境目が見分けられません。#71717aの枠(3.67:1)を付ければ、同じ柔らかい塗りのまま欄が分かります。
05

修正の確認

5項目、マウス不要

確認方法: ダークモード、コントラストの測定、拡大表示

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。テーマのトークンや共通のコンポーネントのスタイルを変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。色の値とトークン名は例のため、実際の配色を実際の背景で測定してください。ライトテーマでのコントラスト比は、ブランドカラーや写真の上でコントラストが足りない文字とコントラストが足りない入力欄・アイコン・フォーカス枠で扱います。Windowsのコントラスト テーマは、サイトの色を利用者が選んだ色に置き換えるもので、別の問題です。ハイコントラストモードで消えるフォーカス・アイコン・選択状態で扱います。必要とする人と一緒に、両方のテーマでページ全体を確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

EaseWebのサービス

修正した問題を、次のリリースで再発させない

このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。

サービス内容を見る