[1] tbody
要素型は、
行群の要素型の一つで、表の本体を表します。
すなわち、表の本体にあたる (見出しなどでない) 行の集合です。
[11] 仕様書:
[3] 表の本体が複数の主要構成部分から成るときには、
tbody
を複数個使うことができます。
しかし、よく用いられる表では tbody
は一つだけであることが多いです。
HTML 4 など一部の HTML では、そのように tbody
の範囲が自明なときにはタグを省略できます。
tbody
http://www.w3.org/1999/xhtml
(tr
+)
table
直下、
tfoot
(あれば) の後属性名 | 属性値 | 既定値 | 説明 | 状態 | 出典 |
align | 揃え | [HTML4] %cellhalign | |||
bgcolor | %Color | 背景色 | 非標準 | ||
char | 揃える文字 | [HTML4] %cellhalign | |||
charoff | 揃える文字 | [HTML4] %cellhalign | |||
class | 級 | [HTML4] %coreattr | |||
dir | 書字方向 | [HTML4] %i18n | |||
id | 一意識別子 | [HTML4] %coreattr | |||
lang | 自然言語 | [HTML4] %i18n | |||
xml:lang | 自然言語 | [XHTML1] | |||
onclick | [HTML4] %events | ||||
ondblclick | [HTML4] %events | ||||
onkeydown | [HTML4] %events | ||||
onkeypress | [HTML4] %events | ||||
onkeyup | [HTML4] %events | ||||
onmousedown | [HTML4] %events | ||||
onmousemove | [HTML4] %events | ||||
onmouseout | [HTML4] %events | ||||
onmouseover | [HTML4] %events | ||||
onmouseup | [HTML4] %events | ||||
style | スタイル情報 | [HTML4] %coreattr | |||
title | 注釈的題 | [HTML4] %coreattr | |||
valign | 垂直配置 | [HTML4] %cellvalign | |||
xmlns | http://www.w3.org/1999/xhtml 固定 | 名前空間名 | W3C 勧告 | XHTML m12n |
[9] tbody
, thead
,
tfoot
は同じ数の列を含まなければなりません。
[4] tbody
をはじめとする行群要素型を使うと、
複雑な表であっても正確に記述できますが、そのタグが必須であるとすると、
簡単な表であってもマークが複雑になってしまい不便です。
そこで、 HTML の表の多くの仕様・実装では、 tbody
の開始タグおよび終了タグを (自明であれば) 省略できるとしています
(>>7)。
たとえば、
#12 | 大きな窓 | 2004年2月 |
#25 | 小さな鼠 | 2002年8月 |
#56 | 野原の左 | 2000年3月 |
という表は、
<table><tbody> <tr><td>#12</td> <td>大きな窓</td> <td>2004年2月</td></tr> <tr><td>#25</td> <td>小さな鼠</td> <td>2002年8月</td></tr> <tr><td>#56</td> <td>野原の左</td> <td>2000年3月</td></tr> </tbody></table>
とマークしますが、タグが省略できるなら、
<table> <tr><td>#12</td> <td>大きな窓</td> <td>2004年2月</td></tr> <tr><td>#25</td> <td>小さな鼠</td> <td>2002年8月</td></tr> <tr><td>#56</td> <td>野原の左</td> <td>2000年3月</td></tr> </table>
になります。
[7] 開始タグが省略できる条件は、より正確には、 HTML 4 仕様書によれば
ときだけです。終了タグはいつでも省略できます。
[8] てことは、
<table> <thead> <tr/> </thead> <tr/> </table>
は駄目になります。 SGML 的には無問題な気がするけどどうですか?
HTML 4 仕様書には更に適合 UA は後方互換性のためにこの規則に従わなければなりません
と書かれていますが、関係あるのでしょうか。
[5] ところで、 XML はタグの省略を認ていないので、
XHTML ではこの機能が実現できません。そこで、
XHTML 1 では table
要素の直下に
tr
要素を入れることを認めています。
ですから、 XHTML 1 でも >>4 の2例は共に妥当になり得ますが、 前例と後例では異なる構造を持つデータであると見なされてしまいます。
(これによって簡単な表と複雑な表をまとめて処理できなくなってしまうため、
XHTML 1 では tbody
を省略するべきではないという意見があります。)
[6] HTML 4 仕様書は、レンダリングの例として、表が一画面に収まりきらないときに
tbody
部分だけを scroll
可能にすることに触れています。
[12]
HTML 4 の DTD の注釈には
Use multiple TBODY sections when rules are needed between groups of table rows.
とアドバイス(?)があります。
(名無しさん [sage])
[13]
Bug 30378 – Parser should not add <tbody> to HTML 3.2 tables (2007-02-10 13:37:47 +09:00
版) <https://bugzilla.mozilla.org/show_bug.cgi?id=30378>
(名無しさん)
[14]
hxxk.jp - CSS で tbody 要素を一定の高さにして、 overflow: auto でスクロール表示にする tips (真琴 著, 2007-03-18 23:26:06 +09:00
版) <http://hxxk.jp/2007/03/18/2000>
(名無しさん 2007-03-18 23:20:37 +00:00)
[15] Bug 455043 – remove HTML 3 quirks mode ( 版) <https://bugzilla.mozilla.org/show_bug.cgi?id=455043> (名無しさん)
[16] Let HTMLTableElement create*() and insertRow() return specific types · whatwg/html@93cb3d6 ( 版) <https://github.com/whatwg/html/commit/93cb3d61526cf956a739c57398760dc8a3a633bd>
[17] hxxk.jp - CSS で tbody 要素を一定の高さにして、 overflow: auto でスクロール表示にする tips (望月真琴 著, 版) <http://web.archive.org/web/20120517000214/http://hxxk.jp/2007/03/18/2000>