代表者の戯言

HTML+CSS テーブルに関するテクニック

HTML+CSSでテーブルを作成する際に役立ててください。

colとrowの役割

col側は、excelでいう行を意味し、rowは列を意味する。captionは見出しの名称。あとあとcssでcaption-side: top などを指定することができるため、利用するメリットはある。

【htmlの例】

<able>

<caption>クレープ生地の材料</caption>

<thread>

<tr>

<th scope="col">食材</th>

<th scope="col">量</th>

<th scope="col">下準備</th>

</tr>

</thread>

<tbody>

<tr>

<th scope="row">小麦粉</th>

<td>100g</td>

<td>ふるいにかけておく<td>

</tr>

<tr>

<th scope="row">たまご</th>

<td>1個</td>

<td>常温に戻し溶いておく<td>

</tr>

<tr>

<th scope="row">牛乳</th>

<td>00cc</td>

<td>冷蔵庫から早めに出しておく<td>

</tr>

</tbody>

</table>

【CSS側】

table {

width:650px;

border:solid 1px #666666;

border-collapse:collapse;

background-color:#fff;

}

th {

border: solid 1px #666666;

text-align: left;

padding: 10px;

background-color:#dddddd;

}

td {

border:solid 1px #666666;

padding:10px;

vertical-align:top;

}

実際の画面

ChatGPTによると【HTMLでcol、row、captionなど書いても書かなくても表示上は問題ないHTML要素をあえて書く理由はいくつかある】、とのことだ。

1. 意味づけ(セマンティクス)

HTMLは見た目だけでなく、「意味」を持たせるための言語でもあります。例えば:

caption を使えば、「この表は何についてのものか」を明示できます。

col や colgroup を使えば、「この列はグループ化されている」という構造的な意味が伝わります。

→ 人間にも機械にも意味が伝わるHTMLになる。

. アクセシビリティ(特にスクリーンリーダー対応)

視覚に頼らずWebを利用するユーザーにとって、セマンティックな要素は非常に重要です。

caption があることで、スクリーンリーダーが「これは○○の表です」と説明してくれます。

scope="col" などを使えば、行と列の見出しを正確に読み上げてくれます。

→ すべての人に優しいWebを作れる。

3. スタイルやスクリプトとの連携

col 要素にスタイルを適用すれば、列ごとに一括でスタイルを変えることができます。

JavaScriptで構造的にデータを操作する際にも、row, colgroup, caption などがあると便利です。

→ 管理しやすく、拡張性が高いコードになる。

4. 保守性・可読性

開発者が見たときに「この表は何のデータなのか」「どういう構造なのか」が一目でわかるようになります。

→ チーム開発や後々の改修がしやすくなる。