制作者(webmaster)
野嵜健秀(Takehide Nozaki)
改訂
2014-06-25

body要素

本文のマークアップが終つた時點で、本文の要素全てを包含するやうにbody要素を明示します。必然的に、body要素の直下に置ける要素はブロック要素のみとなります。

記述がなくとも、そこに本文(body)のある事は、誰の目にも明らかです。開始タグ・終了タグの記述は省略可能です(SGMLベースのHTMLでは)。html-head-bodyの「骨骼」を書かなければならない、と云ふのは迷信です。記述がなくとも、暗示的に全てのHTML文書にbody要素は存在します。詳しくはhtml要素の解説を參照して下さい。

共通解説

汎用屬性であるclass、id、title、style、lang、dir(、xml:lang)がいつでも記述出來ます。

ヴァージョン毎に異る解説

HTML 4.01

開始タグ・終了タグともに省略可能です。ただし、タグの記述がなくとも、HTML文書に於てbody要素は常に存在するものと看做されます。

XHTML 1.0

XHTML 1.0では、存在する要素は全て明示する必要があります。body要素も、絶對に開始タグ・終了タグを省略出來ません。

HTML 4.01/XHTML 1.0 Strict

StrictなHTMLの仕樣では、body直下にインライン要素やただの文字を記述する事は禁止されてゐます。(少くとも一つはブロック要素が存在する必要がある)

全てのテキストをブロック要素の中に納め終つた時點でマークアップは取敢へず完了、と考へれば、body直下はブロック要素しか置かれないものだ、と云ふ考へ方は納得出來るのではないかと思ひます。

全うなマーク附けがなされた文書では、body直下にはブロック要素しか記述がないので、氣にしないで良い筈ですが、屡々全うでないマークアップがなされるので、わざわざ注意するやう言はれます。

script要素とnoscript要素はbody直下に記述出來ます。ただし、HTML 4.01/XHTML 1.0 Strictのnoscript要素の中身は、ブロック要素に限られます。

直下にdel要素・ins要素を書けます。ただし、del、insの記述が無視されたとしても、その文書のマークアップがvalidになつてゐるやうでなければなりません。詰り、body直下のdelやinsの直下にインライン要素があつてはいけません。

HTML 4.01/XHTML 1.0 Transitional

TransitionalなHTML文書では、見た目に關する屬性が記述出來ます。

text
文書全體の文字色を指定します。この屬性を指定する時は、bgcolor、link、vlink、alinkも適切なものを指定して下さい。
bgcolor
文書全體の背景色を指定します。この屬性を指定する時は、textも適切なものを指定して下さい。
background
屬性値はURI。背景の畫像を指定します。常に「タイル表示(並べて表示)」になります。また、畫像を表示しないブラウザや、畫像を表示しないオプションを選擇してゐる閲覧者の爲に、適切にbgcolorを指定しておいて下さい。必然的にその他のtext、link、vlink、alinkも適切に指定する必要が生じます。
link
未訪問のサイトへのアンカーの色を指定します。text、bgcolorとの兼合ひを考へて指定して下さい。
vlink
訪問濟みのサイトへのアンカーの色を指定します。text、bgcolorとの兼合ひを考へて指定して下さい。
alink
アクティヴになつてゐるアンカーの色を指定します。text、bgcolorとの兼合ひを考へて指定して下さい。

全てCSSで記述可能です。また、CSSの方が細かい指定が出來ます。もつとも、CSSは本質的にレンダリングのスタイルを變更するもので、body要素の物理スタイル指定を單純に置換へる譯ではありません。

HTML 4.01 Transitional準據と云ふ場合、body直下にインライン要素やただのテキストを記述してゐてもValidと云ふ事になります。非常に無茶なマーク附けのなされた文書も、TransitionalなHTMLとしてはValidとなり得る譯ですが、「それで良い」と云ふ事ではありません。W3Cは、無茶なものを無茶なまま取敢ず「無茶な規格」としてその存在を認めてゐるだけであつて、その文書は無茶な代物なんだから頼むからそのうちちやんと直してね、と言つてゐるのであります。「認める」と言つても、容認の意味ではなく、確認の意味であるに過ぎません。

HTML 4.01/XHTML 1.0 Transitional準據の文書では、body要素の下にnoframes要素を記述出來ます。body要素の下のnoframesは、文書がフレームの中に表示される場合には表示されず、文書がフレームとして表示されてゐない時には表示される、と云ふ事が期待されてゐる筈です。

HTML 4.01 Frameset/XHTML 1.0 Frameset

HTML 4.01 Frameset或はXHTML 1.0 Frameset準據の文書では、html要素の直下にbody要素を記述する事は出來ません。

その場合、body要素はnoframes要素の直下に記述します。必然的にbody要素はframeset要素の孫の要素となります。

ISO-HTML

開始タグの省略不可。終了タグはオプションです。

直下にはブロック要素、h1→h2→h3→h4→h5→h6、を記述出來ます。h1が出現してゐないとh2は、h2が出現してゐないとh3は(以下略)h5が出現してゐないとh6は出現出來ません。

なほ、直下にaddress要素を記述してゐてはなりません。

過大評價されるbody要素の明示

多くの人が信じてゐるほど、body要素の開始タグ・終了タグの記述は(body要素の明示は)、重要な事ではありません。XHTMLではXML準據と云ふ原理上、タグの省略は一切出來ませんが、SGMLベースのHTMLでは一部のタグが省略可能です。

そして、本文の範圍は、明示されなくとも、人間が見れば分かるものだし、パーサも理解可能です。もちろん、處理の爲のプログラミングが面倒になりますが。

凡庸な「ほーむぺーじ入門」の筆者に、html要素やhead要素とともに「おまじなひ」としてまづ最初に明示を強要される要素ですが、全くもつて無意味な事です。

制作の現場では、面倒臭いのでhtml/head/bodyを含んだ「HTML文書の雛形」を用意しておく事はあります。しかし、それはhtml/head/bodyの各要素が、本質的に重要でない事の證明でこそあれ、絶對に記述しなければならない重要な要素である證明ではありません。「書くのが面倒臭い」と云ふ理由でhtml/head/bodyを省略する事は、HTMLレヴェルでは正當な行爲です。

餘談ですが、html/head/bodyの省略を「美しくない」と言ふ人が、全ての終了タグを省略してはならないとするXHTMLに反對するのは、奇妙な事ですが、屡々ある事です。おまけに、さう言ふ人が、「美しいHTML文書」を嘲笑するのだから、人間と云ふ生き物は面白い。