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

ホバーでしか現れないカードの操作ボタン

商品一覧の「保存」と「カートに入れる」が、ポインターをカードに重ねるまで隠れていて、ほかの方法では表示されません。

WCAG 2.2
SC 2.1.1ASC 1.4.13AA· 2.1 で追加
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり .card:hover .actions { visibility: visible; }
アクセシビリティの問題を示した図: 手の操作:どうやって保存するの?
01

問題

キーボード、スイッチ、スクリーンリーダー、タッチスクリーン、画面拡大鏡の利用者は、カードの操作を見つけられず、使えません。表示するのは、止まったポインターだけだからです。

02

試してみる

カードにポインターを重ねてから、マウスを使わずにTabキーで「保存」に移動してください。

一覧の下の欄に、フォーカスのある要素と、それが見えているかが出ます。マウスなしで「保存」と「カートに入れる」に届き、届いたときに見えていますか?

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

(Tabキーを押すか、カードにポインターを重ねてください)

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

03

修正方法

フォーカス時とタッチスクリーンでも操作を表示し、専用の場所に置きます。または、すべてのカードに常に表示します。

  1. 1ホバーで表示される操作は、カードかその操作にフォーカスがあるときも表示される。
  2. 2ホバーのない画面では、ポインターの状態に関係なく操作が表示される。
  3. 3表示される操作は専用の場所にあるか、Escapeでフォーカスを動かさずに隠せる。
修正前

カードにホバーするまで隠れた操作

<article class="card">  <a href="/tote"><img src="tote.jpg" alt="リネンのトート、ナチュラル">リネンのトート</a>  <p class="price">$48</p>  <div class="actions">    <button type="button">保存</button>    <button type="button">カートに入れる</button>  </div></article>
修正後

フォーカス時とタッチスクリーンでも表示し、専用の行に置く

この修正では HTML を追加しません。

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

04

デザインの案

操作は、隠さなくても控えめにできます。

同じカードの操作を5通りに描きました。カードにポインターを重ねてから、マウスを使わずにTabで移動してみてください。3つはどの使い方でもボタンが見え、2つはマウスにしか見えません。

合格

  • リネンのトート $48
    常に表示する枠線のボタン ガイドの2つ目の修正です。カードの文字色の小さなピル型ボタンで、高さは24ピクセル、ホバーとフォーカスで塗りつぶします。何も隠さないので、キーボードでもスマートフォンでも同じカードです。
  • リネンのトート $48
    控えめな文字のボタン、ホバーで下線 初期状態が最も静かな形です。#555555の文字だけで、白に対して7.45:1、ホバーかフォーカスで下線が付くまで枠もありません。押しやすさのため、高さと間隔は24ピクセル以上を保ちます。
  • リネンのトート $48
    ホバーでもフォーカスでも表示 ガイドの1つ目の修正です。行はポインターを待ちますが、Tabがカードに着いた時点で:focus-withinが表示し、ホバーのない画面では常に表示します。専用の行にあるので、何も覆いません。

不合格

  • リネンのトート $48
    カードにホバーするまで非表示WCAG 2.1.1 visibility: hiddenでボタンがTabの順序から外れるため、キーボードでは飛ばされ、ホバーしないタッチスクリーンでは一度も表示されません。
  • リネンのトート $48
    カードに重ねた透明な行WCAG 2.4.7 opacity: 0のままなのでボタンはTabの順序に残り、フォーカスが「保存」に入っても画面には何も表示されません。ホバーすると行が価格の上に重なり、どのキーでも消せません。
05

修正の確認

5つの確認

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

5件中0件を確認済み

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

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。表示のルールは、操作がカードの中の普通のボタンであることを前提にしています。ライブラリーのカードコンポーネントは、ボタンをDOMの別の場所に描くことがあり、そこでは :focus-within が効きません。実際の一覧で、キーボード、スマートフォン、画面拡大鏡を使って確認してください。

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

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

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

再テストの進め方