要素の階層構造

HTML

要素の階層構造とは

HTMLは要素同士が親子関係を作り階層構造を形成します。 要素間の関係を正しく表現することは、文書構造にとっても装飾にとっても重要です。

要素は互いの位置関係により、要素関係を以下のように表現します。

親要素と子要素

一つ外側の要素を「親要素」といいます。
下のコードのp要素から見てarticle要素は親要素になります。
逆にarticle要素から見たp要素は子要素になります。

lt;section>
  <article>
    <h1>見出し</h1>
    <p>文章</p>
  </article>
</section>

兄弟要素

同列の要素を「兄弟要素」といいます。
下のコードのh1要素とp要素は兄弟要素です。

lt;section>
  <article>
    <h1>見出し</h1>
    <p>文章</p>
  </article>
</section>

先祖要素と子孫要素

外側の要素を「先祖要素」、内側の要素を「子孫要素」といいます。
下のコードのh1要素から見たarticle要素とsection要素はどちらも先祖要素です。
逆にsection要素から見たarticle要素とh1要素はどちらも子孫要素です。

lt;section>
  <article>
    <h1>見出し</h1>
    <p>文章</p>
  </article>
</section>

要素の階層構造

HTMLでは要素同士が階層構造を形成します。階層構造は文書構造を形成する上で重要な概念です。 例えば下の記述はこれが見出しと段落である事は分かりますが、それ以上は分かりません。

lt;h1>見出し</h1>
<p>段落</p>

article要素の子要素なら、記事の見出しと段落であることが分かります。

lt;article>
  <h1>記事の見出し</h1>
  <p>記事の段落</p>
</article>

aside要素の子要素なら、サイドバー的なものの見出しと段落であることが分かります。

lt;aside>
  <h1>サイドバーの見出し</h1>
  <p>サイドバーの段落</p>
</aside>

このように要素同士が階層構造を取ることで、より具体的に要素の役割を示すことができるのです。 また要素の関係はCSSの適用先としても使えます。「article要素内のh1要素のみにスタイルを適用」といった指定ができるので、装飾においても重要な概念なのです。

要素同士の構造でやってはいけないこと

親要素は子要素より先に終了タグを付けてはならない

要素同士は外または中に記述するか、並べるかしかできません。 下のarticle要素とp要素のような表現しにくい妙な関係(入れ食い?)にするのはNGです。

誤ったコード

lt;article>
  <h1>見出し</h1>
<p>テキスト
</article>
</p>

正しいコード

lt;article>
  <h1>見出し</h1>
  <p>テキスト</p>
</article>

要素によって親・子要素にできない要素がある

要素の種類ごとに親・子要素にできる要素の種類が決まっています。 例えばp要素の中にp要素やarticle要素やh1要素などを入れる事はできません。 正しい文書構造を実現するために、要素に対して親・子にできる要素のルールが設定されているのです。

下の例は「駄目」の部分だけ赤くしようとした例です。
しかしp要素の中にp要素を入れることはできないため間違いです。

誤ったコード

lt;article>
  <p>この例は<p class="red">駄目</p>な例です。</p>
</article>

正しくはspan要素内で部分的に色を変えます。

正しいコード

lt;article>
  <p>この例は<span class="red">良い</span>な例です。</p>
</article>
eyecatch

body要素内をマークアップする流れ

eyecatch

HTMLの歴史

HTMLの記事

eyecatch

属性セレクタで条件下の属性のスタイルを変える

eyecatch

要素と属性

eyecatch

コンテンツモデルとコンテキスト

eyecatch

実体参照(記号・特殊文字)一覧

eyecatch

HTMLとは

eyecatch

見出し要素(h1~h6)の使い方

HTMLの記事一覧HOME