すべての<th>要素およびrole="columnheader"またはrole="rowheader"を持つ要素には、それらが記述するデータセルが必要です
修正方法
データテーブルの各テーブルヘッダーがデータセルを参照し、各ヘッダーセルが実際に何かに対するヘッダーとして使用されるようにします。
言い換えると、th
要素には関連したデータセルがなければなりません。
もし header
属性が存在する場合は、スクリーン・リーダーに利用可能なテキストが存在する要素を参照していることを確認します。
th
要素はheaders
属性を使用してはならないth
要素はヘッダーが1行かつ1列の場合にのみ使用されるべきであるth
要素はscope
属性を使用しなければならない
悪い例: データのない <th>
次のテーブルでは、'10 km' という値を持った <th>
が列のヘッダーとして機能していますが、そのカラムのセルにはデータがありません
Name | 1 mile | 5 km | 10 km |
---|---|---|---|
Mary | 8:32 | 28:04 | |
Betsy | 7:43 | 26:47 | |
Matt | 7:55 | 27:29 | |
Todd | 7:01 | 24:21 |
なぜ重要なのか
スクリーン・リーダーはテーブルを特定の方法で読み上げます。テーブルが正確にマークアップされていない場合、混乱させるような、あるいは不正確なスクリーン・リーダーの読み上げ内容になる可能性があります。
テーブルのマークアップがセマンティックではなく、ヘッダーの構造が正しくない場合、スクリーン・リーダーのユーザーはセルとそれらのコンテンツの関係性を正しく把握することができません。
ルールの説明
データテーブルのマークアップは長く複雑になりやすいです。テーブルは正しい見出し構造で、セマンティックにマークアップされなければなりません。スクリーン・リーダーにはテーブル移動を楽にする機能がありますが、これらの機能が正しく動作するには、テーブルは正しくマークアップされていなければなりません。
仕組みについて (簡単に言うと)
データテーブルのマークアップを確認し、各ヘッダーセルが列または行のヘッダーとして参照されていることを確認します。