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

キーボードで開けず、読み上げられないカスタムのドロップダウン

デザインに合わせてdivとリスト項目で作り直したドロップダウンが、クリックしか受け付けないか、クラスで描いた強調を動かすだけのため、キーボードでは選べず、スクリーンリーダーには役割も値も選択肢も伝わりません。

WCAG 2.2
SC 2.1.1ASC 4.1.2ASC 1.3.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <div class="select" tabindex="0">
アクセシビリティの問題を示した図: Mが強調されている。でも何も読まれない。
01

問題

キーボード利用者はドロップダウンを開くことも選ぶこともできず、スクリーンリーダーの利用者には役割も今の値も選択肢も伝わらないため、何を選んでいるのか分かりません。

02

試してみる

キーボードだけでサイズを選んでみてください。Tabで「サイズ」へ移動し、Enterで開き、下矢印キー、Enterの順に押します。

マウスを使わずにサイズを選べますか?問題1では「サイズ」にたどり着くこともできません。Tabキーが飛ばしてしまうことが、この問題です。代わりにクリックしてみてから、問題2に切り替えてください。移動や選択のたびのスクリーンリーダーの読み上げが下の欄に出ます。

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

コットンの定番Tシャツ

サイズ
サイズを選択

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

(Tabで「サイズ」へ移動)

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

03

修正方法

ドロップダウンを標準のselectにするか、役割、値、強調中の選択肢が支援技術に伝わり、selectと同じキーで動くコンボボックスにします。

  1. 1閉じたドロップダウンにTabキーで届き、名前、役割、値が読まれる。
  2. 2selectと同じキーで開き、選択肢を移動し、選べる。
  3. 3強調中の選択肢は、見た目だけでなくコードでも伝える。
修正前

クリックでしか開けないドロップダウン

<span id="size-label">サイズ</span><div class="select">  <div class="select-trigger">サイズを選択</div>  <ul class="select-options" hidden>    <li>S</li>    <li>M</li>    <li>L</li>    <li>XL</li>  </ul></div>
修正後

見た目を整えた標準のselect

<label for="size">サイズ</label><span class="select-box">  <select id="size" name="size">    <option value="">サイズを選択</option>    <option value="s">S</option>    <option value="m">M</option>    <option value="l">L</option>    <option value="xl">XL</option>  </select></span>

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

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

マウスを使わない5つの確認

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

5件中0件を確認済み

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

制限

これは一つだけを選ぶドロップダウンの出発点となる実装例で、複数の選択、グループ分けした選択肢、スクロールに合わせてサーバーから読み込む一覧には当てはまりません。実際の選択肢を使い、対応するブラウザーと支援技術で操作全体を確認してください。

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

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

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

再テストの進め方