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

選んだ条件も一覧の変化も伝わらない絞り込みリンク

商品一覧の上のカテゴリーリンクは、押すとページを読み込まずに一覧だけを描き替え、選んだリンクもクラスで塗りつぶすだけなので、スクリーンリーダーには一覧の変化も選んだ条件も伝わらない

WCAG 2.2
SC 4.1.2A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり link.classList.add('is-active');
アクセシビリティの問題を示した図: 全盲:何か変わった?
01

問題

スクリーンリーダーの利用者が絞り込みを押しても何も聞こえず、一覧が変わったことも、どれを選んだかも分からない

02

試してみる

絞り込みを選んで、何が読み上げられるか聞いてみましょう

Tabキーで「マグ」まで移動し、Enterキーを押します。下の欄に、スクリーンリーダーの読み上げが出ます。押したあとは、もう一度Tabキーで絞り込みをたどってください。選んだものが「現在のページ」と読まれるか、変化が読まれるかを確かめます。

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

問題その場で描き替え、クラスで目印を付けた絞り込みリンク

テーブルウェア

  • ホーローのマグ
  • ストーンウェアのマグ
  • 取り皿
  • ディナープレート
  • パスタボウル
  • シリアルボウル

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

(絞り込みまでTabキーで移動し、Enterキーを押してください)

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

03

修正方法

選んだ絞り込みを示し、今の表示内容を伝える

修正前
問題その場で描き替え、クラスで目印を付けた絞り込みリンク
<title>マグ | テーブルウェア</title>…<ul class="filters">  <li>    <a href="/shop">すべて</a>  </li>  <li>    <a href="/shop?category=mugs" class="is-active">マグ</a>  </li>  <li>    <a href="/shop?category=plates">皿</a>  </li>  <li>    <a href="/shop?category=bowls">ボウル</a>  </li></ul><ul id="products">…</ul>
問題点2点
  • is-active クラスは「マグ」を塗りつぶすだけです。スクリーンリーダーは、ほかの3つと同じく「マグ、リンク」と読みます。
  • スクリプトがページの読み込みを止めて一覧をその場で描き替えるため、押したあとに何も読まれません。新しいページのタイトルも、メッセージもありません。
修正後

選んだリンクに目印を付け、変化を伝える

<title>マグ | テーブルウェア</title>…<ul class="filters">  <li>    <a href="/shop">すべて</a>  </li>  <li>    <a href="/shop?category=mugs" aria-current="page">マグ</a>  </li>  <li>    <a href="/shop?category=plates">皿</a>  </li>  <li>    <a href="/shop?category=bowls">ボウル</a>  </li></ul><p id="filter-status" role="status" class="visually-hidden"></p><ul id="products">…</ul>
修正の手順5ステップ
  1. サーバーが返すマークアップで、クラスを aria-current="page" に置き換えます。このリンクのアドレスは表示中のページなので、スクリーンリーダーは「マグ、現在のページ、リンク」のように現在のページとして読みます。
  2. 塗りつぶしの見た目を [aria-current="page"] から描きます。選ばれて見えるリンクと、読み上げで選ばれているリンクが、必ず同じになります。
  3. 絞り込みの行の下に、視覚的に隠した空の role="status" 領域を置きます。最初からページにあり、描き替えられる一覧の外にあるため、ここへの書き込みは、ブラウザーが変化として伝えます。
  4. 新しい一覧がそろったら、押されたリンクへ aria-current を移し、領域に「表示中:マグ」と書き込みます。スクリーンリーダーは、読み上げ中の内容を読み終えてからこのメッセージを読み、フォーカスはリンクに残るので、続けて別の絞り込みを試せます。
  5. 押されたリンクがすでに現在のものなら何もしません。効いている絞り込みの一覧を、もう一度取得することはありません。

これで修正前の例は直り、4.1.2を満たします。選んだ絞り込みがコードで示され、変化は起きたときに伝えられます。4.1.2が求めるのはこの目印ですが、フォーカスのあるリンクで aria-current が変わったことをスクリーンリーダーが読むかどうかは、ここでは確認していないため、メッセージで言葉にして伝えます。

04

デザインの案

選んだ絞り込みは、どんな見た目でも読み上げで伝えられる

絞り込みの行の描き方を、ガイドと同じ色でさらに4通り示します。絞り込みをクリックすると選択が移ります。Tabキーで行をたどってみてください。3つはスクリーンリーダーが読み取れる場所で選択を示し、1つは動きでしか変化を見せません。

デザインファイルで

  • 選んだ絞り込みを独立した状態として描く。塗りに加えて、チェックマーク、バー、太字のいずれかで示す。Windowsのコントラスト テーマでは塗りが消えるため。
  • すべての絞り込みにホバーとフォーカスを描く。選んだものも含めて、どれもリンクのままだから。
  • 押すたびにページが伝える言葉を、行の横に書いておく。読み上げだけで画面に出さない場合も書く。

合格

  • チェックマーク付きのチップ 選んだチップには、#1d1d1fのチェックマークと太字が付きます。淡い#e6eef8の塗りに対して14.39:1です。塗りはページに対して1.17:1しかなく飾りにすぎません。選択を示すのはチェックマークと太さで、どちらもコントラスト テーマで残ります。
  • タブのような下線の行 絞り込みを細い線の上に並べ、選んだものは太字にして、下に#1d1d1fの3ピクセルのバーを引きます(白に対して16.83:1)。ほかは#5f6368(6.05:1)ですが、選んだものの色との差は2.78:1しかないため、バーと太さで見分けます。見た目はタブでも、矢印キーを覚える必要のないリンクの行のままです。
  • 表示中:マグ

    ピルの下の「表示中」の行 ガイドと同じピルの下に、#5f6368(6.05:1)の行を置き、押すたびに「表示中:マグ」に変わります。スマートフォンで一覧までスクロールしなくても変化が見え、スクリーンリーダーが読むのもこの行です。

不合格

    • ホーローのマグ
    • ストーンウェアのマグ
    並び替わるグリッドWCAG 4.1.2 タイルが0.4秒で新しい位置へ滑り込みます。変化を見せて止まる動きです。ただ、変化を伝えるのはこの動きだけです。塗りつぶしはクラスで描かれ、何も読み上げられないため、スクリーンリーダーには「マグ、リンク」と聞こえるだけで、変化はまったく伝わりません。
05

修正の確認

5項目、マウス不要

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

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。絞り込みのコンポーネント、一覧のテンプレート、ページのレイアウトを変更した際は、再度確認します。

スクリーンリーダーでの role="status"、aria-current="page"の読まれ方

制限

ライブリージョンの読み上げはスクリーンリーダーやブラウザーによって異なり、続けて押すと、politeのメッセージが読まれないこともあります。このガイドは、一つずつ条件を選ぶリンクが1行に並ぶ場合を扱います。いくつも同時にチェックして組み合わせる絞り込みは、多くの場合チェックボックスで作られ、その結果の伝え方は件数が読み上げられない検索・絞り込み結果で扱います。シングルページアプリケーションの画面全体を入れ替えるリンクは読み上げられないSPAの画面遷移で、サイトのメニューの現在のページは現在のページを見た目だけで示すナビゲーションで扱います。実際の絞り込みを、並べ替えやページ送りも含めて、利用者が使うスクリーンリーダーで確認してください。

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

EaseWebのサービス

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

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

サービス内容を見る