一般に、新しく行を起こしそれ特有のレイアウトで整形される要素を
ブロックレベル要素という。body
要素の直接の
子要素として現れることができるのはブロックレベル要素のみである。
HTML 4.01 Strict のブロックレベル要素は以下のとおり。
p, h1, h2, h3, h4, h5, h6, ul, ol, pre, dl, div,
blockquote, form, hr, table, fieldset, address
行を変えずに、文字列の持つ意味的なかたまりを局所的に表して 整形されるものをインライン要素(または行内要素)という。 インライン要素は上に挙げたブロックレベル要素以外の全ての要素で たとえば、
tt, i, b, big, small, em, strong, dfn, code,
samp, kbd, var, cite, abbr, acronym, a, img, object, br, script, map, q,
sub, sup, span, bdo, input, select, textarea, label, button
などが該当する。 何の要素にも含まれない単なる文字データ(#PCDATA)もインライン要素である。
body
の直接の子要素はブロックレベル要素でなければ
ならないので、以下の2つの例のうち前者は正しくない。
〜〜〜略〜〜〜 <body> はじめまして </body> 〜〜〜略〜〜〜
〜〜〜略〜〜〜 <body> <p>はじめまして</p> </body> 〜〜〜略〜〜〜
body
要素の中には(直接的には)ブロックレベル要素しか置けない。
このようにある要素の中に、ブロックレベル要素を置けるのか、インライン要素
を置けるのか、あるはどちらを置いてもいいのかが決まっている。
大原則として、インライン要素の中にはブロックレベル要素を置けない。 ブロックレベル要素を子要素として持てる要素は
body, blockquote
li, dd, ins, del, div, fieldset, form,
map, object, td, th
パラグラフを意味するp
要素は、上記に含まれていない。
p
要素は直接の子要素にインライン要素のみ持つことが許されてい
るので、以下の記述は誤りとなる。
<p>パラグラフ中に <ul> <li> 箇条書き </ul> 箇条書きは書けない。</p>
以下の要素はHTML 4.01 Strictでは使えない。
applet, area, basefont, center, dir, menu, font, isindex, s, strike, u
ある要素の実体に、付随的な意味を持たせる性質のことを属性 という。以前良く用いられていた以下の属性はHTML 4.01 Strictでは使えない。
align, width, size, border, background, text,
link, vlink, alink