【HTML】divタグとsectionタグの違い・使い分けまとめ【全てdivだとNGです】

悩める人「プログラミング初心者です。HTMLの、divタグとsectionタグの違いがよく分かりません。ぶっちゃけ、全部divタグで良いと思っているんですが、、、」
こんにちは、TOMO(@Tomo___san_2525)です。
プログラミングを独学しており、現在はWebページのコーディング案件で稼いでいます。
加えてSEOについても学んでいまして、正しいhtml記述によってクローラーからの評価を上げられるエンジニアを目指しています。
この記事で到達できるゴール
- divとsectionの違いが分かる
- 全てにdivタグを使用するのはNGであることが分かる
- divとsectionの使い分けができるようになる
僕自身もあやふやになっていた部分でして、この記事にてまとめます。
divタグとsectionタグの違い【明確に使い分けるべき】
下記のとおりです。
div
タグ = CSSでクラス指定するために使うsection
タグ = Webページの構造を示すために使う
上記です。
詳細はこのあと解説しますが、、、。
divとsectionでは、「目的」が完全に異なることは覚えておくべき。
divタグ = CSSで「見た目」をいじりたいときに使う
例えば、下記のような感じですね。
1 |
<div class="yellow-text">この文章は、cssで黄色に設定します</div> |
divタグは、cssにてデザインを定義する際に「class」や「id」を指定するため「だけ」に使います。
divタグは「意味」を持たない【ただ単に「区画」するだけ】
下記です。
HTML の コンテンツ分割要素 (
<div>
) は、フローコンテンツの汎用コンテナーです。 CSS を用いてスタイル付けがされるまでは、コンテンツやレイアウトには影響を与えません。MDNより一部抜粋
つまり、cssで指定しデザインをいじるため”だけ”のものであり、「意味」を持たないということ。
Googleから見ると、意味のない区画で囲われているように見えているってことです。
「汎用コンテナー」と呼ばれるdivタグには、「ただ、その範囲を区画して名前を付けるだけ」の効果しかないと覚えておけばOKです。
sectionタグ = 1つの「項目」だと示すために使う
いっぽうsectionタグは、下記です。
HTML の
<section>
要素は、 HTML 文書の中で単独のセクション (区間) を表します。MDNより一部抜粋
上記のとおりでして、そのWebページの「構造」を分かりやすくするために使います。
例えば、下記ですね。
1 2 3 4 |
<section class="main-wrap"> <h2>ようこそ、〇〇農園のサイトへ!</h2> <p>〇〇農園では、りんごやぶどうなどを栽培し、オンライン販売しています。</p> </section> |
上記です。
「〇〇農園」のWebページ内で、「自社について紹介する区間」を示しています。
sectionタグは「意味」を持つ
divタグと違い、sectionタグにはそれだけで「意味」があります。
cssで指定しなくても、「自己紹介の区画」「商品紹介の区画」「お問い合わせフォームの区画」などという「構造」を意味付けすることができます。
もう一度まとめると、
- ページ内で、コンテンツの内容が変わるとき =
sectionタグ
- 単に、cssでいじるためにclass指定をしたいとき =
divタグ
上記でOKです。
よくある質問:『全部divじゃダメなんですか?』
結論、NGです。
根拠は、下記のとおり。
<section>
要素を単なる汎用コンテナーとして使用しないでください。このような場合、特にスタイル付けのみの目的で区切るのは<div>
の役割です。大まかに言えば、 section は文書のアウトラインに論理的に現れるものに使用してください。MDNより一部抜粋
上記です。
繰り返しですが、divタグは「見た目をいじるためだけに使うもの」です。
悪い例【全てdiv = セクションが1つもないページ】
1 2 3 4 5 6 7 8 9 10 11 |
<div class="jikosyoukai"> <h2 class="top-title">自己紹介</h2> <div class="name-and-text"> <div class="name"> <p>TOMO</p> </div> <div class="text"> <p>こんにちは、TOMOです。僕は現在会社員をしながらフリーのFPとしても活動しています。プログラミングやSEOについても独学中です。</p> </div> </div> </div> |
改善した例【sectionを正しく使う】
1 2 3 4 5 6 7 8 9 10 11 |
<section class="jikosyoukai"> <h2 class="top-title">自己紹介</h2> <div class="name-and-text"> <div class="name"> <p>TOMO</p> </div> <div class="text"> <p>こんにちは、TOMOです。僕は現在会社員をしながらフリーのFPとしても活動しています。プログラミングやSEOについても独学中です。</p> </div> </div> </section> |
ページ内にて「自己紹介」をするのは1ヶ所だけですよね。ならば、sectionにて意味を持たせるべきです。
sectionを使うもう1つのメリット
「見出しタグ」のリセットです。
例えば、下記のとおり。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<section class="main-wrap"> <h1>自己紹介</h1> <p>こんにちは、・・・</p> <h2>このページについて</h2> <p>このページでは、・・・</p> </section> <section class="second-wrap"> <h1>商品紹介</h1> <p>販売している商品を、まとめて紹介しています。</p> <h2>?りんご</h2> <ul> <li>シナノスイート</li> <li>津軽</li> <li>シナノゴールド</li> </ul> </section> |
上記です。
sectionごとにh1タグから使用できるので、管理が簡単になるというメリットがあります。
divとsectionの違いを正しく知る方法【2つある】
下記のとおり。
- ドットインストール(有料バージョン)
- iSara模写
- Udemy
の動画教材
ドットインストールでは、有料アカウントになると使える「詳解HTML 基礎文法編」という動画内にて分かりやすく解説してくれます。
コーディング練習で有名なiSaraの模写をする場合、GoogleデベロッパーツールでHTML構造を見ると、適所にsectionタグが使用されているのが分かるはずです。
Progateでは全てdivタグです
divタグは便利だけど、「最終手段」と考えるべき
下記です。
<div>
要素は、他に適切な意味的要素がない場合に限り使用してください。MDNより一部抜粋
上記のとおり。
あくまでも、「見た目のために、最終手段として使う」と覚えておけばOKです。
よくある質問:『divとsectionは、それぞれ「入れ子」にしてもいいの?』
結論、どちらも「入れ子」にすることが可能です。
例を示すと下記のとおり。
divタグの中にsectionタグ
1 2 3 4 5 6 7 |
<div class="main-wrap"> <section class="name-and-text"> <h1>自己紹介</h1> <p>こんにちは、TOMOです。</p> <p>僕は現在、・・・</p> </section> </div> |
sectionタグの中にdivタグ
1 2 3 4 5 6 7 8 9 |
<section class="name-and-text"> <div class="name"> <h1>自己紹介</h1> <p>こんにちは、TOMOです。・・・</p> </div> <div class="text"> <p>僕は現在、・・・</p> </div> </section> |
上記のとおりです。
なお、前者は「自己紹介」の部分全てを一括でcss指定したいとき(背景色をいじりたいなど)に使用できます。
いっぽう後者の場合「h1」と「p」のそれぞれの文字色やフォントサイズなどをいじるときに適しています。
詳細は»MDN Web docsのページをご確認ください。
それでは、今回は以上です。
プログラミング独学におすすめの書籍【この記事の執筆にも使用しました】