要約
スコープだけでは識別できない複雑なヘッダーや、意味を成すために特定の方法で順序付ける必要がある複雑なヘッダーの場合は、headers
属性を使用して、支援技術のユーザーが適切なコンテキストを利用できるようにします。
テクニック
-
headers
属性を使用して、該当する表のセルのヘッダーを識別し、順序付けます。[[WCAG-1.3.1]]
例
次の表は、最初の行に出発地が定義され、後続の各行の末尾に目的地が定義された距離チャートを示しています。
この場合、ヘッダーは行の末尾にあるため、「row
」のスコープを設定しても、すでに検出されたセルには適用されません。各セルにheaders
属性を適用しなければなりません。
このような表は、見出しを行の先頭にして、追加のマークアップをしなくて済むように再構成した方が良いでしょう。
Vancouver | Calgary | Saskatoon | Winnipeg | Toronto | Montreal | St. John's | |
---|---|---|---|---|---|---|---|
7323 | 6334 | 5838 | 5010 | 3141 | 2602 | 0 | St. John's |
4271 | 3743 | 3232 | 2408 | 539 | 0 | 2602 | Montreal |
<table>
<tr>
<th id="van">Vancouver</th>
<th id="cal">Calgary</th>
<th id="sask">Saskatoon</th>
<th id="win">Winnipeg</th>
<th id="tor">Toronto</th>
<th id="mon">Montreal</th>
<th id="stj">St. John's</th>
<th></th>
</tr>
<tr>
<td headers="van stj-dest">7323</td>
<td headers="cal stj-dest">6334</td>
<td headers="sask stj-dest">5838</td>
<td headers="win stj-dest">5010</td>
<td headers="tor stj-dest">3141</td>
<td headers="mon stj-dest">2602</td>
<td headers="stj stj-dest">0</td>
<th id="stj-dest">St. John's</th>
</tr>
<tr>
<td headers="van mon-dest">4271</td>
<td headers="cal mon-dest">3743</td>
<td headers="sask mon-dest">3232</td>
<td headers="win mon-dest">2408</td>
<td headers="tor mon-dest">539</td>
<td headers="mon mon-dest">0</td>
<td headers="stj mon-dest">2602</td>
<th id="mon-dest">Montreal</th>
</tr>
…
</table>
この例では、見出し範囲ページの例1を、headers
属性を使用してマークアップし、正しい列、行、セクションヘッダーを関連付ける方法を示します。
headers
属性を使用すると、見出しの順序を並べ替えて、別の順序で読み取ることができます (たとえば、スコープで進む場合のデフォルトの「1950 Gondor female」ではなく、「Gondor female 1950」など)。
1950 | 1975 | 2000 | |
---|---|---|---|
Gondor | |||
Male | 1,001,542 | 1,583,771 | 2,221,945 |
Female | 1,122,947 | 1,782,371 | 2,544,187 |
Mordor | |||
… |
<table>
<thead>
<tr>
<th></th>
<th id="y50">1950</th>
<th id="y75">1975</th>
<th id="y00">2000</th>
</tr>
</thead>
<tbody>
<tr>
<th colspan="4" id="gdr">Gondor</th>
</tr>
<tr>
<th id="gmale">Male</th>
<td headers="gdr gmale y50">1,001,542</td>
<td headers="gdr gmale y75">1,583,771</td>
<td headers="gdr gmale y00">2,221,945</td>
</tr>
<tr>
<th id="gfem">Female</th>
<td headers="gdr gfem y50">1,122,947</td>
<td headers="gdr gfem y75">1,782,371</td>
<td headers="gdr gfem y00">2,544,187</td>
</tr>
</tbody>
<tbody>
<tr>
<th colspan="4" id="mdr">Mordor</th>
</tr>
…
</tbody>
</table>
解説
注意
headers
属性を使用して、製作者はセルに適用するヘッダーとその順序を正確に指定できますが、この属性が必要になるのは、多くの場合、表のレイアウトを簡素化するために再構築するのが望ましいというサインです。さらに、この属性により、変更が行われるたびにすべてのヘッダーを再同期しなければならず、テーブルマークアップの保守がより複雑になります。
したがって、この属性は控えめに使用する必要があります。
headers
属性は、id
属性値によってヘッダーテキストを含むセルを識別します。属性に含まれるidの順序によって、ヘッダーがユーザーにどのように通知されるかが決まるため、論理的な再生を確実に行うように注意する必要があります。
別の順序の方が意味をなす場合、ヘッダーの順序はマークアップと正確に一致する必要はありません(例2を参照)。
headers
の使用は、テーブルを再構成して簡単にすることが絶対にできない場合の最後の手段と見なしてください。この属性は支援技術で十分にサポートされていないため、ユーザーにとっては各セルの見出しがわかりにくく不完全になることがあります。
注記
HTMLでは、td
要素をヘッダーに使用することはできなくなりました(つまり、 td
要素はheaders
属性から参照できません)。
関連リンク
- MDN — <table>: テーブル要素
- HTML —
table
要素