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

ドラッグでしか動かない範囲スライダー

価格スライダーのつまみがポインターイベントで動かすだけの要素のため、フォーカスできず、スクリーンリーダーが読める値もなく、ドラッグしないと設定できません。

WCAG 2.2
SC 2.1.1ASC 4.1.2ASC 2.5.7AA· 2.2 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <span class="thumb">
アクセシビリティの問題を示した図: ドラッグでしか動かない。
01

問題

ドラッグできない人とスクリーンリーダーの利用者は、価格の範囲を設定することも、今の範囲を知ることもできません。

02

試してみる

つまみをドラッグして価格の範囲を変えてください。次に、マウスを使わずにTabと矢印キーで試してください。

下の欄に、スクリーンリーダーの読み上げが出ます。ドラッグせずに価格を設定できますか?その値は聞こえますか?

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

価格$20 – $160

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

(Tabで価格の絞り込みへ移動)

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

03

修正方法

範囲の両端に名前と、読み上げられる値と、キーと1回のタップで設定する方法を持たせます。

  1. 1範囲の両端がフォーカスを受け、矢印キーで動く。
  2. 2両端に名前があり、値を単位付きで読み上げる。
  3. 3どの値も、ドラッグだけでなく、クリック、タップ、入力で設定できる。
修正前 ドラッグでしか動かない2つのつまみ
<div class="price">  <span class="price-label">価格</span>  <span class="price-values">$20 – $160</span>  <div class="track">    <span class="thumb" data-thumb="min" style="left: 10%"></span>    <span class="thumb" data-thumb="max" style="left: 80%"></span>  </div></div>
修正後

2つのHTML標準のrange入力

<fieldset class="price">  <legend>価格</legend>  <label for="price-min">最低</label>  <input type="range" id="price-min" min="0" max="200" step="10" value="20" aria-valuetext="$20">  <output for="price-min">$20</output>  <label for="price-max">最高</label>  <input type="range" id="price-max" min="0" max="200" step="10" value="160" aria-valuetext="$160">  <output for="price-max">$160</output></fieldset>

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

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

04

修正の確認

5つの確認

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

5件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。range入力や独自のスライダーの読み上げ方はスクリーンリーダーによって異なり、名前より先に値を読むものや、iOSのようにキーではなく上下のスワイプで動かすものもあります。色を選ぶスライダー、動画の再生位置、パネルの大きさを変えるスライダーには別の配慮が必要で、ここでは扱いません。「スライダー」が矢印の付いたスライドの列のことなら、キーボードやスクリーンリーダーで使えないカルーセルを参照してください。対象とする支援技術で、絞り込みの操作全体を確認してください。

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

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

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

再テストの進め方