コンテンツにスキップ

視認性を確保するための最小コントラスト比

このガイドラインが達成されないとどうなるか

Section titled “このガイドラインが達成されないとどうなるか”

結果的に、重要な情報が読み取れず、サービスの利用を断念することになります。

具体例:ECサイトでの困りごと

Dさんは軽度の弱視があり、特に薄い色のテキストが読みにくいです。 あるECサイトで商品の価格がグレーの薄い文字で表示されており、何度も目を細めて確認する必要がありました。 結局、疲労のため購入を断念してしまいました。

以下のデモでコントラスト比の違いを確認してください。

悪い例: コントラスト比が不十分

<div class="card-bad">
  <h3>商品タイトル</h3>
  <p class="price">¥1,980</p>
  <p class="desc">この商品の説明文です。薄い色で読みにくいです。</p>
  <input type="text" placeholder="検索キーワード" />
  <button disabled>購入不可</button>
</div>

良い例: 十分なコントラスト比を確保

<div class="card-good">
  <h3>商品タイトル</h3>
  <p class="price">¥1,980</p>
  <p class="desc">この商品の説明文です。しっかり読めます。</p>
  <input type="text" placeholder="検索キーワード" />
  <button disabled>購入不可</button>
</div>

最低限、すぐに取り組めること

Section titled “最低限、すぐに取り組めること”
  • デザインガイドラインに最小コントラスト比の要件を明記する
  • 通常テキスト:4.5:1以上(色の濃淡差がはっきり見えること。後述のツールで簡単に確認できます)
  • 大きなテキスト(24px以上、または18.67px以上の太字):3:1以上
  • カラーパレット作成時にコントラスト比を確認する
  • 背景色と前景色の組み合わせをドキュメント化する
  • プレースホルダーやdisabled状態も基準を満たすようにする

コントラスト比を満たす色の組み合わせ例

<div class="color-samples">
  <div class="sample" style="background: #fff; color: #333;">
    白背景 × #333<br>コントラスト比: 12.6:1 ✓
  </div>
  <div class="sample" style="background: #fff; color: #767676;">
    白背景 × #767676<br>コントラスト比: 4.5:1 ✓
  </div>
  <div class="sample" style="background: #1a73e8; color: #fff;">
    #1a73e8 × 白<br>コントラスト比: 4.5:1 ✓
  </div>
  <div class="sample" style="background: #000; color: #949494;">
    黒背景 × #949494<br>コントラスト比: 4.5:1 ✓
  </div>
</div>
  • CSSでカラー変数を使用し、一元管理する
  • コントラストチェッカーをCI/CDに組み込む
  • 背景画像の上にテキストを置く場合は、オーバーレイを使用する
背景画像上のテキストを読みやすくする方法
.hero {
position: relative;
background-image: url('hero.jpg');
}
.hero::before {
content: '';
position: absolute;
inset: 0;
background: rgba(0, 0, 0, 0.5); /* 半透明のオーバーレイ */
}
.hero-text {
position: relative;
color: white;
}
  • コントラストチェッカーで全ページを確認する(Chrome DevToolsで色をホバーするとOK/NGが出ます。WebAIMなどのツールでも可)
    • 数値の代わりに「薄い灰色文字と白背景など、読みにくくないか」を目視チェックし、迷ったらコントラストチェッカーで確認するのでも十分です
  • 実際のデバイスで様々な環境(明るい場所、暗い場所)でテストする
  • 弱視シミュレーションツールで確認する
  • ユーザーからのフィードバックを収集する
  • コントラストに関する問題を継続的に改善する

プレースホルダーのコントラストが低い

Section titled “プレースホルダーのコントラストが低い”
<div class="placeholder-demo">
  <label>悪い例(コントラスト比: 1.6:1)</label>
  <input type="text" class="bad" placeholder="メールアドレス" />

  <label>良い例(コントラスト比: 4.5:1)</label>
  <input type="text" class="good" placeholder="メールアドレス" />
</div>

背景画像の上にテキストがある

Section titled “背景画像の上にテキストがある”

背景画像は場所によって明るさが異なるため、テキストの可読性を低下させることがあります。

  1. 半透明のオーバーレイを使用する
  2. テキストに影を付ける
  3. テキスト背景にボックスを追加する
テキストを読みやすくする方法
/* 方法1: オーバーレイ */
.hero::before {
background: linear-gradient(rgba(0,0,0,0.5), rgba(0,0,0,0.5));
}
/* 方法2: テキストシャドウ */
.hero-text {
text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}
/* 方法3: 背景ボックス */
.hero-text {
background: rgba(0, 0, 0, 0.7);
padding: 8px 16px;
}

ダークモードでもコントラスト比を維持する必要があります。

ダークモードでのコントラスト確保
:root {
--text-primary: #333; /* 白背景で12.6:1 */
--text-secondary: #767676; /* 白背景で4.5:1 */
--bg-primary: #fff;
}
@media (prefers-color-scheme: dark) {
:root {
--text-primary: #f0f0f0; /* 黒背景で15:1 */
--text-secondary: #b0b0b0; /* 黒背景で7:1 */
--bg-primary: #1a1a1a;
}
}
テキストの種類最小コントラスト比(AA)推奨コントラスト比(AAA)
通常テキスト(24px未満)4.5:17:1
大きなテキスト(24px以上)3:14.5:1
太字テキスト(18.67px以上)3:14.5:1
  • WebAIM Contrast Checker - Webベースのコントラストチェッカー
  • Chrome DevTools: 要素の色をホバーするとコントラスト比が表示される
  • Figma: プラグイン「Contrast」「Stark」などで確認可能

よく使われる安全な色の組み合わせ

Section titled “よく使われる安全な色の組み合わせ”
コントラスト比を満たす色の組み合わせ
/* 白背景での使用 */
--text-on-white-primary: #333; /* 12.6:1 */
--text-on-white-secondary: #555; /* 7.5:1 */
--text-on-white-minimum: #767676; /* 4.5:1 */
/* 黒背景での使用 */
--text-on-black-primary: #fff; /* 21:1 */
--text-on-black-secondary: #ccc; /* 13.1:1 */
--text-on-black-minimum: #949494; /* 4.5:1 */