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

見出しが太字だけのデータ表

見出し行は見出しらしく装飾されていますが、すべてのセルがtdのため、値と行や列の関係がコードにありません。

WCAG 2.2
SC 1.3.1A
必須とする規格
Section 508 · EN 301 549(EU) · JIS X 8341-3
問題あり
何の30?
アクセシビリティの問題を示した図。
01

問題

スクリーンリーダー利用者には、数字がどの行と列のものか伝わりません。

02

試してみる

Tabキーで料金を順に移動してください。

Tabキーの1回が、スクリーンリーダーで次のセルへ移る操作の代わりです。下の欄に読み上げが出ます。各料金が何の料金か分かりますか?

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

プラン月額年額
Starter$12$120
Team$30$300

スクリーンリーダーの読み上げ: (Tabで料金へ移動)

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

03

修正方法

見出しのセルを見出しとしてマークアップし、どの方向の見出しかを示します。

  1. 1見出しのセルはすべてthにするか、構造のそろったARIAの表でcolumnheaderかrowheaderにする。
  2. 2各thにscopeを付けるか、各tdにheadersを付ける。一つの表で両方は使わない。
  3. 3レイアウトに表を使わず、データ表にはrole="presentation"を付けない。
修正前 Tdと太字で描いた見出し
<table class="prices">  <tr class="head">    <td>Plan</td>    <td>Monthly</td>    <td>Yearly</td>  </tr>  <tr>    <td class="plan">Starter</td>    <td>$12</td>    <td>$120</td>  </tr>  <tr>    <td class="plan">Team</td>    <td>$30</td>    <td>$300</td>  </tr></table>
修正後

Scopeを付けたth

<table class="prices">  <thead>    <tr>      <th scope="col">Plan</th>      <th scope="col">Monthly</th>      <th scope="col">Yearly</th>    </tr>  </thead>  <tbody>    <tr>      <th scope="row">Starter</th>      <td>$12</td>      <td>$120</td>    </tr>    <tr>      <th scope="row">Team</th>      <td>$30</td>      <td>$300</td>    </tr>  </tbody></table>

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

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

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

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

5件中0件を確認済み

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

制限

このサンプルは、どの表でも同じ結果になることを保証するものではありません。見出しをどこまで、いつ繰り返して読むかは、スクリーンリーダーによって異なります。見出しが何段にも重なる表は、マークアップが正しくても理解しにくいため、データが許す場合は単純な表に分けてください。

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

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

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

再テストの進め方