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

キーボードで操作できないカスタムチェックボックス

登録フォームが角の丸い独自のチェックボックスを描き、本物のチェックボックスをdisplay: noneで隠しているため、マウスではチェックできても、Tab、Space、スクリーンリーダーには見つかりません。

WCAG 2.2
SC 2.1.1ASC 4.1.2ASC 1.3.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり input[type="checkbox"] { display: none; }
アクセシビリティの問題を示した図: 手の操作:どうやってチェックするの?
01

問題

キーボード、スイッチ、スクリーンリーダーの利用者は、ボックスに到達することもチェックすることもできないため、規約に同意できず、アカウントを作れません。

02

試してみる

Tabで登録フォームを移動し、Spaceで各ボックスをチェックしてから、「アカウントを作成」でEnterを押してください。

マウスなら、どちらのボックスもチェックできます。下の欄に、フォーカスの移動に合わせたスクリーンリーダーの読み上げが出ます。マウスを使わずに規約に同意できますか?

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

問題Display: noneで隠したチェックボックス

新規登録

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

(Tabでフォームを移動)

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

03

修正方法

本物のinputをページに残し、その上に描くか、ボックスの上に重ねるか、accent-colorで色を付けます。

  1. 1本物のチェックボックスやラジオボタンを、ページ、Tabの順序、アクセシビリティツリーに残す。
  2. 2チェックマークとフォーカスの枠は、input自体のチェックとフォーカスの状態から描く。
  3. 3チェックしたことを色だけでなく、チェックマークや点で示す。
修正前 Display: noneで隠したチェックボックス
<form action="/sign-up" method="post">  …  <label class="check">    <input type="checkbox" name="offers">    <span class="box"></span>    お得な情報をメールで受け取る  </label>  <label class="check">    <input type="checkbox" name="terms" required>    <span class="box"></span>    利用規約に同意する  </label>  <button type="submit">アカウントを作成</button></form>
修正後

Input自体に描いたボックス

<form action="/sign-up" method="post">  …  <label class="check">    <input type="checkbox" name="offers">    お得な情報をメールで受け取る  </label>  <label class="check">    <input type="checkbox" name="terms" required>    利用規約に同意する  </label>  <button type="submit">アカウントを作成</button></form>

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

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得、または全ガイドをコーディングエージェントで使う。

04

デザインの案

チェックボックスはどんな見た目にもできます。本物が残っていれば。

サイトでよく見るチェックボックスとラジオボタンの描き方を6通り並べました。クリックしてから、マウスを使わずにTab、Space、矢印キーで試してください。4つは適合します。1つはTabで飛ばされ、1つは選択を淡い色だけで示します。

デザインファイルで

  • 描いたボックス、チップ、色見本、カードには、チェックボックスかラジオボタンかを書く。本物を使って作られるように。
  • すべての選択肢を、Tabで到達したときのフォーカスの枠付きで描く。
  • チェックや選択は、色に加えてチェックマーク、点、輪で示し、白黒でも確認する。
  • ボックスの枠線とページとのコントラスト比を横に書く。最低3:1。例の灰色の枠線は4.83:1。
  • Windowsのハイコントラストモードでの選択肢を描く。塗りが消えても、チェックマーク、点、枠線が見えるように。

合格

  • チェックマークが付く絞り込みチップ オフは#6b7280の枠線のピル(4.83:1)、オンは紫の枠線と淡い塗りに、言葉の前のチェックマークが付きます。文字は#3730a3で、塗りに対して8.88:1です。色がなくてもチェックマークでオンと分かり、チップ全体がチェックボックスなので、どこをクリック、タップしても、Spaceでも切り替わります。
  • 配送方法
    ラジオボタンが見える配送方法のカード 各カードが一つのラジオボタンで、どこをクリックしても選べます。角の円は残し、4.83:1の枠線の中に、選んだときは紫の点が入るので、淡い塗りがなくても選択が分かります。選んだカードの枠線も紫になります。Tabはグループに一度だけ止まり、矢印キーでカードの間を移動します。
  • カラー:セージ
    輪とチェックマークの付く色見本 ラジオボタンとして作った丸い色見本で、選んだものは#111827の輪(白に対して17.74:1)で囲まれ、中にチェックマークが付き、「カラー」の後に色の名前が出ます。色を見分けにくい人は名前で読み取れ、矢印キーで色の間を移動できます。
  • チェックマークが描かれる丸いToDoのチェック チェックすると円が紫になり、白いチェックマークが0.3秒で描かれて止まり、タスクに#6b7280の取り消し線が付きます。白黒でもチェックマークと線で完了と分かります。動きを減らす設定では、チェックマークはそのまま現れます。

不合格

  • サイズ
    ラジオボタンを隠したサイズのタイルWCAG 2.1.1 S、M、L、XLを枠線のタイルにし、選んだものを#111827で塗ります。クリックではサイズを選べますが、その下のラジオボタンが隠れているため、Tabは4つとも素通りし、スクリーンリーダーには文字しか聞こえません。Tabで試してください。
  • プラン
    淡い色だけで選択を示すプランのカードWCAG 1.4.1 ラジオボタンは本物なのでキーボードでは使えますが、何も描かれていません。選んだプランは#eef2ffの淡い塗りだけで示され、隣の白いカードとの差は1.12:1です。白黒、ハイコントラストモード、白っぽく見える画面では、二つのカードが同じに見えます。
05

修正の確認

5つの確認

確認方法: キーボード、スクリーンリーダー、マウス、強制配色、タッチ

5件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。CSSは最小限の例なので、ボックスの大きさ、枠線とフォーカスの枠のコントラストを実際の配色で確認してください。ARIAで作り直して状態を誤って伝えるチェックボックスは別の問題で、読み上げを誤らせる、無効なARIAで扱います。設問が結び付いていない選択肢のグループは設問名がないラジオボタンとチェックボックスのグループで、スイッチとして描いたチェックボックスはオンかオフかが伝わらないトグルスイッチで扱います。キーボード、スクリーンリーダー、コントラスト テーマで、フォーム全体を確認してください。

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

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方