編集:選択した回答には、ネストされたテーブルを使用せずに作成できた作業フィドルへのリンクが含まれています。
下の画像のようなレイアウトでHTMLのテーブルを意味的にコーディングしたいと思います。残念ながら、ネットワーク上でこのようなものを見つけることはできませんでした。
セルの幅を手動で設定することで外観を強制することができましたが、作成しているコードが意味をなすことを確認したいのですが、手動で幅を設定しないと、標準のレンダリングの方が見栄えがよくなるので、そうではありません。次の写真のように。
これまでのところ、私が思いついた問題のあるコードは次のようになります。
<table>
<thead>
<tr>
<th scope="col">Type of Loss Dollar</th>
<th scope="col">Reserve Amount</th>
<th scope="col">Paid Amount</th>
<th scope="col">Total This Loss</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="3">
<table>
<tbody>
<tr>
<th scope="row">Medical</th>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr><tr>
<th scope="row">Indemnity</th>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr><tr>
<th scope="row">Expense</th>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr>
</tbody>
</table>
</td><td>
TOTAL
</td>
</tr>
</tbody>
</table>
画像がないと言うのは少し難しいですが、ネストされたテーブルよりも良い解決策は、単にcolspan
属性とrowspan
属性を使用することだと思います。
編集:rowspan
(およびcolspan
をすでに使用している方法で)を使用すれば、間違いなくそれを達成できると思います。
また、「col」の場合、scope
属性を設定する必要はありません。デフォルトは「col」です。
編集:Marat Tanalinがscope
属性のデフォルト値を実際に指摘しているように、実際にはauto
であり、「コンテキストに基づいて選択された一連のセルにヘッダーセルが適用されます」。そして、私の経験では、これを「col」に設定するのとまったく同じように機能します(スクリーンリーダーの場合)。
編集:高度なテーブルのマークアップに関する2つの優れた記事を次に示します: http://www.456bereastreet.com/archive/200910/use_the_th_element_to_specify_row_and_column_headers_in_data_tables/ & http ://www.456bereastreet.com/archive/200410/bring_on_the_tables/
編集: これは、(少なくとも視覚的に)望ましい動作を示すフィドル であり、そのフィドルのソースコードは次のとおりです。
<table border="1">
<thead>
<tr>
<th>Status</th>
<th>Type of Loss Dollar</th>
<th>Reserve Amount</th>
<th>Paid Amount</th>
<th>Total This Loss</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3">Open</td>
<td>Medical</td>
<td><input type="text" /></td>
<td><input type="text" /></td>
<td rowspan="3">TOTAL</td>
</tr><tr>
<td>Indemnity</td>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr><tr>
<td>Expense</td>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr>
</tbody>
</table>
うん、上記のすべての覗き見が示唆したように、それはすべて行スパンに関するものです。
これがあなたのコードの書き直しです:
<table>
<thead>
<tr>
<th>Type of Loss Dollar</th>
<th>Reserve Amount</th>
<th>Paid Amount</th>
<th>Total This Loss</th>
<th>Last Heading</th>
</tr>
</thead>
<tbody>
<tr>
<td rowspan="3"></td>
<td>Medical</td>
<td><input type="text" /></td>
<td><input type="text" /></td>
<td rowspan="3">TOTAL</td>
</tr><tr>
<td>Indemnity</td>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr><tr>
<td>Expense</td>
<td><input type="text" /></td>
<td><input type="text" /></td>
</tr>
</tbody>
</table>