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

マウスでしか切り替えも拡大もできない商品写真ギャラリー

商品写真のサムネイルがクリックしか受け付けず、拡大もマウスの動きに頼っているうえ、ボタンにしてもどの写真を表示中かが伝わらない

WCAG 2.2
SC 2.1.1ASC 4.1.2A
必須とする規格
JIS X 8341-3
問題あり <img class="thumb" src="mug-back-small.jpg" alt="">
アクセシビリティの問題を示した図: 手の操作:マグの背面はどう見るの?
01

問題

キーボード利用者は1枚目以外の写真も写真の細部も見られず、スクリーンリーダーの利用者には、各サムネイルが何の写真か、どの写真を表示中かが伝わらない

02

試してみる

マグの背面にある小さな印字を、まずマウスで、次にTabキーだけで読んでみましょう

  • 問題1: 最後のサムネイルをクリックし、写真の上でマウスを動かします。次にマウスから手を離してTabキーを押すと、フォーカスはサムネイルを飛ばして「カートに入れる」へ移ります。

  • 問題2: Tabキーでサムネイルに届き、EnterキーやSpaceキーで写真が変わります。下の欄を見ると、どれも「ボタン」としか読まれず、表示中とも読まれません。拡大はマウスの動きに頼ったままです。

  • 修正を適用します。 Tabキーで最後のサムネイルへ移動してEnterキーを押し、修正で加わった操作を使ってください。写真が大きくなったら、矢印キーで動かせます。

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

ホーローマグ

$24

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

(Tabでギャラリーへ移動するか、サムネイルをクリック)

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

03

修正方法

キーボードで写真を切り替え、拡大できるようにする

修正前

マウスでしか使えないサムネイルと拡大

<div class="gallery">  <div class="photo-frame">    <img class="photo" src="mug-front.jpg" alt="マグの正面">  </div>  <div class="thumbs">    <img class="thumb is-current" src="mug-front-small.jpg" alt="" data-photo="mug-front.jpg" data-alt="マグの正面">    <img class="thumb" src="mug-side-small.jpg" alt="" data-photo="mug-side.jpg" data-alt="マグの側面">    <img class="thumb" src="mug-back-small.jpg" alt="" data-photo="mug-back.jpg" data-alt="マグの背面">  </div></div>
問題点5点
  • サムネイルは click にしか反応しない画像なので、Tabで止まらず、キーボードでは別の写真を表示できません。
  • 役割がなく、altも空です。
  • 表示中のサムネイルの印は is-current クラスだけで、枠線を描いているにすぎません。
  • 拡大は mousemove でしか始まらないので、キーボードからは細部を見られません。
  • 新しい写真に変わっても、スクリーンリーダーには何も読まれません。
修正後

拡大ボタンとスクロールできる枠

<div class="gallery">  <button type="button" class="zoom">拡大</button>  <div class="photo-frame" role="region" aria-label="拡大した写真">    <img class="photo" src="mug-front.jpg" alt="マグの正面">  </div>  <p class="photo-count" aria-live="polite">写真3枚中1枚目:マグの正面</p>  <div class="thumbs">    <button type="button" class="thumb" aria-current="true" data-photo="mug-front.jpg">      <img src="mug-front-small.jpg" alt="マグの正面">    </button>    <button type="button" class="thumb" data-photo="mug-side.jpg">      <img src="mug-side-small.jpg" alt="マグの側面">    </button>    <button type="button" class="thumb" data-photo="mug-back.jpg">      <img src="mug-back-small.jpg" alt="マグの背面">    </button>  </div></div>
修正の手順7ステップ
  1. 各サムネイルを、画像を中に入れた本物のボタンにします。Tabで届き、EnterキーとSpaceキーでも押せるので、キー操作の処理を書く必要はありません。
  2. 各サムネイルのaltに、どの写真かを書きます。ボタンの中身が画像だけなら、このテキストがボタンの名前になります。
  3. クリック処理の中で、表示中のサムネイルに aria-current="true" を付けてほかから外し、スクリーンリーダーが「現在の項目」と読めるようにします。
  4. 枠線を [aria-current='true'] から描きます。これで見た目と読み上げが食い違いません。
  5. 必須ではありませんが、どの写真を表示中かを控えめなライブリージョンで伝えます。フォーカスを動かさなくても、押した結果が耳で分かります。
  6. 「拡大」ボタンを足します。スクロールできる枠の中で写真の幅を3倍にし、枠をTabの移動先にするので、矢印キーで写真の中を動けます。Tabで先に届くよう、ボタンは枠より前に置きます。
  7. マウスの動きに合わせた拡大は近道として残し、ボタンで拡大している間は止めます。

これで修正前の2つの問題がどちらも解消し、2.1.1と4.1.2を満たします。幅を3倍にしても細部が鮮明なように、十分に大きな画像ファイルを用意してください。

04

デザインの案

ギャラリーの形は、小さな写真の列だけではない

マグのギャラリーを6通りに描きました。それぞれマウスで試してから、マウスを使わずにTabキーを押してみてください。4つはキーボードですべての写真を見られますが、2つはマウスでしか見られません。

デザインファイルで

  • 表示中の印は色や薄さだけでなく、線、枠、塗りつぶしたピルなどの形で描く。
  • 各サムネイルの横に「マグの背面」のように何の写真かを書く。スクリーンリーダーが読む名前になる。
  • ポインターを追う拡大鏡があっても、マウスを使わない人のための拡大ボタンやリンクを横に描く。
  • サムネイルにフォーカスの枠を描き、枠が切れないだけの余白をとる。
  • ホバーで現れる矢印は、キーボードでフォーカスしたときとタッチスクリーンでの見え方も描くか、常に表示する。

合格

  • すべての写真をページに並べる サムネイルをなくし、写真を大きく1枚、その下に2枚並べてページに置きます。切り替えるものも、表示中の印も要りません。各写真が大きなファイルへのリンクになり、キーボードから細部を見る手段にもなります。ページは長くなるので、「カートに入れる」ボタンは写真の横で見え続けるようにします。
  • 文字で選ぶピル 写真の下に「正面」「側面」「背面」のピルを並べます。小さな写真を見分けなくて済み、ピルの文字がそのままスクリーンリーダーの読む名前になります。表示中のピルは紺で塗りつぶします(白と#2d3a55で11.36:1)。ほかのピルは枠線だけなので、色合いの違いだけに頼りません。
  • 枚数を挟む左右の矢印 スマートフォンに写真の列を収める必要がありません。「2 / 3」を挟んで直径36pxの丸い矢印を2つ置きます。どの写真を表示中かを数字で示し、変わると控えめなライブリージョンで読み上げます。見たい写真へ直接は移動できず、順に送るしかないので、枚数の少ない商品に向いています。
  • 表示中に線を引いた縦のサムネイル 写真の横にサムネイルを縦に並べ、表示中のものの左端に4pxの紺の線を引きます(サムネイルの背景#f1f3f6に対して10.22:1)。ほかのサムネイルは薄くしないので、見分けやすいままです。スマートフォンでは写真の下に並べます。

不合格

  • マウスを載せるだけで変わる写真WCAG 2.1.1 マウスならクリックも要らず手軽です。しかし押すものがないので、Tabはサムネイルを飛ばし、キーボードでは最初の写真から変えられません。
  • ホバーで現れる矢印WCAG 2.1.1 マウスを載せるまで写真がすっきり見えます。矢印は本物のボタンですが、隠れている間はフォーカスを受けないので、Tabは素通りし、キーボードではほかの写真を見られません。フォーカスでも表示するか、常に表示してください。
05

修正の確認

4項目、マウス不要

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

4件中0件を確認済み

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

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。扱うのは、サムネイルと拡大に届くか、サムネイルが何を伝えるかです。矢印とドットで切り替えるスライド形式のギャラリーは、キーボードやスクリーンリーダーで使えないカルーセルで扱います。ライトボックスのフォーカスと閉じ方については、背後にフォーカスが残るモーダルを参照してください。ドラッグ、ピンチ、傾きで回したり拡大したりする写真の表示は、ボタンで代われないピンチ・ドラッグ・傾きのジェスチャーで扱います。各写真のaltに何を書くかは、写真によって変わります。このガイドで求めるのは、サムネイルのaltで写真を区別できることと、写真が変わったら大きな写真のaltも合わせることだけです。

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

EaseWebのサービス

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

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

サービス内容を見る