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

バッジしか変わらない「カートに入れる」ボタン

「カートに入れる」を押すと、ヘッダーにあるカートのバッジの数字が増えます。しかしバッジはライブリージョンの外にあり、ボタンもフォーカスを持ったまま名前が変わらないため、スクリーンリーダーは何も読み上げません。

WCAG 2.2
SC 4.1.3AA· 2.1 で追加
必須とする規格
EN 301 549(EU)
問題あり cartCount.textContent = cart.count;
アクセシビリティの問題を示した図: 全盲:カートに入った?
01

問題

スクリーンリーダーの利用者は「カートに入れる」を押しても何も聞こえず、商品が入ったか分からないため、もう一度押したり、ページを離れて確かめたりします。

02

試してみる

「カートに入れる」を押して、読み上げを聞いてください。

スクリーンリーダーが読み上げる内容が下の欄に表示されます。ショップの応答には少し時間がかかります。その間や、マグが入ったときに何か聞こえますか?素早く2回押して、バッジも見てください。

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

問題黙って変わるバッジ

ホーローマグ

$18

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

(「カートに入れる」を押してください)

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

03

修正方法

押す前からページにあるステータス領域に、何が起きたかを書き込みます。

  1. 1ステータス領域は最初からページに置き、言葉だけを変える。
  2. 2成功も失敗も、フォーカスを動かさず、ボタンも無効にせずに言葉で伝える。
  3. 3伝えるのは利用者の操作の結果だけ。押すたびに一度、ページの読み込み時には何も伝えない。
修正前 黙って変わるバッジ
<header>  <a href="/" class="logo">Larkfield</a>  <a href="/cart" class="cart">    <svg aria-hidden="true">…</svg>    <span class="visually-hidden">カート</span>    <span id="cart-count" class="badge">0</span>  </a></header><main>  <h1>ホーローマグ</h1>  <p class="price">$18</p>  <button type="button" id="add">カートに入れる</button></main>
修正後

ボタンのそばの確認の行

<header>  <a href="/" class="logo">Larkfield</a>  <a href="/cart" class="cart">    <svg aria-hidden="true">…</svg>    <span class="visually-hidden">カート</span>    <span id="cart-count" class="badge">0</span>  </a></header><main>  <h1>ホーローマグ</h1>  <p class="price">$18</p>  <button type="button" id="add">カートに入れる</button>  <p id="add-status" role="status"></p></main>

この方法を選ぶ理由:メッセージは対象のそばに出す

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

04

デザインの案

確認は、さりげなくても読み上げられるようにできます。

「カートに入れる」や「リンクをコピー」がうまくいったことを示す、4通りの描き方です。それぞれ押してみてください。2つは起きたことを言葉にしてスクリーンリーダーにも渡し、2つは絵だけで示します。

デザインファイルで

  • 画面にはチェックマークや数字、動く絵しか出ない場合でも、各操作の確認の文を書き添える。たとえば「ホーローマグを追加しました。カートの商品は1点です」。
  • ショップが応答するまでボタンに何を表示するかを、ラベルと同じ幅で、ボタンに見えるまま描く。
  • 成功のメッセージの隣に、失敗したときのメッセージも書く。
  • 確認の色の横にコントラスト比を書く。文字は最低4.5:1。

合格

  • ホーローマグ $18
    「追加しました」と変わるボタン ラベルが小さなスピナーと「追加中…」に、続いて淡い緑の地にチェックマークと「追加しました」(6.46:1)に2秒間変わります。幅は変えないので、周りがずれません。フォーカスのあるボタンのラベルの変化は、環境によっては読まれないため、同じ文を隠したステータスの行にも書き込みます。
  • ホーローマグ $18
    商品の写真が入ったトースト 下から暗い色の丸いトーストが上がり、マグの写真と白い文字の「ホーローマグを追加しました。カートの商品は1点です」(14.81:1)を6秒間表示します。何かを追加する前からページにあるステータスの領域の中に描くので、表示と同時に読み上げられます。

不合格

  • Larkfield カート 0 ホーローマグ $18
    写真がカートへ飛んでいくWCAG 4.1.3 写真の複製が0.5秒でカートのアイコンへ縮みながら飛び込み、アイコンの数字が弾みます。動きは変化を示して止まりますが、それが唯一の知らせで言葉がないため、スクリーンリーダーは何も読みません。動きを減らす設定では、数字が変わるだけです。
  • ホーローマグ $18 このマグを共有
    チェックマークに変わる「リンクをコピー」のアイコンWCAG 4.1.3 鎖のアイコンが2秒間チェックマークに変わり、元に戻ります。言葉が何もないため、スクリーンリーダーには何も聞こえず、チェックマークだけでは誰にとっても「コピーした」とは伝わりにくいものです。横のステータスの行に「リンクをコピーしました」と書き込み、コピーに失敗したときもそう伝えます。
05

修正の確認

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

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

4件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。ヘッダー、商品ページのテンプレート、カートのスクリプトを変更した際は、再度確認します。

制限

ライブリージョンの動きは、スクリーンリーダーやブラウザーによって異なります。特に、リンクの中の領域、移動した領域、ダイアログ内の領域では差が出ます。このパターンは、一つの商品ページの一つのボタンを扱っています。カートのボタン自体の名前は名前がないアイコンだけのボタンで、「カートに入れる」の隣の数量はボタンに名前がなく、数を入力できない数量ステッパーで扱っています。ニュースレターの登録のように、送信して結果を表示するフォームは別のトピックです。パネル、クイック追加ボタン、スマートフォン用のヘッダーを含めた実際のカートを、利用者が使うスクリーンリーダーで確認してください。

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

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

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

再テストの進め方