HTML の <section>
要素は、文書の自立した一般的なセクション (区間) を表します。そのセクションを表現するより意味的に具体的な要素がない場合に使用します。少数の例外を除いて、セクションには見出しを置いてください。
コンテンツカテゴリー | フローコンテンツ, 区分コンテンツ, 知覚可能コンテンツ |
---|---|
許可されている内容 | フローコンテンツ |
タグの省略 | {{no_tag_omission}} |
許可されている親要素 | フローコンテンツを受け入れるすべての要素。ただし、 <section> 要素は {{HTMLElement("address")}} 要素の子孫要素として配置してはならない。 |
暗黙の ARIA ロール | 要素にアクセシブル名がある場合はregion 、それ以外の場合は対応するロールなし |
許可されている ARIA ロール | {{ARIARole("alert")}}, {{ARIARole("alertdialog")}}, {{ARIARole("application")}}, {{ARIARole("banner")}}, {{ARIARole("complementary")}}, {{ARIARole("contentinfo")}}, {{ARIARole("dialog")}}, {{ARIARole("document")}}, {{ARIARole("feed")}}, {{ARIARole("log")}}, {{ARIARole("main")}}, {{ARIARole("marquee")}}, {{ARIARole("navigation")}}, {{ARIARole("none")}}, {{ARIARole("note")}}, {{ARIARole("presentation")}}, {{ARIARole("search")}}, {{ARIARole("status")}}, {{ARIARole("tabpanel")}} |
DOM インターフェイス | {{domxref("HTMLElement")}} |
この要素にはグローバル属性のみがあります。
前述のように、 <section>
は汎用的な区分要素ですので、それを表現するためのより具体的な要素がない場合にのみ使用してください。例えば、ナビゲーションメニューは {{htmlelement("nav")}} 要素で囲むべきですが、検索結果のリストや地図表示とそのコントロールなどは特定の要素を持たないので、 <section>
の中に入れることができます。
また、次のようなことも考慮してください。
<section>
は文書のアウトラインの中に論理的に現れるべきです。繰り返しになりますが、それぞれの <section>
はできるだけ、特に見出し
({{HTMLElement('h1')}}-{{HTMLElement('h6')}} 要素) を <section>
の子要素に含めて識別できるようにするべきです。見出しのない <section>
の例については以下を参照してください。
<div> <h2>見出し</h2> <p>素晴らしいコンテンツの数々</p> </div>
<section> <h2>見出し</h2> <p>素晴らしいコンテンツの数々</p> </section>
<section>
が見出しなしで使用されている状況は、伝統的な文書構造よりも、ウェブアプリケーションや UI のセクションでよく見られます。文書内では、コンテンツの内容を示す見出しのない独立したセクションがあっても、実際には何の意味もありません。このような見出しは、すべての読者にとって便利ですが、特に画面リーダーのような支援技術のユーザーにとっては便利であり、また、 SEO にも有効です。
しかし、二次的なナビゲーションの仕組みを考えてみましょう。グローバルナビゲーションがすでに <nav>
要素で囲まれている場合、 <section>
の中に前へ/次へのメニューを入れることも考えられます。
<section> <a href="#">前の記事</a> <a href="#">次の記事</a> </section>
また、アプリを制御するためのボタンバーのようなものはどうでしょうか。必ずしも見出しが必要ではないかもしれませんが、それでも文書の明確なセクションであることに変わりはありません。
<section> <button class="reply">返信</button> <button class="reply-all">全員に返信</button> <button class="fwd">転送</button> <button class="del">削除</button> </section>
見出しのないセクションは、文書のアウトラインには表示されません。このような HTML ブロックを文書のアウトラインの中に強制的に入れたいが、視覚的な出力には何の影響も与えたくない場合は、非表示にした見出しを入れることができます。
<section> <h2 class="hidden">コントロール</h2> <button class="reply">返信</button> <button class="reply-all">全員に返信</button> <button class="fwd">転送</button> <button class="del">削除</button> </section>
支援技術や画面リーダーに適した CSS を使って非表示にするには、次のようにします。
.hidden { position: absolute; top: -9999px; left: -9999px; }
コンテンツによっては、見出しを入れることで SEO 施策にもなるので、選択肢の一つとして検討してみてはいかがでしょうか。
仕様書 | 状態 | 備考 |
---|---|---|
{{SpecName('HTML WHATWG', 'sections.html#the-section-element', '<section>')}} | {{Spec2('HTML WHATWG')}} | |
{{SpecName('HTML5.1', 'sections.html#the-section-element', '<section>')}} | {{Spec2('HTML5.1')}} | |
{{SpecName('HTML5 W3C', 'sections.html#the-section-element', '<section>')}} | {{Spec2('HTML5 W3C')}} |
{{Compat("html.elements.section")}}