语义化标签

HTML5 引入了一批"语义化标签",让结构一眼就能看懂——这是头部、那是导航、这是主体内容。它们功能上和 div 一样,但语义更清晰,搜索引擎和无障碍工具更友好。这一章是现代 HTML 的精髓。

1. 为什么需要语义化?

看两段代码,功能完全一样,但可读性天差地别:

<!-- 反面教材:全是 div,看不出含义 -->
<div class="header">
  <div class="nav">
    <div class="item">首页</div>
  </div>
</div>
<div class="main">
  <div class="post">……</div>
</div>
<div class="footer">……</div>

<!-- 正面教材:语义化标签,一眼看懂结构 -->
<header>
  <nav>……</nav>
</header>
<main>
  <article>……</article>
</main>
<footer>……</footer>

用 div 写的"div 汤"(div soup)只有样式,看不出含义;语义化标签则一目了然。语义化的价值:

2. 文档级语义标签

一个完整网页的"骨架"通常长这样:

<header>
  <h1>我的博客</h1>
  <nav>
    <a href="/">首页</a>
    <a href="/about">关于</a>
    <a href="/contact">联系</a>
  </nav>
</header>

<main>
  <article>
    <h2>文章标题</h2>
    <p>正文段落……</p>
    <section>
      <h3>第一小节</h3>
      <p>……</p>
    </section>
    <section>
      <h3>第二小节</h3>
      <p>……</p>
    </section>
  </article>

  <aside>
    <h3>相关推荐</h3>
    <ul>
      <li>另一篇文章</li>
    </ul>
  </aside>
</main>

<footer>
  <p>© 2026 我的博客</p>
</footer>

3. 逐个讲解

4. article vs section 怎么选?

这两个最容易混淆。判断方法:

两者可以互相嵌套:article 内多个 section 分小节,section 内的评论是 article。下面的例子是典型用法:

<article>
  <h1>2026 年度总结</h1>

  <section>
    <h2>工作</h2>
    <p>今年完成了 5 个项目……</p>
  </section>

  <section>
    <h2>生活</h2>
    <p>……</p>
  </section>

  <section>
    <h2>旅行</h2>
    <p>……</p>
  </section>
</article>
<!-- section 用于"按主题分组 + 自带标题";
     article 用于"可以独立分发的内容"。 -->

5. 实用辅助标签

除了上面几个,还有一些很实用的语义标签:

6. details 和 summary — 纯 HTML 折叠

FAQ 页常用"折叠面板",以前必须用 JS 实现。HTML5 提供了 details + summary,纯 HTML 就能折叠:

<details>
  <summary>常见问题:如何退款?</summary>
  <p>请在订单页点击"申请退款",客服会在 24 小时内审核。</p>
</details>

<details open>
  <summary>已经默认展开的问题</summary>
  <p>……</p>
</details>
<!-- details + summary 实现"折叠面板",
     纯 HTML 实现,不需要 JS。FAQ 页常用。 -->

默认折叠,加 open 属性默认展开。点击 summary 切换状态。如果要改样式(箭头图标等),再配合少量 CSS 即可。

7. 什么时候仍然用 div?

语义化标签不是要消灭 divdiv 仍然是"通用容器",在以下场景合理:

原则是:先看有没有合适的语义标签,没有再用 div。每写一个 div,先问问自己——这是 header? main? section? nav? 都不是才用 div。

8. 语义化的 SEO 价值

搜索引擎爬虫读你的 HTML 时,会重点看几个地方:

所以正确使用语义标签,等于告诉搜索引擎"这是核心内容、那是导航",有助于你的页面在搜索结果中排名提升。

9. 无障碍(a11y)价值

视障用户用读屏软件(如 NVDA、VoiceOver)浏览网页时,会朗读出每个元素的语义。比如读到 nav 会说"导航区,共 5 个链接";遇到 main 会允许用户按快捷键直接跳过广告进入主体。这种体验是 div 永远给不了的。

养成写语义标签的习惯,等于让你的网站对所有人开放——这是技术人的社会责任。

10. 实战示例:完整博客文章页

把所有语义标签组合起来,做一个完整的博客文章页:

<header>
  <h1>我的博客</h1>
  <nav>
    <a href="/">首页</a>
    <a href="/about">关于</a>
    <a href="/contact">联系</a>
  </nav>
</header>

<main>
  <article>
    <h2>文章标题</h2>
    <p>正文段落……</p>
    <section>
      <h3>第一小节</h3>
      <p>……</p>
    </section>
    <section>
      <h3>第二小节</h3>
      <p>……</p>
    </section>
  </article>

  <aside>
    <h3>相关推荐</h3>
    <ul>
      <li>另一篇文章</li>
    </ul>
  </aside>
</main>

<footer>
  <p>© 2026 我的博客</p>
</footer>

header + nav + main(article 内嵌 section)+ aside + footer——结构清晰、语义明确,SEO 和无障碍双友好。

小结

这一章你学会了 HTML5 全套语义标签,知道了 article/section 的区别,理解了语义化对 SEO 和无障碍的价值。原则:先找语义标签,再用 div。下一篇我们看让网页"动起来"的标签——音视频与嵌入

← 上一篇 表单

下一篇 音视频与嵌入

✈️💬