データ テーブル内のテーブル ヘッダーはデータ セルを参照する必要があります
修正方法
データ テーブル内の各テーブル ヘッダーがデータ セルを参照していることを確認し、使用される各ヘッダー セルが実際に何かのヘッダーであることを確認します。
つまり、 th
要素には関連付けられたデータ セルが必要です。
header
属性が存在する場合、スクリーン リーダーで使用できるテキストを含む要素を参照していることを確認してください。
-
th
要素はheaders
属性を使用してはなりません。 -
th
要素は、ヘッダーが1行1列の場合にのみ使用してください。 th
要素はscope
属性を使用してください。
悪い例: <th>
を scope="row"
に設定する代わりに scope="col"
に設定してください。
次の表で、 <th>
要素が row
に設定されるべきではなく、 col
に設定されていることに注意してください。
苗字 | 名 | 市 |
---|---|---|
フェニックス | 伊万里 | ヘンリー |
ゼキ | ローマ | ミン |
アピルカ | ケリー | ブリン |
<table>
<caption>Teddy bear collectors:</caption>
<tr>
<th scope="row">Last Name</th>
<th scope="row">First Name</th>
<th scope="row">City</th>
</tr>
<tr>
<td>Phoenix</td>
<td>Imari</td>
<td>Henry</td>
</tr>
<tr>
<td>Zeki</td>
<td>Rome</td>
<td>Min</td>
</tr>
<tr>
<td>Apirka</td>
<td>Kelly</td>
<td>Brynn</td>
</tr>
</table>
以下は、前の例で列ヘッダーをテーブル コンテンツに関連付けるための修正されたコードです。
...
<th scope="col">Last Name</th>
<th scope="col">First Name</th>
<th scope="col">City</th>
...
なぜ重要なのか
スクリーン リーダーには、テーブルを読み上げるための特別な方法があります。テーブルが適切にマークアップされていない場合、スクリーン リーダーの出力が混乱したり不正確になったりする可能性があります。
テーブルが意味的にマークアップされておらず、正しいヘッダー構造がない場合、スクリーン リーダーのユーザーはセルとその内容の関係を視覚的に正しく認識できません。
ルールの説明
データ テーブルのマークアップは面倒でわかりにくいです。テーブルを意味的に、正しいヘッダー構造でマークアップしてください。スクリーン リーダーにはテーブル ナビゲーションを容易にする機能がありますが、これらの機能が正しく動作するにはテーブルを正確にマークアップする必要があります。
仕組みについて (簡単に言うと)
データ テーブルのマークアップをチェックし、各ヘッダー セルが列または行のヘッダーとして参照されていることを確認します。