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

表題がキャプションになっていない表

表の表題が上の段落や表の中の行で、captionではないため、表へ移動したスクリーンリーダーには名前が伝わらず、隣の表と区別できません。

WCAG 2.2
SC 1.3.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり <p class="table-title">
アクセシビリティの問題を示した図: 全盲:通常?速達?
01

問題

表から表へ移動するスクリーンリーダー利用者には表題が伝わらず、今どの表にいるのか分かりません。

02

試してみる

Tabキーで表から表へ移動してください。

Tabキーの1回が、スクリーンリーダーで次の表へ移るキー(NVDAとJAWSではT)の代わりです。下の欄に、表に着いたときの読み上げが出ます。どちらの表にいるか分かりますか?「問題2」では、読み上げられる行数を数えてください。

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

通常配送

重さ料金
1 kgまで$4
1〜5 kg$7

速達

重さ料金
1 kgまで$9
1〜5 kg$15

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

(Tabで表へ移動)

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

03

修正方法

各表の見えている表題を、その表の名前にします。captionか、表題を指すaria-labelledbyを使います。

  1. 1データ表の見えている表題はcaptionに入れるか、表のaria-labelledbyで指す。
  2. 2表題を表のセルの行として描かない。
  3. 3どの表にも、同じページのほかの表と区別できる名前を付ける。
修正前

表の上の段落にある表題

<p class="table-title">Express delivery</p><table class="rates">  <thead>    <tr>      <th scope="col">Weight</th>      <th scope="col">Price</th>    </tr>  </thead>  <tbody>    <tr>      <th scope="row">Up to 1 kg</th>      <td>$9</td>    </tr>    <tr>      <th scope="row">1 to 5 kg</th>      <td>$15</td>    </tr>  </tbody></table>
修正後

Caption

<table class="rates">  <caption>Express delivery</caption>  <thead>    <tr>      <th scope="col">Weight</th>      <th scope="col">Price</th>    </tr>  </thead>  <tbody>    <tr>      <th scope="row">Up to 1 kg</th>      <td>$9</td>    </tr>    <tr>      <th scope="row">1 to 5 kg</th>      <td>$15</td>    </tr>  </tbody></table>

この方法を選ぶ理由:まずHTMLの要素を使う

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

04

修正の確認

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

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

5件中0件を確認済み

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

制限

このサンプルは、どの表でも同じ結果になることを保証するものではありません。captionをいつ読むか、表の大きさをどう伝えるかはスクリーンリーダーによって異なり、表の一覧がないものもあります。名前は表の中身を表していなければ役に立ちません。「料金」というcaptionの表が二つあれば、captionがない場合と同じく区別できません。

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

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

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

再テストの進め方