<section>

HTML <section> 元素表示 HTML 文档中一个通用独立章节,它没有更具体的语义元素来表示。一般来说会包含一个标题。

尝试一下

内容分类 流式元素,章节元素,短语元素。
允许的内容 流式元素。
标签省略 不允许,开始标签和结束标签都不能省略。
允许的父元素 接受流式元素的任何元素。请注意,<section> 元素不能是 <address> 元素的后代。
隐含的 ARIA 角色 当该元素包含可访问的名称时,认为其是 region (en-US),否则为 No corresponding role
允许的 ARIA 角色 alert (en-US), alertdialog (en-US), application (en-US), banner (en-US), complementary (en-US), contentinfo (en-US), dialog (en-US), document (en-US), feed (en-US), log (en-US), main (en-US), marquee (en-US), navigation (en-US), search (en-US), status (en-US), tabpanel (en-US)
DOM 接口 HTMLElement

属性

此元素只包含全局属性

使用说明

如上所述,<section> 是一个通用的分节元素,只有在没有更具体的元素来代表它的时候才可以使用。举个例子,一个导航菜单应该被包裹在 <nav> 元素中,但搜索结果列表或地图显示及其控件并没有特定的元素,可以放在 <section> 里面。

注意事项:

  • 当该元素的内容可以作为一个独立的作品在多个媒体上发表,使用 <article> 是一个更好的选择。
  • 当内容包含代表与主要内容一同展示的有用的切入信息,但不是直接的一部分(如相关链接,作者简历等),请使用 <main>
  • 当内容代表文档中的主要内容区域,请使用 <main>
  • 将该元素作为一个样式包装时,请使用 <div>。一般来说,<section> 应该出现在文档大纲中。

再次重申,每个 <section> 都应该被标识出来,通常是将标题(<h1> (en-US)-<h6> (en-US)元素)作为 <section> 元素的一个子元素。请看下面的例子,你可能会看到没有标题的 <section>

示例

简单的使用示例

之前

html
<div>
  <h1>Heading</h1>
  <p>Bunch of awesome content</p>
</div>

之后

html
<section>
  <h1>Heading</h1>
  <p>Bunch of awesome content</p>
</section>

没有标题的使用示例

使用 <section>> 元素但不包含标题的情况,通常出现在 web 应用或用户界面的部分,而不是传统的文档结构中。在文档中,有独立的内容部分但没有标题来描述其内容,是没有任何意义的。标题对所有的读者都很有用,尤其是对使用屏幕阅读器等辅助技术的用户,同时标题也有利于搜索引擎优化。

在设置二级导航时,全局导航已经被包裹在 <nav> 元素中,此时可以使用 <section> 元素包裹一个上一个/下一个菜单作为二级导航。

html
<section>
  <a href="#">Previous article</a>
  <a href="#">Next article</a>
</section>

在设置控制应用程序的按钮栏时,需要将其作为文档中单独存在部分,但此时并不需要设置标题。

html
<section>
  <button class="reply">Reply</button>
  <button class="reply-all">Reply to all</button>
  <button class="fwd">Forward</button>
  <button class="del">Delete</button>>
</section>

没有标题的内容不会出现在文档大纲中。但如果文档大纲中需要包含这样一个 HTML 块,又不希望影响页面效果,可以通过设置隐藏标题来实现

html
<section>
  <h2 class="hidden">Controls</h2>
  <button class="reply">Reply</button>
  <button class="reply-all">Reply to all</button>
  <button class="fwd">Forward</button>
  <button class="del">Delete</button>>
</section>

确保使用一些辅助技术和对屏幕阅读器友好的 CSS 来隐藏它,就像这样。

css
.hidden {
  position: absolute;
  top: -9999px;
  left: -9999px;
}

根据内容来包含标题也有助于 SEO,因此,这是一个可以考虑的选择。

规范

Specification
HTML Standard
# the-section-element

浏览器兼容性

BCD tables only load in the browser

参见