Kodokon kodokon.com

语义化 HTML:构建一个真实的页面结构

用能赋予结构含义的标签替换你那些匿名的 div。

8 分钟 · 3 题

在 Kodokon 中打开本课

一个完全由 div 构成的页面能工作,但它什么也没说:对屏幕阅读器没说,对搜索引擎没说,对六个月后接手你代码的同事也没说。语义化标签描述每个区域的角色:headernavmainarticlesectionfooter

HTML
<body>
  <header>
    <nav aria-label="Main navigation">
      <a href="/">Home</a>
      <a href="/articles">Articles</a>
      <a href="/contact">Contact</a>
    </nav>
  </header>

  <main>
    <h1>The blog for curious devs</h1>
  </main>

  <footer>
    <p>&copy; 2026 Kodokon. All rights reserved.</p>
  </footer>
</body>
一个页面的标准语义骨架。

header 归纳页面头部(logo、导航),footer 归纳收尾信息(法律声明、次要链接)。main 承载主要内容,并且在页面上必须唯一nav 标记一个导航区域:主导航、面包屑或目录。

最微妙的区别:articlesection。经验法则:如果这个块脱离上下文仍然说得通(一篇博客文章、一条评论、一张产品卡片),它就是 article。如果它是某段内容内部的一个主题分组、有自己的标题,那它就是 section

HTML
<main>
  <article>
    <h1>Understanding semantic HTML</h1>
    <section>
      <h2>Accessibility</h2>
      <p>Screen readers rely on the
      structure to navigate.</p>
    </section>
    <section>
      <h2>SEO</h2>
      <p>Search engines understand the page better.</p>
    </section>
  </article>
</main>
一篇独立的文章,拆分成带标题的若干小节。

思考练习:在一个电商产品页上,你会如何标记客户评价的列表?每条评价都有作者、日期和能独立成立的内容:因此每条评价都是一个 article,而把它们归纳在一起、带有标题的“客户评价”块则是一个 section

知识检测

确认你已牢记本课的重点内容。

  1. 一个页面应该包含多少个 main 元素?
    • 只有一个,用来承载主要内容
    • 页面的每个区块各一个
    • 最多两个:一个给桌面端,一个给移动端
  2. 对于一条脱离上下文也说得通的博客评论,你应该选哪个元素?
    • section
    • div
    • article
    • aside
  3. 相比到处都是 div,语义化 HTML 的主要好处是什么?
    • 页面加载得更快
    • 机器(屏幕阅读器、搜索引擎)能理解结构
    • 语义化标签会自动应用样式