Menu

HTML の section タグ: section、article、div の違い

<section> 要素は、1 つのテーマの内容を独自の見出しの下にまとめます。<section> を使う場面、<article> や <div> のほうが適している場面、3 つの入れ子の仕方、ラベルを付けた section がランドマークになる仕組みを解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

section タグの用途

<section> は 1 つのテーマの内容をまとめ、そのテーマを示す見出しで始まります。「Features」「Pricing」「FAQ」に分かれたランディングページは典型的な例です。

各セクションはページの章で、各見出しはページの目次の 1 行です。ほかのセマンティックなタグと同じく <section> には初期スタイルがなく、枠線は CSS で付けています。

section、article、div の違い

3 つは画面上では同じに見えます。違うのは、内容について何を伝えるかです。

要素意味判断の目安
<article>完結した、それだけで成り立つ内容別のサイトやフィードで単独で公開しても意味が通じるか
<section>より大きな全体のテーマ別の部分見出しがある (または必要) か、何かの 1 つの章か
<div>意味なし: スタイルやレイアウトのための箱CSS や JavaScript のためだけにあるか

ブログ記事、掲示板のコメント、ニュース記事、商品カードは article です。「Features」「第 2 章」「関連商品」は section です。3 枚のカードを横に並べる flex の行は div です。

section の中の article

2 つはどちらの向きにも入れ子にできます。ここでは「Latest posts」のセクションが、独立した記事をいくつか持っています。

<div class="grid"> に注目してください。カードを横に並べるためだけにあるので、div が正しいタグです。各投稿がそれだけで成り立つので、各カードは article です。

article の中の section

長い記事は、本の章のようにセクションに分けられます。見出しのレベルは記事自身の見出しから続けます。

青い箱が article (ガイド全体)、緑のバーがそのセクションです。セクションには 1 段下の見出しレベルを使います。h2 の記事は h3 のセクションを持ちます。

名前の付いた section はランドマークになる

スクリーンリーダーは特定の要素をランドマークとして一覧に出し、ユーザーはその間を移動できます。<section> が region ランドマークになるのは、アクセシブルな名前があるときだけです。aria-labelledby でその見出しを指しましょう。

<section aria-labelledby="pricing-title">
  <h2 id="pricing-title">Pricing</h2>
  ...
</section>

これは、ユーザーが直接移動したくなるいくつかのセクションにだけ行い、すべてのセクションには行わないようにしましょう。ランドマークが 20 個あるページは、1 つもないページと同じくらい見渡しにくくなります。名前のないセクションも、見出しがスクリーンリーダーの見出し一覧に表示されるので役に立ちます。

セクションはページ内リンクの移動先にも向いています。id を付ければ、href="#id" のリンクでそこへ移動できます。

よくある間違い

  • スタイルのための入れ物に <section> を使う。 見出しもテーマもないなら <div> を使いましょう。各レイアウト用タグの使いどころは セマンティック HTML のページで紹介しています。
  • 1 つのブログ記事を <section> で囲む。 それだけで成り立つ記事は <article> です。
  • 見出しのないセクション。 見た目だけ隠した見出しでもよいので見出しを付けるか、セクションかどうかを考え直しましょう。
  • <main> の代わりに <section> を使う。 ページのメインの内容は <main> に入れ、セクションはその中に置きます。
  • すべてのセクションに名前を付ける。 ランドマークの一覧が短く保たれるよう、aria-labelledby は重要なものにだけ付けましょう。

よくある質問

HTML の section タグとは何ですか?

<section> は、文書の章やランディングページの「料金」の部分のように、1 つのテーマに属する内容をまとめます。普通は、そのセクションが何についてのものかを示す見出しで始めます。

section と div の違いは何ですか?

<section> は、内容が独自の見出しを持つ、文書のテーマ別の部分であることを示します。<div> は何も示さず、スタイルやレイアウトのための箱です。CSS のための入れ物が欲しいだけなら <div> を使いましょう。

section と article の違いは何ですか?

<article> は、ブログ記事、コメント、商品カードのように、ページの外でもそれだけで意味が通じる内容です。<section> は、その文脈の中でだけ意味が通じる、より大きなものの一部です。その部分だけを単独で公開できるかを考え、できるなら article です。

article の中に section を、section の中に article を入れられますか?

どちらもできます。長い記事はセクションに分けられ、「最新の投稿」のようなセクションは記事の一覧を持てます。

section に見出しは必要ですか?

テーマに名前を付けるのは見出しなので、ほぼすべての場合に付けるべきです。見出しが思いつかないなら、その内容はおそらくセクションではなく、<div> のほうが合っています。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める