[5] [[HTML]] の [DFN[[CODE(HTMLe)[body]] 要素型]]の要素は、
文書の[[本体]] (本文) を表します。文書に丁度1つだけ存在します。

[6] 仕様書:
- [[HTML 2.0]]: RFC 1866 5.3. Body: BODY
- [[HTML 4]]: [CODE(HTMLe)[body]] <IW:HTML4:"struct/global.html#edef-BODY">

[4] 
:[[局所名]]:[CODE(HTMLe)[body]]
:[[名前空間名]]:[CODE(URI)[[[http://www.w3.org/1999/xhtml]]]]
:[[開始タグ]]:省略可能 (HTML 4), 必須 (XHTML 1)
:[[終了タグ]]:省略可能 (HTML 4), 必須 (XHTML 1)
:[[内容模型]]:[CODE(SGML)[([VAR[%[[block]]]] | [CODE(HTMLe)[[[script]]]])+ +([CODE(HTMLe)[[[ins]]]] | [CODE(HTMLe)[[[del]]]])]] (HTML 4 厳密)
:出現できる文脈:[CODE(HTMLe)[[[html]]]] の第2子要素として。
または [CODE(HTMLe)[[[frameset]]]]
の子供たる [CODE(HTMLe)[[[noframes]]]] の子供として。


* 属性

[FIG(short list)[ [23] [CODE(HTMLe)@en[body]] [[要素]]の[[属性]]

[HISTORY[
,[CODE(HTMLa)[[[alink]]]]	,[CODE[color]]	,(自動)	,選択リンク文字色	,"[HTML4] 非推奨, [XHTML1]"
,[CODE(XMLa)[[QN[xfa:[[APIVersion]]] [http://www.xfa.org/schema/xfa-data/1.0/]]]]	,[SAMP(XML)[Acrobat:6.0.0]] など	,	,生成ソフトウェア名・版	,Adobe 規格	,[[PDF]]
,[CODE(HTMLa)[[[background]]]]	,[[URI]]	,(なし)	,背景画像	,"[HTML4] 非推奨, [XHTML1]"
,[CODE(HTMLa)[[[bgcolor]]]]	,[CODE[color]]	,(自動)	,背景色	,"[HTML4] 非推奨, [XHTML1]"
,[CODE(HTMLa)[[[bgproperties]]]]	,	,	,背景表現	,非標準	,[[WinIE]]
,[CODE(HTMLa)[[[bottommargin]]]]	,	,	,下余白	,非標準	,[[WinIE]]
,[CODE(XMLa)[[QN[xfa:[[contentType]]] [http://www.xfa.org/schema/xfa-data/1.0/]]]]	,[SAMP(MIME)[[[text/html]]]] 固定	,==	,	,Adobe 規格	,[[PDF]]
,[CODE(HTMLa)@en[fgcolor]]
,[CODE(HTMLa)[[[leftmargin]]]]	,	,	,左余白	,非標準	,[[WinIE]]
,[CODE(HTMLa)[[[link]]]]	,[CODE[color]]	,(自動)	,未訪リンク文字色	,"[HTML4] 非推奨, [XHTML1]"
,[CODE(HTMLa)[[[nowrap]]]]	,	,	,自動折返しなし	,非標準
,[CODE(HTMLa)[[[rightmargin]]]]	,	,	,右余白	,非標準	,[[WinIE]]
,[CODE(XMLa)[[QN[xfa:[[spec]]] [http://www.xfa.org/schema/xfa-data/1.0/]]]]	,[SAMP(XML)[2.0.2]] など	,	,[[XFA]] の版	,Adobe 規格	,[[PDF]]
,[CODE(HTMLa)[[[text]]]]	,[CODE[[[color]]]]	,(自動)	,文字色	,"[HTML4] 非推奨, [XHTML1]"
,[CODE(HTMLa)[[[tracingopacity]]]]	,	,	,	,非標準	,[[Dreamweaver]] 4.0
,[CODE(HTMLa)[[[tracingsrc]]]]	,	,	,	,非標準	,[[Dreamweaver]] 4.0
,[CODE(HTMLa)[[[vlink]]]]	,[CODE[color]]	,(自動)	,既訪リンク文字色	,"[HTML4] 非推奨, [XHTML1]"
,[CODE(XMLa)[[[xmlns]]:xfa]]	,[CODE(URI)[[[http://www.xfa.org/schema/xfa-data/1.0/]]]]	,	,[[名前空間名]]	,Adobe 規格	,[[PDF]] TABLE 8.64

- [CODE[margintop]]
- [CODE[scroll][<body scroll>]]
- [CODE[topmargin]]
]HISTORY]

]FIG]

* 実装

[1] [[NN]] 1.2 ''より''前には animated [CODE(HTMLe)[[[title]]]] 
のように [CODE(HTMLe)[body]] 要素の開始タグを何個も書くことで背景色がどんどん変えられる不具合があったらしいです。

[[#comment]]


** 例

[7] 簡単な [CODE(HTMLe)[body]] の例 [SRC[RFC 1866 5.3.]]
[PRE(HTML)[
<BODY>
<h1>Important Stuff</h1>
<p>Explanation about important stuff...
</BODY>
]PRE]

[8]
[CITE[IEは上パディングと上マージンで相殺を行っているみたい:メモランダム]] ([CODE[2007-08-04 03:44:15 +09:00]] 版) <http://mynotes.jp/blog/2007/08/ie_collapses_padding_and_margin>
([[名無しさん]])

[9]
[CITE@ja[body 要素の最初の内包要素に上マージンがある場合の body 要素デフォルトのマージン処理 - 2xup.org]] ([[Taichi Kaminogoya]] 著, [CODE[2007-08-01 18:13:03 +09:00]] 版) <http://2xup.org/log/2007/07/31-2030>
([[名無しさん]] [WEAK[2007-08-04 02:16:46 +00:00]])

[10]
[CITE[body直下要素に上マージン:メモランダム]] ([CODE[2007-08-04 03:44:15 +09:00]] 版) <http://mynotes.jp/blog/2007/07/margin-top_on_element_under_body>
([[名無しさん]] [WEAK[2007-08-04 03:48:22 +00:00]])

[11]
[CITE[body直下要素に上マージン その2:メモランダム]] ([CODE[2007-08-04 03:44:15 +09:00]] 版) <http://mynotes.jp/blog/2007/08/margin-top_on_element_under_body2>
([[名無しさん]])


[12]
[CITE[IEは上パディングと上マージンで相殺を行っているみたい:メモランダム]] ([TIME[2007-08-04 03:44:15 +09:00]] 版) <http://mynotes.jp/blog/2007/08/ie_collapses_padding_and_margin>

[17] [[IE]] の[[ヘルプ]]より:
>
[PRE(HTML code)[
<BODY helptype="topic" helpurl="mshelp://windows/?id=8f2c3a40-b8f6-46b7-b5f9-13c99ed70b2c" helpsource="online" helptopictype="tutorial" LANG="ja">
]PRE]

* 歴史

[2] [[JIS X 4151]]‐1992 参考3 4.2.1 の例で「本体」を表す 
[CODE(SGMLe)[body]] 要素型が登場してます。

** [CODE[body]] の誕生


[49] 
[CODE[body]] は [[HTML]] の元になった [[SGMLguid]] にもありましたが、
直接 [[HTML]] に受け継がれたものではありませんでした。
[[HTML 1991]]
時点で 
[CODE[html]], [CODE[head]], [CODE[body]] に相当するものはありませんでした。

[50] 
[[Dan Connolly]]
が
[CODE[head]] / [CODE[header]]
と
[CODE[body]]
を提案し
[[Tim Berners-Lee]]
がこれに賛同したのは、
直接的には[[RFC 822メッセージ]]の [[header]] / [[body]]
との類似性が決め手になったようですが、
[CODE[body]]
という名前を選んだのは
[[SGML]]
に詳しい
[[Dan Connolly]]
が
[[SGML文書]]でこの[[要素名]]が使われていたことや
[[Tim Berners-Lee]]
も
[[SGMLguid]] でそれを使った経験を持っていたことが背景としてあったとは思われます。

[51] 
従って広い意味で [[SGML]] の伝統に沿ったものとはいえ、一応 [[HTML]]
で独立に開発されたものといえます。


[FIG(data)[ [47] [[HTML要素概説]]

:[F[要素名]]:[CODE[body]]
:日付:[TIME[1992-07-15]]
:説明:
[TIME[1992-07-15]]版
[[HTML DTD]]
に
[CODE[body]]
がある。
[SRC[HTML19920715]]
[[HTML]]
の
[CODE[body]]
の初出と思われる。
[[混合内容問題]]回避のためとされる。
前月の [[DTD]]
では [CODE[section]] 
だったが、最外のみ [CODE[body]]
に改められた。

]FIG]


[52] [CITE[html2mml.l -- FrameMaker support for HTML]], [TIME[2003-08-04T15:50:19.000Z]], [TIME[2024-09-29T07:42:14.964Z]] <https://lists.w3.org/Archives/Public/www-talk/1992JulAug/0029.html>

[53] >>52 さっそく [CODE[body]] が実装されている。


[FIG(data)[ [43] [[HTML要素概説]]

:[F[要素名]]:[CODE[body]]
:[F[要素名]]:[CODE[document]]
:[F[要素名]]:[CODE[heading]]
:[F[要素名]]:[CODE[header]]
:日付:[TIME[1992-11-19]]
:説明:
[TIME[1992-11-19]]、
[[Dan Connolly]]
は [[www-talk]] への投稿で、
[[文書]]の「body」の大部分を含める
[CODE[document]]
要素を新設するのがよいとした。別案として、[[要素名]]を
[CODE[body]]
とし、対になる [CODE[heading]] を追加することも提案した。
[SRC[>>45]]
:説明:
[[Tim Berners‑Lee]]
はそれに対する返信で、後者案に賛同した。
[SRC[>>46]]
このとき編集されたと思われる[[Webページ]]では、
後者案をもとに Header と [CODE(HTML)[Body]] と書いている。
[SEE[>>54]]
[SRC[>>44]]
:出典:
[REFS[

-[45] 
[DFN[DTDIssuesDan]]:
[CITE@en[HTML DTD issues]], 
[DATA(.author)[[[Dan Connolly]]]],
[TIME(.published)[Thu, 19 Nov 92 04:37:23 CST][1992-11-19T04:37:23-06:00]],
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-12T08:33:49.120Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0068.html>
-[46] 
[DFN[DTDIssuesTim]]:
[CITE@en[Re: HTML DTD issues]], 
[DATA(.author)[[[Tim Berners-Lee]]]],
[TIME(.published)[Thu, 19 Nov 92 14:32:11 +0100][1992-11-19T14:32:11+01:00]],
[TIME[2003-08-04T15:50:21.000Z]], [TIME[2024-08-12T09:03:57.925Z]] <https://lists.w3.org/Archives/Public/www-talk/1992NovDec/0072.html>
- [44] 
[DFN[FuturePlans]]:
[CITE@en[Future plans for HTML]], 
[DATA(.author)[[[Tim Berners-Lee]]]],
[TIME(.published)[1992-12-02T18:35:56.000Z]], [TIME[2024-08-12T09:20:27.147Z]] <https://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/Future.html>

]REFS]
:注釈:
- 
[54] 
ここでの Header は[[Webページ]]内の見出しで、[[要素名]]は明らかでない。

]FIG]


**

[13] [CITE[Synchronized Multimedia Integration Language]] ([TIME[1998-06-16 04:11:22 +09:00]] 版) <http://www.w3.org/TR/1998/REC-smil-19980615/#body>

[14] [[WordprocessingML]] も[[要素型]] [CODE(XMLe)@en[w:[[body]]]] を使っています。


[48] [CITE[HTML TADS deviations from standard HTML specifications]], [TIME[2007-06-23T19:42:00.000Z]], [TIME[2024-08-17T11:50:05.445Z]] <https://www.tads.org/t3doc/doc/htmltads/deviate.htm#deviations>


** [CODE[BODY]] 要素 (DjVu XML)

[273] 
[[DjVu XML]]
には
[[HTML]]
の
[CODE[body]]
[[要素]]から派生した
[DFN[[CODE[BODY]]]]
[[要素]]がありました。



**

[15] [CITE[''''''[''''''whatwg'''''']'''''' Specification unclear about how HTMLElement.prototype.onscroll's getter/setter should behave for "body" elements]]
( ([TIME[2012-12-04 06:17:20 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-December/038221.html>

[16] [CODE(HTMLe)@en[[[body]]]] [[終了タグ]]は、
[CODE(HTML)@en[<marquee></body>]], 
[CODE(HTML)@en[<svg><foreignobject></body>]]
のような場合や、 [CODE(HTMLa)@en[[[innerHTML]]]] の場合
([CODE(HTMLe)@en[[[html]]]] 以外) には無視されます。


[FIG(quote)[
[FIGCAPTION[
[3] [CITE[XEP-0071: XHTML-IM]]
([TIME[2014-04-09 01:56:46 +09:00]] 版)
<http://www.xmpp.org/extensions/xep-0071.html#wrapper>
]FIGCAPTION]

> The root element for including XHTML content within XMPP stanzas is <html/>. This element is qualified by the 'http://jabber.org/protocol/xhtml-im' namespace. From the perspective of XMPP, the wrapper element functions as an XMPP extension element; from the perspective of XHTML, it functions as a wrapper for XHTML 1.0 content qualified by the 'http://www.w3.org/1999/xhtml' namespace. Such XHTML content MUST be contained in one or more <body/> elements qualified by the 'http://www.w3.org/1999/xhtml' namespace and MUST conform to the XHTML-IM Integration Set defined in the following section. If more than one <body/> element is included in the <html/> wrapper element, each <body/> element MUST possess an 'xml:lang' attribute with a distinct value, where the value of that attribute MUST adhere to the rules defined in RFC 5646 '''['''18''']'''. 

]FIG]


[18] [CITE@en[Remove <iframe seamless> · whatwg/html@1490eba]]
([TIME[2016-02-04 19:23:06 +09:00]] 版)
<https://github.com/whatwg/html/commit/1490eba4dba5ab476f0981443a86c01acae01311>

[FIG(quote)[
[FIGCAPTION[
[19] [CITE@ja[民泊のエアビーアンドビー、苦情サイト新設 - WSJ]]
( ([[NATHAN OLIVAREZ-GILES]]著, [TIME[2016-06-03 19:07:49 +09:00]]))
<http://jp.wsj.com/articles/SB10513819889225894892604582103810164964978>
]FIGCAPTION]

>   <body 
>     id="article_body" 
>     class="pageFrame subType-unsubscribed edition-japan logged-out"
>     intent
>     in-width="*"
>     in-interaction="*"
>     itemscope
>     itemtype="//schema.org/NewsArticle">

]FIG]


[20] [CITE@en[Fix typo: remove a 'not' in body fills the viewport quirk]]
([[zcorpan]]著, [TIME[2016-06-30 17:49:41 +09:00]])
<https://github.com/whatwg/quirks/commit/0e348be84e29e4fd1812128d6ca85f3b247e5dfc>

[21] [CITE@en[Editorial: Cross-reference DOM "child" where appropriate in rendering]]
([[zcorpan]]著, [TIME[2016-09-20 20:16:41 +09:00]])
<https://github.com/whatwg/html/commit/e8c91c05edc8d6cdb33fdd5452e052359d40490b>

[22] [CITE@en[Editorial: add a note about the 'document's body element']]
([[zcorpan]]著, [TIME[2016-11-24 19:22:14 +09:00]])
<https://github.com/whatwg/quirks/commit/c82f966a8de5be77879a7c8a1b314925cee3b566>

[24] [CITE@en['''['''css-overflow''']''' body overflow propagation is less defined than it was in CSS 2.1 · Issue #1905 · w3c/csswg-drafts]]
([TIME[2018-01-04 15:17:41 +09:00]])
<https://github.com/w3c/csswg-drafts/issues/1905>

[25] [CITE@en[Restrict the main element to be used once per document]]
([[annevk]]著, [TIME[2018-01-23 17:10:16 +09:00]])
<https://github.com/whatwg/html/commit/1dec930b3df93c799d5f3f685a46940913476086>

[26] [CITE@en[Restrict the main element to be used once per document by annevk · Pull Request #3354 · whatwg/html]]
([TIME[2018-01-24 12:52:17 +09:00]])
<https://github.com/whatwg/html/pull/3354>

[27] [CITE@en[update <body> mappings / issue #117]]
([[jasonkiss]]著, [TIME[2018-02-07 05:08:33 +09:00]])
<https://github.com/w3c/html-aam/commit/724677bc4d14eefb30b207ab5f580a85477a0b19>

[28] [CITE@en[Body element likely should not map to ARIA document role · Issue #117 · w3c/html-aam]]
([TIME[2018-02-07 13:27:42 +09:00]])
<https://github.com/w3c/html-aam/issues/117>

[29] [CITE@en[leverage CORE mappings / issue #119]]
([[jasonkiss]]著, [TIME[2018-02-07 07:29:32 +09:00]])
<https://github.com/w3c/html-aam/commit/a1a661d9874e2674cd99b7dda1cf6962dc91df1b>

[30] [CITE@en[Should header, footer have "Use WAI-ARIA mapping" when scoped to the body element? · Issue #119 · w3c/html-aam]]
([TIME[2018-02-07 13:32:35 +09:00]])
<https://github.com/w3c/html-aam/issues/119>

[31] [CITE@en[update <body> mappings / issue #117]]
([[jasonkiss]]著, [TIME[2018-02-07 05:08:33 +09:00]])
<https://github.com/w3c/html-aam/commit/724677bc4d14eefb30b207ab5f580a85477a0b19>

[32] [CITE@en[Body element likely should not map to ARIA document role · Issue #117 · w3c/html-aam]]
([TIME[2018-05-08 21:18:08 +09:00]])
<https://github.com/w3c/html-aam/issues/117>

[33] [CITE@en[leverage CORE mappings / issue #119]]
([[jasonkiss]]著, [TIME[2018-02-07 07:29:32 +09:00]])
<https://github.com/w3c/html-aam/commit/a1a661d9874e2674cd99b7dda1cf6962dc91df1b>

[34] [CITE@en[Body Margin 8px | Miriam Eric Suzanne]], [TIME[2022-07-08T06:37:46.000Z]] <https://www.miriamsuzanne.com/2022/07/04/body-margin-8px/>

[35] >>34 [[CSS]] の起源までたどり着いて
「Final answer」
だとしちゃってるのは残念。
なんで 8px なの? って疑問に答えるにはもう一頑張りしないといけなかった。

[36] [CITE@en[ncsa-mosaic/HTML.c at 29c82be0c24dcf08125d3fe289b61ea9f1832bbf · alandipert/ncsa-mosaic · [[GitHub]]]], [TIME[2022-07-08T10:24:34.000Z]] <https://github.com/alandipert/ncsa-mosaic/blob/29c82be0c24dcf08125d3fe289b61ea9f1832bbf/libhtmlw/HTML.c#L68>

[37] [[GitHub]] で公開されている [[NCSA Mosaic]] の[[ソースコード]] >>36
みると、今で言う [CODE[margin-left]], [CODE[margin-top]]
は
[N[20]]
という値になっています。これがいつからこの値なのかわかりませんし、
この[[ソースコード]]がすべての[[プラットフォーム]]で使われていたのかもわかりませんし、
[N[20]]
の単位が
[[px]]
なのかもわかりませんけど...


[38] [CITE@en[File:NCSA Mosaic Browser Screenshot.png - [[Wikimedia Commons]]]], [TIME[2022-06-24T10:22:41.000Z]], [TIME[2022-07-08T10:26:26.704Z]] <https://commons.wikimedia.org/wiki/File:NCSA_Mosaic_Browser_Screenshot.png>


[39] 
それで試しに [[NCSA Mosaic]] の[[スクリーンショット]]を探してみると、
確かに 20px くらい空いてそうな感じがしますね。例えば >>38。
他にもいくつか出てきますけど、どれも今の [[Webブラウザー]]よりずっと余白が大きい。
文字の大きさと比べればよくわかります。

[40] 
[[Mosaic Netscape 0.9]] になると [CODE[margin-left]] は半角1文字分くらいになってますね。
[CODE[margin-top]] はいまいちはっきりしない[[スクリーンショット]]が多いのですけど、
[[Netscape Navigator]] 1.0 の[[スクリーンショット]]だと
[CODE[margin-top]] も半角1文字分くらいになってたみたいで。

[[Mosaic]] もその時代に [CODE[margin]] が小さくなっていたのか、それとも
[[Netscape]] が小さな値を選んだのか、気になりますね。
[[スクリーンショット]]で調べるのは限界があるので、
当時の環境を再現して調べてみたいものです。


[41] 
[[Line Mode Browser]]
がどうしていたのかはよくわからないなあ。
[CODE[body]] の [CODE[margin]]/[CODE[padding]] はほぼなくて
[CODE[h[VAR[n]]]] と [CODE[p]] とで [CODE[margin-left]]
が違うようにも見えなくもないけど、
[[スクリーンショット]]がいまいち信用できない (近年のエミュレーションも混じってる &
画面端がどこかよくわからない) し、
どんな [[HTML]] を解釈した結果なのかがわからないと断言しづらい。

[42] [[WorldWideWeb]] もようわからんなあ。。。
まあ WWW は [[Mosaic]] の仕様には直接影響していないのだろうけど。

