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

フォーカス順の最後に回る、フローティングボタンとパネル

浮いた「予約する」バーと、それが開くシートがフッターの後に書かれているため、キーボードとスクリーンリーダーの利用者は、ページの主な操作にも、その日付にも、ページ全体の後でしかたどり着けません。

WCAG 2.2
SC 2.4.3A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり
アクセシビリティの問題を示した図: 手の操作:なぜ「予約する」が最後?
01

問題

キーボードとスクリーンリーダーの利用者は、ページの「予約する」ボタンにページ全体の後でしかたどり着けず、それで日付を開いても、またページ全体の後でしか日付に届きません。

02

試してみる

キーボードでツアーを予約してください。Tabを何回押しますか?

  1. ページの最初から、「予約する」に届くまでTabを押します。
  2. Enterで日付を開き、Tabを押します。フォーカスは最初の日付へ移りますか、ページの中へ戻りますか?
  3. 日付からShift + Tabを押し、もう一度シートを開いてEscapeで閉じます。

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

旧市街ウォーキングツアー

2時間、1人$25から

旧市街の静かな石畳の通りに面した石造りの噴水。

集合場所:マーケット広場の噴水。 地図で開く

段差のないルートですか?

はい。旧市街の平らな道だけを通ります。

雨の場合は?

開催します。市場のホールで屋根のある休憩を取ります。

キャンセルできますか?

はい。開始の24時間前まで無料です。

128件のレビューをすべて読む

$25から

フォーカス: –

「予約する」はページの9回目のTabです

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

03

修正方法

浮いたボタンを操作の対象となる内容と一緒に書き、パネルを、マークアップかpopovertargetでその直後に置きます。

  1. 1ページの主な操作である浮いたボタンは、フッターの後ではなく、マークアップ上でその内容と一緒に来る。
  2. 2パネルを開くボタンの次のTabでパネルの中へ移る。または、パネルが開くときにフォーカスを受け取る。閉じると、フォーカスはボタンに戻る。
  3. 3TabとShift + Tabの両方向の順序を、対応するすべてのブラウザーで確認する。
修正前

フッターの後にあるバーとシート

/* バーのための余白。ページの最後やフォーカスを覆わないようにする。 */html {  scroll-padding-bottom: 5rem;}body {  padding-bottom: 5rem;}.book-bar {  position: fixed;  inset-inline: 1rem;  bottom: 1rem;  display: flex;  align-items: center;  justify-content: space-between;  /* 高さ4rem、下端から1rem:確保した5remに収まる。 */  height: 4rem;  padding: 0 1rem;  border-radius: 1rem;  background: #fff;}.sheet {  position: fixed;  inset-inline: 1rem;  bottom: 5.5rem;  padding: 1rem;  border-radius: 1rem;  background: #fff;}
修正後

内容と一緒のバーと、その直後のシート

/* バーのための余白。ページの最後やフォーカスを覆わないようにする。 */html {  scroll-padding-bottom: 5rem;}body {  padding-bottom: 5rem;}.book-bar {  position: fixed;  inset-inline: 1rem;  bottom: 1rem;  display: flex;  align-items: center;  justify-content: space-between;  /* 高さ4rem、下端から1rem:確保した5remに収まる。 */  height: 4rem;  padding: 0 1rem;  border-radius: 1rem;  background: #fff;}.sheet {  position: fixed;  inset-inline: 1rem;  bottom: 5.5rem;  padding: 1rem;  border-radius: 1rem;  background: #fff;}

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

04

修正の確認

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

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

6件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。バー、シート、ページのレイアウトを変更した際や、予約ウィジェット、コンポーネントライブラリー、外部サービスのスクリプトを更新した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。バー、シート、ツアーはこの例のものです。チャット、ヘルプ、フィードバックのパネルも含め、ページ上のすべての浮いたボタンと、それが開くすべてのパネルを、表示される最も長いページで確認してください。浮いたボタンが順序の最後にあってよいかどうかは、ページに対する判断です。「ページ上部へ」ボタンは最後でよく、ページの主な操作はそうではありません。チャットのパネルはメッセージの読み上げも必要です(メッセージを読み上げないチャットウィジェット)。ポップオーバーのフォーカス順序はブラウザーによって異なるため、対応するブラウザーそれぞれで確認してください。コード内のクラス名は、実際のものに置き換えてください。

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

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

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

再テストの進め方