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

一部選択の状態が読み上げられない「すべて選択」チェックボックス

一部の行だけをチェックしたときに「すべて選択」のチェックボックスに出る横線はクラスで描いただけのため、スクリーンリーダーは「チェックなし」と読み上げてしまう

WCAG 2.2
SC 4.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり all.classList.toggle('partial', ticked > 0 && !all.checked);
アクセシビリティの問題を示した図: 全盲:チェックした請求書はある?
01

問題

一部の行がチェックされているのに、スクリーンリーダー利用者には「すべて選択」が「チェックなし」と読まれ、何かが選ばれていることが分からない

02

試してみる

請求書を2件チェックしてから「すべて選択」に戻り、どう読まれるか聞いてみましょう

Tabで3月に移動してSpace、Tabで4月に移動してSpaceを押し、Shift + Tabを2回押します。下の欄に、フォーカスの移動に合わせたスクリーンリーダーの読み上げが出ます。「すべて選択」で読まれる内容と、見えているボックスを比べてから、そこでSpaceを押してみてください。

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

問題クラスから描いた横線

請求書

スクリーンリーダーの読み上げ:

(Tabで一覧を移動)

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

03

修正方法

「すべて選択」にコード上の一部チェックの状態を持たせ、そこから横線を描く

  1. 1一部の行だけがチェックされているときは、indeterminate プロパティか aria-checked="mixed" で一部チェックの状態にする
  2. 2横線はクラスではなくその状態から、色だけに頼らない印として描く
  3. 3HTML標準のチェックボックスに aria-checked を付けない
修正前 クラスから描いた横線
<form action="/invoices/download" method="post">  <label class="check">    <input type="checkbox" id="select-all">    すべて選択  </label>  <ul class="invoices">    <li>      <label class="check">        <input type="checkbox" name="invoice" value="2026-03">        2026年3月      </label>    </li>    …  </ul>  <button type="submit">選択した請求書をダウンロード</button></form>
修正後

Indeterminate プロパティ

<form action="/invoices/download" method="post">  <label class="check">    <input type="checkbox" id="select-all">    すべて選択  </label>  <ul class="invoices">    <li>      <label class="check">        <input type="checkbox" name="invoice" value="2026-03">        2026年3月      </label>    </li>    …  </ul>  <button type="submit">選択した請求書をダウンロード</button></form>

この方法を選ぶ理由:まずHTMLの要素を使う

04

デザインの案

なし、一部、すべて。3つの状態に、それぞれの印を

一覧の上の「すべて選択」の描き方を4通り並べました。マウスで、またはTabとSpaceで行をチェックしたり外したりしてください。3つは「一部」を専用の印か言葉で示し、1つは淡い塗りだけで示します。

デザインファイルで

  • 「すべて選択」を、空、すべての行を選んだときのチェックマーク付き、一部だけのときの専用の印付きの3通りで描く。
  • 「一部」の印は横線や小さな四角などの形にし、淡い塗りだけにはしない。3つの状態を白黒でも確認する。
  • 各印と、その下の色とのコントラスト比を横に書く。最低3:1。例の白地の紫の横線は6.29:1。
  • 「すべて選択」の中間の状態は、別のスタイルではなく、コードで設定するチェックボックス自身の状態だと書き添える。
  • Windowsのコントラスト テーマでの3つの状態を描く。塗りが消えても、どの印も見えるように。

合格

  • 枠の中の小さな四角 一部を選ぶと、ボックスは白い塗りと#6b7280の枠線(4.83:1)のまま、中に紫の小さな四角が入ります(白に対して6.29:1)。すべて選ぶと紫に塗られ、チェックマークが付きます。形が3つとも違うので白黒でも状態が分かり、四角は枠線で描くため、コントラスト テーマでも残ります。
  • 枠だけのボックスに横線 塗りつぶしたボックスより軽い見た目です。一部を選ぶと枠線が紫になり、白地に紫の横線が入ります(6.29:1)。塗るのは、すべて選んだときだけです。なしと一部を見分けるのは色ではなく横線で、枠線で描くため、コントラスト テーマでも残ります。
  • 3件中2件を選択
    件数を示す選択バー 行を1つでも選ぶと、一覧の上の行が#eef2ffのバーに変わります。横線の付いたボックス、#3730a3の「3件中2件を選択」(塗りに対して8.88:1)、「解除」ボタンが並びます。何件かを言葉で伝え、「解除」で選択を一度に戻せます。

不合格

  • 淡い塗りで示す「一部」WCAG 1.4.1 すべて選ぶと紫のボックスにチェックマーク、一部では同じボックスが淡い#c7d2feになるだけで印はなく、空のボックスの白との差は1.49:1です。チェックボックスは「一部チェック」を伝えますが、画面では、白黒や、塗りが消えるコントラスト テーマで、一部となしが同じに見えます。
05

修正の確認

4項目、マウス不要

確認方法: スクリーンリーダー、キーボード、強制配色

4件中0件を確認済み

OS、ブラウザー、支援技術のバージョン、ビルド、日付、各手順の実際の結果を記録してください。一覧のコンポーネントやそのチェックボックスを変えたら、もう一度確認します。

制限

これは出発点となる実装例で、どの一覧でも動くことを保証するものではありません。ここで扱うのは「すべて選択」の状態です。キーボードでまったく届かないチェックボックスは「キーボードでもスクリーンリーダーでも使えないカスタムチェックボックス」で、選んだ選択肢が読み上げられない一覧は「選択が読まれず、チップをキーボードで消せない複数選択」で扱います。グループごとに「すべて選択」を持つ、入れ子のチェックボックスでは、どの階層にも同じ一部チェックの状態が必要です。利用者が使うスクリーンリーダーで、一覧全体を確認してください。

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

EaseWebのサービス

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

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

サービス内容を見る