<table> - テーブル(表)
概要
- 形式
<table>~</table>- サポート
- https://caniuse.com/mdn-html_elements_table
- カテゴリ
- フローコンテンツ
- パルパブルコンテンツ
- 親要素
- フローコンテンツ を子要素に持てるもの
- 子要素
- caption, colgroup, thead, tbody, tr, tfoot, script, template要素
- タグの省略
- 開始タグ:必須 / 終了タグ:必須
- 属性
- グローバル属性
説明
テーブルを表示します。テーブルの行は <tr>、ヘッダセルは <th>、通常セルは <td> で表します。他にも下記の関連要素があります。
<caption>: テーブルの表題<thead>: テーブルのヘッダ行<tbody>: テーブルのボディ行<tfoot>: テーブルのフッタ行<colgroup>: テーブルの列グループ<col>: テーブルの列
以前はレイアウトの目的でテーブルが多用された時期もありましたが、現在ではレイアウトは フレックスボックス や グリッド を用いることが推奨されています。
属性
共通属性
ボーダー関連属性
- border=n
- [非推奨] H3/e2/Ch/Fx/Sa/Op/N2
- 枠線の太さを指定します。この属性を記述しない、または、0 を指定すると枠線を表示しません。HTML5 では 1 のみ指定可能で、太さはスタイルシートを用いるようになります。HTML Living Standard では廃止されました。
- bordercolor=color
- [非推奨] e2/Ch/Fx/Sa/Op/N4
- 枠線の色を指定します。HTML5 には採用されていません。代わりに border-color を使用してください。
- bordercolordark=color
- [非推奨] e2
- 立体的な枠線の暗い部分の色を指定します。
- bordercolorlight=color
- [非推奨] e2
- 立体的な枠線の明るい部分の色を指定します。
- frame=frame
- [非推奨] H4-4/e3/Ch/Fx/Sa/Op
- 各セルの上下左右の枠線について、表示する/しないを制御します。HTML5 では廃止されました。
- void
- 表示しない。(既定値)
- above
- 上側のみ。
- below
- 下側のみ。
- hsides
- 上下のみ。
- vsides
- 左右のみ。
- lhs
- 左側(Left Hand Side)のみ。
- rhs
- 右側(Right Hand Side)のみ。
- box
- 上下左右。
- border
- 上下左右。
- rules=rules
- [非推奨] H4-4/e3/Ch/Fx/Sa/Op
- テーブルの内側の枠線を表示するルールを指定します。HTML5 では廃止されました。
- none
- 表示しない。
- groups
- <thead>, <tbody>, <tfoot> で指定したグループの境界のみ。
- rows
- 横方向のみ。
- cols
- 縦方向のみ。
- all
- すべて。(既定値)
背景関連属性
- background=url
- [非推奨] e3/Ch/Fx/Sa/Op/N4
- 背景画像を指定します。<tr>, <th>, <td> でも指定可能です。スタイルシートの場合は backgroung-image を使用してください。
- bgcolor=color
- [非推奨] H4T-4T/e2/Ch/Fx/Sa/Op/N3
- 背景色を指定します。<tr>, <th>, <td> でも指定可能です。スタイルシートの場合は backgroung-color を使用してください。
配置関連属性
- align=align
- [非推奨] H3-H4T/e2/Ch/Fx/Sa/Op/N2
- テーブルの表示位置を指定します。
- center
- 中央表示(H3/e2/Ch/Fx/Sa/Op/N4)
- left
- 左端表示(H2/e2/Ch/Fx/Sa/Op/N2)(既定値)
- right
- 右端表示(H2/e2/Ch/Fx/Sa/Op/N2)
- cellpadding=n
- [非推奨] H3-H4/e2/Ch/Fx/Sa/Op/N2
- 枠線とセルの内容の間の隙間をピクセル単位で指定します。
- cellspacing=n
- [非推奨] H3-H4/e2/Ch/Fx/Sa/Op/N2
- 内枠の太さを指定します。0 を指定すると、立体感の無い枠線を表示することができます。
- width=n
- [非推奨] H3-H4/e2/Ch/Fx/Sa/Op/N2
- テーブルの横幅をピクセルまたはパーセンテージで指定します。
- height=n
- [非推奨] e2/Ch/Fx/Sa/Op/N2
- テーブルの高さをピクセルまたはパーセンテージで指定します。
- hspace=n
- [非推奨] Ch/Sa/Op/N2
- テーブルの周りの横方向の余白をピクセル単位で指定します。
- vspace=n
- [非推奨] Ch/Sa/Op/N2
- テーブルの周りの縦方向の余白をピクセル単位で指定します。
その他属性
- cols=n
- [非推奨] e3/N4
- 列数を指定します。この属性を指定することにより、テーブルの表示速度が若干速くなる場合があります。
- datapagesize=size
- [非推奨] e4
- データバインド機能を用いる際の、レコード数を指定します。
- datasrc=datasrc
- [非推奨] e4
- データバインド機能を用いる際の、データソースの ID を指定します。
- summary=summary
- [非推奨] H4-4
- 音声読み上げブラウザなどのために、この表の目的や構成の説明を記述します。HTML4.01 では必須属性とされていましたが、HTML5 では廃止されました。
使用例
基本的なテーブル
基本的なテーブルは次のように記述します。<table> はテーブル、<tr> は行、<th> はヘッダセル、<td> はデータセルを示します。デフォルトでは枠線は表示されません。
<table> <tr><th></th><th>列-A</th><th>列-B</th></tr> <tr><th>行-1</th><td>A-1</td><td>B-1</td></tr> <tr><th>行-2</th><td>A-2</td><td>B-2</td></tr> <tr><th>行-3</th><td>A-3</td><td>B-3</td></tr> </table>
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
枠線を表示する
枠線を表示するには スタイルシート の border を用います。下記は、class="my-table" を指定したテーブルの th と td に 1ピクセル、直線、色が #999 の枠線を描画することを意味します。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>テーブルテスト</title>
<style>
.my-table th,
.my-table td {
border: 1px solid #999;
}
</style>
</head>
<body>
<table class="my-table">
<tr><th></th><th>列-A</th><th>列-B</th></tr>
<tr><th>行-1</th><td>A-1</td><td>B-1</td></tr>
<tr><th>行-2</th><td>A-2</td><td>B-2</td></tr>
<tr><th>行-3</th><td>A-3</td><td>B-3</td></tr>
</table>
</body>
</html>
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
枠線の隙間を無くす
枠線の隙間を無くすには、border-collapse を指定します。
.my-table {
border-collapse: collapse;
}
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
セルに色をつける
セルに色をつけるには background-color を指定します。
.my-table th {
background-color: #ddf;
}
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
セルの幅や高さを指定する
セルの幅を指定するには width、高さを指定するには height を指定します。
.my-table th,
.my-table td {
border: 1px solid #999;
width: 6rem;
}
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
セルを右寄せ・左寄せ・中央寄せする
セルを右寄せ・左寄せ・中央寄せするには text-align に left(左寄せ), center(中央寄せ), right(右寄せ) を指定します。ヘッダセル(th)はデフォルトで中央寄せされています。
.my-table td {
text-align: center;
}
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
3列目の td のみ制御したい場合は :nth-child(n) を指定します。
.my-table td:nth-child(3) {
text-align: center;
}
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
セルを連結する
セルを連結するには <th> や <td> に rowspan=n, colspan=n を指定します。n は連結するセル数を指定します。
<table class="my-table"> <tr><th></th><th>列-A</th><th>列-B</th></tr> <tr><th>行-1</th><td colspan="2">A-1</td></tr> <tr><th>行-2</th><td>A-2</td><td rowspan="2">B-2</td></tr> <tr><th>行-3</th><td>A-3</td></tr> </table>
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | |
テーブルを横に並べる
テーブルを横に並べるには flex を使用します。
.my-flex {
display: flex;
gap: 1rem;
}
<div class="my-flex">
<table class="my-table">
...
</table>
<table class="my-table">
...
</table>
</div>
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
角の丸いテーブルを表示する
少々マニアックですが、下記の様にして角の丸いテーブルを記述することができます。
.my-round-table { border-spacing: 0; }
.my-round-table > * > tr > th { background-color: #ddf; }
.my-round-table > * > tr > td { text-align: center; }
.my-round-table > * > tr > * { width: 6rem; border-right: 1px solid #999; border-bottom: 1px solid #999; }
.my-round-table > * > tr:first-child > *:first-child { border-top-left-radius: .5rem; }
.my-round-table > * > tr:first-child > *:last-child { border-top-right-radius: .5rem; }
.my-round-table > * > tr:last-child > *:first-child { border-bottom-left-radius: .5rem; }
.my-round-table > * > tr:last-child > *:last-child { border-bottom-right-radius: .5rem; }
.my-round-table > * > tr:first-child > * { border-top: 1px solid #999; }
.my-round-table > * > tr > *:first-child { border-left: 1px solid #999; }
<table class="my-round-table"> ... </table>
| 列-A | 列-B | |
|---|---|---|
| 行-1 | A-1 | B-1 |
| 行-2 | A-2 | B-2 |
| 行-3 | A-3 | B-3 |
ヘッダ固定のテーブルを表示する
ヘッダ固定のスクロールテーブル を参照してください。
関連項目
リンク
- https://html.spec.whatwg.org/multipage/tables.html#the-table-element
- https://developer.mozilla.org/ja/docs/Web/HTML/Element/table
- https://caniuse.com/mdn-html_elements_table