HTMLのdivタグとheader・main・section・articleの使い分け方|サンプルコードで解説

HTML・CSS

HTMLの <div> タグを学習すると、次に多くの初心者が迷うポイントがあります。

「div は便利だけど、<header>や <main>、<section>、<article> はいつ使うの?」
「役割を持つタグを使う場合、div はどこに入れるの?」
「div は外側に置いても問題ないの?」
のような疑問です。

<div> タグは、要素をグループ化したり、レイアウトを作ったり、CSS を適用する範囲をまとめたりするための、とても重要なタグです。そのため、現在のWebサイト制作でも数多く使われています。

一方で、HTML には <header>、<main>、<section>、<article> など、ページやコンテンツの役割を表すタグも用意されています。

では、実際のWebサイトでは、これらのタグをどのように組み合わせて使っているのでしょうか。

結論から言うと、現在の HTML では「div を減らすこと」や「役割を持つタグだけで作ること」が目的ではありません。

ページ全体の構造や役割を表す部分には役割を持つタグを使い、その内部のレイアウトやデザインを作る部分では <div> を活用するという考え方が基本になります。

ここでは、実際の Webサイトでよく使われる HTML構造をサンプルコードで確認しながら、<div> と <header>、<main>、<section>、<article> の使い分け方を初心者にも分かりやすく解説します。

また、「div はどこに置けばいいの?」という初心者が迷いやすいポイントについても、外側・内側・中間という3つのパターンに分けて説明していきます。

実際のWebサイトではdivと役割を持つタグを組み合わせる

ここまでで、<div> タグと役割を持つタグは、それぞれ目的が異なることが分かりました。

では、実際のWebサイトではどのように使い分けられているのでしょうか。

プロのWeb制作では、「<div> タグをできるだけ減らす」のではなく、ページ全体の構造や役割を表す部分に役割を持つタグを使い、その内部のレイアウトやデザインを作る部分で <div> タグを活用するのが一般的です。

まずは、実際によく見かける HTML の例を見てみましょう。

<header>
 <h1>マイホームページ</h1>
</header>

<main>

 <section>
  <h2>おすすめの商品</h2>

  <div class="card-wrapper">

   <div class="card">
    <img src="item1.jpg" alt="商品1">
    <h3>商品タイトル1</h3>
    <p>商品の説明文です。</p>
   </div>

   <div class="card">
    <img src="item2.jpg" alt="商品2">
    <h3>商品タイトル2</h3>
    <p>商品の説明文です。</p>
   </div>

  </div>

 </section>
</main>

一見すると、「役割を持つタグ」と「<div> タグ」が混在していて少し複雑に感じるかもしれません。
しかし、このコードには明確なルールがあります。

外側のタグでページの役割を伝える

先ほどのサンプルコードを見ると、一番外側には <header>、<main>、<section> といった役割を持つタグが配置されています。

<header>
...
</header>

<main>
  <section>
    ...
  </section>
</main>

これらのタグは、ページ全体の大きな構造や役割を表すために使用します。
それぞれの役割は次のとおりです。

タグ役割
<header>ページやコンテンツの導入部分(サイト名やナビゲーションなど)
<main>ページの主となるコンテンツ
<section>1つのテーマとしてまとまった内容

このように、ページの大きな区切りに役割を持つタグを使うことで、「ここはページの上部」「ここから本文」「ここは1つのテーマ」といったページ構造を HTML で表現できます。

なお、役割を持つタグを使用したからといって、その中で <div> タグが使えなくなるわけではありません。
実際のWebサイトでは、このような大きな役割を持つタグの内側に、レイアウトやデザインを作るための <div> タグを数多く配置していくのが一般的です。

次は、その <div> タグがどのような場面で活躍しているのかを見ていきましょう。

内側のdivでデザインや構造を作る

続いて、<section> タグの内側にある <div> タグを見てみましょう。

<section>

 <div class="card-wrapper">

  <div class="card">
    ...
  </div>

  <div class="card">
    ...
  </div>

 </div>

</section>

ここで使われている <div> タグは、ページの役割を表すためではなく、デザインやレイアウトを作るために配置されています。

例えば、この例では次のような目的で <div> タグが利用されています。
card-wrapper
商品カードを横並びにしたり、カード全体をまとめて管理したりするためのグループ
card
1つの商品カードを囲み、背景色や枠線、余白などのデザインを適用するためのグループ

このように、CSS で見た目を整えたり、複数の要素をひとまとまりとして管理したりする場面では、現在でも <div> タグが中心となって使われています。

ここで理解しておきたいのは、「<section> の中だから <div> を使う」のではないということです。
<div> タグを使う理由は、その場所が <section> の中にあるからではなく、デザインやレイアウトを作るためのグループ化が必要だからです。
もし、この中にデザインやレイアウトを作る予定もないのであれば、無理に <div> で囲む必要はありません。

そのため、同じようなデザインや構造が必要であれば、<header> や <main>、<article> など、ほかの役割を持つタグの中でも <div> タグは数多く使われます。
つまり、役割を持つタグと <div> タグは競合する関係ではありません。

ページ全体の構造や役割は <header> や <main>、<section> などが担当し、その内部のデザインやレイアウト、要素のグループ化は <div> タグが担当する――これが、現在のWebサイト制作で最もよく見られる HTML の構成です。

divはどこに置いてもいい?外側・内側・中間の考え方

ここまでのサンプルコードでは、<div> タグは <section> タグの内側に配置されていました。

すると、初心者の方からよく次のような疑問が出てきます。
「<div> タグは役割を持つタグの中でしか使えないの?」
「<main> や <section> の外側に置いてはいけないの?」
「役割を持つタグ同士の間に <div> タグを入れても大丈夫?」

結論から言うと、HTMLの仕様では、<div> タグの配置場所に制限はありません。

HTMLの仕様ではdivの配置場所に制限はない

<div> タグは、要素をグループ化するための汎用的なタグです。

そのため、次のようなさまざまな場所で利用できます。
<header>タグの中
<main>タグの中
<section>タグの中
<article>タグの中
役割を持つタグの外側

つまり、「ここには <div> タグを書いてはいけない」というルールは基本的にありません。

ただし、「どこに置けるか」と「どこに置くのが適切か」は別の話です。

例えば、画面全体に背景色を付けるために役割を持つタグの外側へ

タグを配置することもあれば、カードを横並びにするために <section> タグの内側で利用することもあります。

重要なのは、「なぜそこに <div> タグが必要なのか」という目的があることです。

逆に、特にデザインやレイアウト、要素をまとめる目的もないのに、何となく <div> タグを追加してしまうと、HTML の構造が分かりにくくなる原因になります。

次の項目では、<div> タグを「内側」「外側」「中間」に配置する代表的なパターンを、それぞれサンプルコードで見ていきましょう。

基本形は「役割を持つタグの内側にdivを配置する」

実際のWeb制作で最もよく見かけるのが、役割を持つタグの内側に <div> タグを配置する書き方です。

例えば、次のような HTML です。

<main>

  <div class="container">

    <p>本文が入ります。</p>

  </div>

</main>

この例では、<main> タグが「このページの主要なコンテンツ」という役割を表し、その内側の <div class=”container”> が、本文をまとめたり、横幅や余白を調整したりするためのグループとして利用されています。

このように、
・<main>:ページの役割を表す
・<div>:デザインやレイアウトを作る
というように役割を分担すると、HTMLの構造が分かりやすくなります。

もちろん、<header> や <section>、<article> などの中でも考え方は同じです。

役割を持つタグでページの構造を表し、その内部で必要なレイアウトや装飾を <div> タグが担当する――これが現在のWeb制作で最も一般的な書き方です。

デザイン目的ならdivを外側に置くこともある

一方で、役割を持つタグの外側に <div> タグを配置することも珍しくありません。

例えば、画面全体に背景色や背景画像を表示したい場合は、次のような HTML になることがあります。

<div class="background">

  <main>

    <p>内容が入ります。</p>

  </main>

</div>

この場合、<div class=”background”> は、ページ全体に背景色や背景画像を適用するためのデザイン用のグループです。

例えば、次のような場面でよく利用されます。
画面いっぱいに背景色を表示する
背景画像を配置する
メインコンテンツ全体を装飾する
レイアウト全体の幅や余白を調整する

つまり、役割を持つタグの外側に <div> タグがあるからといって、HTML として間違っているわけではありません。

大切なのは、「背景を付ける」「レイアウトを制御する」といった目的が明確にあることです。

このように、<div> タグは役割を持つタグの内側だけでなく、必要に応じて外側でも活躍する非常に柔軟なタグなのです。

中間にdivを入れる場合は目的を明確にする

役割を持つタグ同士の中間に <div> タグを配置することもあります。

例えば、複数のコンテンツを横並びにしたい場合です。

<main>

 <div class="two-column">

  <section>
   ...
  </section>

  <section>
   ...
  </section>

 </div>

</main>

この例では、<div class=”two-column”> が2つの <section> をまとめ、CSS の Flexbox や Grid を使って2カラムレイアウトを実現する役割を持っています。

このように、デザインやレイアウトを作る目的がある場合は、役割を持つタグ同士の中間に <div> タグを配置しても全く問題ありません。

一方で、特に目的がないにもかかわらず、何となく <div> タグを挟んでしまうのは避けた方がよいでしょう。

<main>

 <div>

  <section>
   <h2>タイトル</h2>
  </section>

 </div>

</main>

この <div> タグにはクラス名もなく、CSS によるレイアウトや装飾、JavaScript で操作する目的もありません。

このような場合は、<div> タグを削除しても HTML の構造は変わらず、コードもすっきりします。

つまり、中間に <div> タグを配置すること自体が問題なのではありません。

「その <div> タグには、グループ化する目的があるか?」という視点で考えることが大切です。

レイアウトやデザイン、要素をまとめる役割があるなら積極的に利用し、特別な目的がないのであれば、無理に追加する必要はありません。

初心者が迷わないdivとタグ選びの判断基準

ここまで読んで、「考え方は分かったけれど、実際に HTML を書くときはどのタグを選べばいいの?」と思った方もいるでしょう。
そんなときは、次の順番で考えてみてください。

① ページ全体の役割を持つ場所か?
まずは、ページ全体の大きな構造を考えます。

例えば、次のような場所であれば、役割を持つタグを使用します。
ページやサイトの上部(ロゴやナビゲーションなど) → <header>
ページの主となるコンテンツ → <main>
ページやサイトの下部(著作権表記など) → <footer>

ページ全体の骨組みになる部分では、まず役割を持つタグを検討しましょう。

② 見出しを持つテーマのまとまりか?
次に考えるのは、その部分が1つのテーマとしてまとまった内容になっているかです。

このような場合は、<section> タグを検討します。

ただし、ここで注意したいのは、
「見出し(h2)があるから必ずsectionを使う」
という意味ではありません。

<section> は、単に見出しを囲むためのタグではなく、1つのテーマや話題のまとまりを表すためのタグです。

例えば、会社紹介ページがあるとします。

<h2>会社概要</h2>

<p>会社についての説明</p>

<h2>事業内容</h2>

<p>サービス内容についての説明</p>

<h2>お問い合わせ</h2>

<p>連絡先についての説明</p>

この場合、それぞれが別のテーマになっています。

そのため、次のように <section> で分けることができます。

<section>
  <h2>会社概要</h2>
  <p>会社についての説明</p>
</section>

<section>
  <h2>事業内容</h2>
  <p>サービス内容についての説明</p>
</section>

<section>
  <h2>お問い合わせ</h2>
  <p>連絡先についての説明</p>
</section>

このように、h2 ごとに話題が変わり、それぞれが1つのテーマとして成立している場合は、<section> が適しています。

一方で、1つのテーマの中に複数の小見出しがある場合は、すべてを別々の <section> にする必要はありません。

例えば「会社概要」というテーマの中に、
・所在地
・沿革
・代表者
という情報がある場合です。

<section>

  <h2>会社概要</h2>

  <h3>所在地</h3>
  <p>東京都...</p>

  <h3>沿革</h3>
  <p>創業...</p>

  <h3>代表者</h3>
  <p>代表者名...</p>

</section>

この場合は、「会社概要」という1つのテーマの中に、小さな項目が含まれているだけなので、<h3> ごとに <section> で分ける必要はありません。

判断するときは、次のように考えると分かりやすくなります。

「この部分だけを切り取った場合、1つのテーマとして説明できるか?」
・説明できる → <section> を検討する
・単なる項目や詳細説明 → 同じ <section> 内で扱う

つまり、<section> は「見出しを囲む箱」ではなく、1つのテーマをまとめるための箱です。

③ それだけで独立したコンテンツになるか?
次に、その内容だけを切り出しても、1つの記事や読み物として成立するかを考えます。

例えば、次のようなコンテンツです。
ブログの記事
ニュース記事
商品レビュー
ユーザーの口コミ

このような独立性の高い内容であれば、<article> タグを検討します。

④ それ以外はdivでOK
ここまでのどれにも当てはまらない場合は、<div> タグを使用しましょう。

例えば、
レイアウトを組む
横並びにする
背景色を付ける
余白を調整する
CSSを適用する範囲をまとめる
複数の要素をグループ化する
といった目的であれば、<div> タグが最適です。

迷ったときに無理に役割を持つタグを選ぶ必要はありません。

「これはデザインやレイアウトのためのグループだな」と思ったら、自信を持って <div> タグを使ってください。

まずは、この4つの判断基準を覚えておけば、初心者のうちはタグ選びで迷うことは少なくなるはずです。

迷ったときに覚えておきたいこと

<section< や <article> などの役割を持つタグを使うとき、初心者の方が不安に感じやすいのが、
「間違った使い方をするとSEOに悪影響が出るのでは?」
「アクセシビリティの面で問題になるのでは?」
という点です。

しかし、役割を持つタグは、検索順位を上げるための特別なタグではありません。
また、少し使い方を迷ったからといって、すぐにWebサイトが評価されなくなるようなものでもありません。

大切なのは、タグを増やすことや、正解の形を暗記することではありません。
HTMLの構造を理解し、その場所に適した役割を持たせることです。

役割を持つタグは、ページ構造を分かりやすく伝えるために役立ちます。特に、スクリーンリーダーなどの支援技術を利用する方にとって、ページの構造を把握する手助けになります。

ただし、「div を減らすために役割を持つタグを使う」という考え方ではありません。

まずは、以下の基本的な考え方を理解することが大切です。
・ページ全体の役割 → <header>、<main>、<footer>
・独立したコンテンツ → <article>
・テーマごとのまとまり → <section>
・レイアウトやグループ化 → <div>

役割を持つタグは「div を減らすためのルール」ではありません。

<div>と役割を持つタグは、それぞれ目的が異なります。

重要なのは、どちらか一方を選ぶことではなく、HTML で伝えたい情報と目的に合わせて使い分けることです。

タイトルとURLをコピーしました