Chapter05 セクションと基本構造

概要と目標 HTML5から追加された、
ページの構造を表す要素を学習しよう。

HTML5から追加された、章・節・項などのセクションを明示的に表す要素や、
ヘッダーやフッターなどの基本構造を表す要素を学習しましょう。

今回のゴール

RERUN

セクション 章・節・項などのセクションを
明確に表す。

HTML5よりも前は、h1要素 〜 h6要素を使って話題の階層を推測し判断していたが、
HTML5からは、そのようななどのセクションを明示的に表す要素が追加された。
これらの要素はセクショニング・コンテンツというカテゴリに分類されている。

セクショニング・コンテンツの要素
要素名 意味・役割 カテゴリ コンテンツ・モデル
section 章・節・項などの一般的なセクションを表す HTML5 新
  • フロー・コンテンツ
  • セクショニング・コンテンツ
フロー・コンテンツ
article 内容が完結している独立したセクションを表す要素 HTML5 新
  • フロー・コンテンツ
  • セクショニング・コンテンツ
フロー・コンテンツ
aside メインコンテンツに含まれない補足的なセクションを表す HTML5 新
  • フロー・コンテンツ
  • セクショニング・コンテンツ
フロー・コンテンツ
nav 主要なナビゲーションのセクションを表す HTML5 新
  • フロー・コンテンツ
  • セクショニング・コンテンツ
フロー・コンテンツ

section要素を使ってみよう。

section要素は、章・節・項などの一般的なセクションを表す。
基本的な話題の階層は、このsection要素を使う。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. 内容をよく読み、セクションの範囲を明示的に示す
chapter05/sectioning/index.html
<section>
  <h2>私たちにできること</h2>
  <p>私たちは、下記の技術でお客様のWebサイトを形に出来ます。</p>
</section>
<section>
  <h2>新着ブログ</h2>

  <h3>もうすぐHTMLの勉強が終わります。</h3>
  <p>皆さんこんにちは、もうすぐHTMLの勉強が終わるので、・・・<a href="#">もっと見る</a></p>

  <h3>テーブルとフォーム関連の要素を習得!</h3>
  <p>HTMLの中でも習得が困難なテーブルとフォーム関連の要素を・・・<a href="#">もっと見る</a></p>
</section>

article要素を使ってみよう。

article要素は、ブログやニュース記事などの独立したセクションを表す。
article要素は、その部分が独立したコンテンツとして成り立つ必要がある。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. 内容をよく読み、独立したコンテンツの範囲を明示的に示す
chapter05/sectioning/index.html
<section>
  <h2>新着ブログ</h2>
  <article>
    <h3>もうすぐHTMLの勉強が終わります。</h3>
    <p>皆さんこんにちは、もうすぐHTMLの勉強が終わるので、・・・<a href="#">もっと見る</a></p>
  </article>
  <article>
    <h3>テーブルとフォーム関連の要素を習得!</h3>
    <p>HTMLの中でも習得が困難なテーブルとフォーム関連の要素を・・・<a href="#">もっと見る</a></p>
  </article>
</section>

aside要素を使ってみよう。

aside要素は、メインコンテンツからは切り離すことが可能な補足的なセクションを表す。
具体的には、 補足情報余談広告サイドバーの補足コンテンツなどに利用する。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. 内容をよく読み、補足コンテンツの範囲を明示的に示す
chapter05/sectioning/index.html
<aside>
  <h2>関連リンク</h2>
  <ul>
    <li><a href="#">Dummy Cafe</a></li>
    <li><a href="#">架空温泉 だみい屋</a></li>
  </ul>
</aside>

nav要素を使ってみよう。

nav要素は、主要なナビゲーションを表す。
具体的にはサイトの全ページに一貫して表示されるグローバルナビゲーションなどに利用する

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. 内容をよく読み、主要なナビゲーションの範囲を明示的に示す
chapter05/sectioning/index.html
<nav>
  <h2>サイト内メニュー</h2>
  <ul>
    <li><a href="#">ホーム</a></li>
    <li><a href="#">サービス</a></li>
    <li><a href="#">私たちについて</a></li>
    <li><a href="#">お問い合わせ</a></li>
  </ul>
</nav>
  1. 上書き保存
  2. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内の「index.html」をダブルクリック。
  3. きちんと表示されているかを確認
ブラウザでの表示例

RERUN


アウトライン HTML5では、アウトラインを意識する。

HTML5では、セクションの階層構造を意識することが重要になる。
この階層構造のことをアウトラインと言い、セクショニング・コンテンツの各要素や、
ヘディング・コンテンツのh1要素 〜 h6要素を使うごとに生成される。

セクショニング・コンテンツの要素がない場合

セクショニング・コンテンツの要素を使わない場合は、見出しの要素が現れた時にセクションが始まる。
ただし、見出し要素の階層(見出し要素の数字)によって、新たなセクションとして始めるか、
サブセクションとして始めるかが異なる。

具体的には、見出し要素の階層が、前の見出し要素と同じ階層か、
それより上の階層であれば(数字が小さければ)現在のセクションを終了し、
新たなセクションとしてセクションを始める。
反対に、見出し要素の階層が、前の見出しより下の階層であれば(数字が大きければ)
現在のセクションのサブセクションとして、セクションを始める。
従って、作りたいアウトラインに合わせて適切にh1要素 〜 h6要素を使う必要がる。

セクショニング・コンテンツの要素がある場合

セクショニング・コンテンツの要素がある場合、セクショニング・コンテンツの要素が現れた時に、
現在のセクションのサブセクションが始まる。
なお、そのセクションの先頭にある見出しが、そのセクションの見出しとなる。
従って、セクショニング・コンテンツの要素を適切に使用していれば、
見出しの階層(見出し要素の数字)に関係なくアウトラインを生成出来る。
ただし、セクションの範囲はセクショニング・コンテンツの要素で明示的に示し、
その階層に合わせた見出しの要素を使うことが推奨されている。

アウトラインを確認できるサイト
下記のサイトは、HTMLのアウトラインを確認できるWebサイト。
作成したHTMLファイルをアップロードするか、URLを入力するか、直接コードを記述するかで確認が出来る。

HTML 5 Outliner


ページの基本構造 ヘッダー、フッターや、
メインコンテンツを明確に表す。

HTML5からヘッダーや、フッターメインコンテンツを明確に表す要素が追加された。
これらの要素を使ってページや記事のヘッダーやフッターなどを明示的に表す

ページの基本構造を表す要素
要素名 意味・役割 カテゴリ コンテンツ・モデル
header ヘッダーを表す HTML5 新 フロー・コンテンツ フロー・コンテンツ
(子孫に、別のheader要素、main要素、footer要素は配置できない)
main メインコンテンツを表す HTML5 新 フロー・コンテンツ フロー・コンテンツ
footer フッターを表す HTML5 新 フロー・コンテンツ フロー・コンテンツ
(子孫に、別のheader要素、main要素、footer要素は配置できない)
address 連絡先を表す フロー・コンテンツ フロー・コンテンツ
(子孫に、ヘディング・コンテンツ、セクショニング・コンテンツ、header要素、footer要素、address要素は配置できない)

header要素を使ってみよう。

header要素は、ページやセクションのヘッダーを表す。
具体的には、Webサイト内の全てのページに一貫して表示されるロゴやナビゲーションのグループ、
セクションの導入部分などに利用する。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. ヘッダーを明示的に表す
chapter05/sectioning/index.html
<header>
  <h1>Dummy 株式会社</h1>

  <nav>
    <h2>サイト内メニュー</h2>
    <ul>
      <li><a href="#">ホーム</a></li>
      <li><a href="#">サービス</a></li>
      <li><a href="#">私たちについて</a></li>
      <li><a href="#">お問い合わせ</a></li>
    </ul>
  </nav>
</header>

main要素を使ってみよう。

main要素は、ページの主要コンテンツを表す
この要素は、そのページ固有のメインコンテンツのみに使う。
また、article要素、 aside要素、 nav要素、 header要素、footer要素の中で使うことも出来ない。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. メインコンテンツを明示的に表す
chapter05/sectioning/index.html
<main>
  <section>
    <h2>私たちにできること</h2>
    <p>私たちは、下記の技術でお客様のWebサイトを形に出来ます。</p>
  </section>
  <section>
    <h2>新着ブログ</h2>
    <article>
      <h3>もうすぐHTMLの勉強が終わります。</h3>
      <p>皆さんこんにちは、もうすぐHTMLの勉強が終わるので、・・・<a href="#">もっと見る</a></p>
    </article>
    <article>
      <h3>テーブルとフォーム関連の要素を習得!</h3>
      <p>HTMLの中でも習得が困難なテーブルとフォーム関連の要素を・・・<a href="#">もっと見る</a></p>
    </article>
  </section>
</main>

footer要素を使ってみよう。

footer要素は、ページやセクションのフッターを表す要素。
具体的には、全ページの一番最後に一貫して表示されるサイトの連絡先情報や、 著作権情報、関連リンク。
ブログ記事などのセクション内では著者情報などに利用する。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. フッターを明示的に表す
chapter05/sectioning/index.html
<footer>
  <p>当サイトへのお問い合わせは、<a href="#">お問い合わせフォーム</a>からお願いします。</p>
  <p><small>&copy; 2018 Dummy All Rights Reserved.</small></p>
</footer>

address要素を使ってみよう。

address要素は、連絡先を表す。
address要素は、基本的にはサイトの連絡先を表すが、article要素内で使う場合は、 その記事の連絡先を表す。
なお、「address」という要素名だが、全ての住所に使う要素ではないので注意する。

  1. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内にある「index.html」をテキストエディタで開く
  2. サイトの連絡先情報をaddress要素に変更
chapter05/sectioning/index.html
<footer>
  <address>当サイトへのお問い合わせは、<a href="#">お問い合わせフォーム</a>からお願いします。</address>
  <p><small>&copy; 2018 Dummy All Rights Reserved.</small></p>
</footer>
  1. 上書き保存
  2. 「html-lessons」 › 「chapter05」 › 「sectioning」フォルダ内の「index.html」をダブルクリック。
  3. きちんと表示されているかを確認
ブラウザでの表示例

RERUN


練習問題 今回の理解度をチェック。

「chapter05」 › 「training」フォルダ内の「index.html」を開き、
下記の問題を解いて下さい。

ブラウザでの完成例

RERUN

解答例
chapter05/training/index.html
<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title>架空温泉 だみい屋</title>
</head>
<body>
  <header>
    <h1>架空温泉 だみい屋</h1>
    <nav>
      <h2>サイト内メニュー</h2>
      <ul>
        <li><a href="#">お部屋</a></li>
        <li><a href="#">お食事</a></li>
        <li><a href="#">お風呂</a></li>
        <li><a href="#">施設案内</a></li>
        <li><a href="#">よくある質問</a></li>
        <li><a href="#">ご宿泊プラン・予約</a></li>
      </ul>
    </nav>
  </header>

  <main>
    <section>
      <h2>大切な人と「ゆったり」過ごすお部屋。<br>ワンちゃんと「たっぷり」遊ぶお部屋。</h2>
      <p>
        だみい屋はビジネスや家族連れのお客様におすすめなスタンダードタイプのお部屋はもちろん、
        カップルにおすすめの<em>離れ</em>や、わんちゃん連れにおすすめな<em>ドッグラン付き</em>のお部屋をご用意致しております。
      </p>
      <section>
        <h3>ビジネスにおすすめ<br>スタンダード10畳</h3>
        <p>一番多い部屋数があるスタンダードの10畳のお部屋です。</p>
        <p><a href="#">スタンダード10畳の詳細を見る</a></p>
      </section>
      <section>
        <h3>カップルにおすすめ<br>離れ</h3>
        <p>プライベートな空間でゆったりできる、家族風呂付きの離れのお部屋です。</p>
        <p><a href="#">離れの詳細を見る</a></p>
      </section>
      <section>
        <h3>ワンちゃんにおすすめ<br>ドッグラン付き客室</h3>
        <p>ワンちゃんと一緒に旅行を楽しめる。ドッグラン付きのお部屋です。</p>
        <p><a href="#">ドッグラン付き客室の詳細を見る</a></p>
      </section>
    </section>

    <section>
      <h2>お客様の声</h2>
      <p>だみい屋に寄せられた「お客様の声」の一部をご紹介します。</p>
      <article>
        <h3>抜群のコストパフォーマンス!</h3>
        <p>部屋が広いくて料理もおいしい。繁華街からも近くてこの値段なら文句もないですね。</p>
        <footer>
          <p>S・Y さん</p>
        </footer>
      </article>
      <article>
        <h3>ドッグラン付きがうれしい!</h3>
        <p>
          温泉旅館で、ドッグランがついてる部屋があるのが嬉しいです。
          ただ、畳は少し凸凹してました。ワンちゃんがお部屋の中で走ってるからかな?
          まぁ私にとっては大満足な旅館でした。
        </p>
        <footer>
          <p>山田 さん</p>
        </footer>
      </article>
    </section>
  </main>

  <footer>
    <address>
      架空温泉 だみい屋<br>
      〒56X-00XX<br>
      大阪府架空市架空区架空1-1-1
    </address>
    <p><small>&copy; 2018 架空温泉 だみい屋.</small></p>
  </footer>
</body>
</html>

解答例は全問題のチェックボックスが on になるとご覧いただけます。

まとめ HTML5ではよりセマンテックな要素が追加された。

セクションを表す要素や、ヘッダー、フッター、メインコンテンツを表す要素など、
明示的にその範囲を表せるようになった。

  • セクションの範囲は、セクショニング・コンテンツの要素で明示的に表す
  • アウトライン構造を意識してマークアップする
  • 明示的に、ヘッダー、フッター、メインコンテンツを示す