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

ドラッグでしか動かせないか、動かしても何も伝えない並べ替えリスト

順位を付けるリストが、行のつまみをドラッグしないと並べ替えられません。または、「上へ移動」「下へ移動」のボタンで行は動いても、どこへ移ったかを何も伝えません。

WCAG 2.2
SC 2.1.1ASC 2.5.7AA· 2.2 で追加SC 4.1.3AA· 2.1 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <li draggable="true">
アクセシビリティの問題を示した図: 手の操作:これ、どうやって上に動かすの?
01

問題

ドラッグできない人は順番をまったく変えられず、ボタンで行を動かすスクリーンリーダーの利用者は、どこへ移ったか分かりません。

02

試してみる

「配送の速さ」を先頭にしてください。ドラッグしてから、マウスを使わずにTabで試してください。

スクリーンリーダーが読み上げる内容が下の欄に表示されます。問題1では、ドラッグせずに行を動かせますか?問題2では「上へ移動」を押してください。行の移動先は伝わりますか?

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

注文するときに大切なものの順位

  1. 価格
  2. 配送の速さ
  3. 返品のしやすさ
  4. レビュー

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

(Tabで行へ移動するか、ドラッグしてください)

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

03

修正方法

ドラッグは残し、押すだけで各行を動かせる操作要素を加え、行の新しい位置をステータス領域で伝えます。

  1. 1ドラッグせず、クリック、タップ、キー操作1回ずつで、どの行も上下に動かせる。
  2. 2移動のたびに、項目と新しい位置を、フォーカスを動かさずに1回伝える。
  3. 3ドラッグは近道として残し、順番を変える唯一の方法にはしない。
修正前

ドラッグでしか動かない行

<h2 id="rank-title">注文するときに大切なものの順位</h2><ol id="ranking" aria-labelledby="rank-title">  <li draggable="true" data-item="speed">    <svg class="grip" aria-hidden="true">…</svg>    <span id="item-speed">配送の速さ</span>  </li>  …</ol>
修正後

移動のたびに伝える「上へ移動」「下へ移動」

<h2 id="rank-title">注文するときに大切なものの順位</h2><ol id="ranking" aria-labelledby="rank-title">  <li draggable="true" data-item="speed">    <svg class="grip" aria-hidden="true">…</svg>    <span id="item-speed">配送の速さ</span>    <button type="button" data-move="-1" aria-describedby="item-speed">上へ移動</button>    <button type="button" data-move="1" aria-describedby="item-speed">下へ移動</button>  </li>  …</ol><p id="rank-status" role="status"></p>

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

04

デザインの案

順位のリストは、すっきりしたままでもドラッグなしで動かせます。

同じ順位の質問を6通りに描きました。クリックで試してから、マウスを使わずにTabでも試してください。4つは1回ずつ押すだけで行が動き、移動先を伝えます。2つは、ポインターを押さえたままでないと動きません。

デザインファイルで

  • どの行の移動用の操作も、ホバーや長押しの後だけでなく、何もしていない状態で描く。
  • 移動を知らせる1行をリストの下に描く。たとえば「配送の速さを3件中1番目に移動しました。」
  • リストの両端を描く。先頭の行の「上へ移動」は薄くしても残し、押したときに伝える言葉も書く。
  • 移動用の操作それぞれにフォーカスの枠を付け、開くメニューや番号も描く。
  • スマートフォンのレイアウトでも移動用の操作をすべて表示し、どれも最小24 × 24ピクセルで描く。

合格

    1. 価格
    2. 配送の速さ
    3. 返品のしやすさ

    移動メニューを開くつまみ 6つの点のつまみはデザインどおりの位置にありますが、32pxのボタンです。クリック、タップ、Enterで「先頭へ」「上へ」「下へ」「末尾へ」のメニューが開き、ドラッグもこれまでどおり使えます。何もしていないときの見た目は描いたとおりです。デザインファイルには、つまみのフォーカスの枠と、開いたメニューを描きます。
    1. 価格
    2. 配送の速さ
    3. 返品のしやすさ

    押して変える順位の番号 各行の先頭の番号が、直径28pxの丸いボタンです。押すと横に1〜3の番号が並び、どの行も2回押すだけで好きな順位へ移せます。番号そのものが答えになる順位の質問に向いていて、行の右端には何も増えません。
  • 大切な順にタップしてください。

    大切な順にタップ 並べ替えるリスト自体がありません。大切な順に選択肢をタップすると、それぞれに番号のバッジが付き、もう一度タップすると外れます。どの操作も、高さ44pxのボタンを1回押すだけで、スマートフォンでも同じように使えます。選択肢の下の1行が、付いた順位を伝えます。
    1. 価格
    2. 配送の速さ
    3. 返品のしやすさ

    各行に小さな上下の矢印 各行の右端に、28 × 28ピクセルの山形の矢印を上下に重ねます。言葉のボタンより控えめです。表示する言葉がないので、名前は「上へ移動:配送の速さ」のように操作から始め、音声操作でもそのまま言えるようにします。先頭の行の上矢印は薄くしても残し、押すと、すでに先頭であることを伝えます。

不合格

    1. 価格
    2. 配送の速さ
    3. 返品のしやすさ
    ホバーで現れるつまみWCAG 2.5.7 最もすっきりしたリストです。行にポインターを重ねたときだけつまみが現れ、行を動かす方法はそれをドラッグすることだけです。Tabで押せるものはなく、スマートフォンではつまみが表示されません。「移動メニューを開くつまみ」のように、メニューを開くボタンとして描きます。
  • 行を長押しすると動かせます。

    1. 価格
    2. 配送の速さ
    3. 返品のしやすさ
    長押しで持ち上げるWCAG 2.5.7 スマートフォンのアプリでおなじみの形です。行を0.5秒押さえて持ち上がったら、そのままドラッグして置きます。動かす方法は長押しとドラッグだけなので、キーボード、スイッチ、音声操作の利用者は動かせず、そもそも動かせることを示すものが行にありません。
05

修正の確認

5つの確認

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

5件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。入れ子のリスト、項目の階層を変えられるツリー、スクロールすると項目が増えるリストには、それぞれ別の配慮が必要で、ここでは扱いません。並べ替えのライブラリーによって、フォーカス、キー、読み上げの扱いは異なります。利用者が使う支援技術で、操作全体を確認してください。

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

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

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

再テストの進め方