HTML 语义化标签

语义化就是用有含义的标签来描述内容,而不是把所有东西都用 <div> 包起来。HTML5 新增了大量语义化标签来覆盖常见的内容模式。

为什么需要语义化

<div>, id 方式(无语义):

html
<div id="header">
  <div id="nav">……</div>
</div>
<div id="content">
  <div class="post">……</div>
</div>
<div id="footer">……</div>

语义化方式:

html
<header>
  <nav>……</nav>
</header>
<main>
  <article>……</article>
</main>
<footer>……</footer>

语义化的好处:

  • 搜索引擎更好地理解页面结构,提升 SEO
  • 屏幕阅读器能识别内容区域,帮助障碍用户高效导航
  • 开发者一眼就能看懂页面骨架,降低维护成本

HTML5 语义化标签速查

标签含义
<header>页面或区块的头部
<nav>导航链接组
<main>文档主体(唯一)
<article>独立可分发的内容
<section>文档中的章节
<aside>侧边/补充内容
<footer>页面或区块的底部
<figure>插图、图表、代码块(带标题)
<figcaption><figure> 的标题
<time>日期/时间
<mark>高亮/标记
<details> + <summary>折叠展开区块

<figure><figcaption>

html
<figure>
  <img src="chart.png" alt="季度销售图表">
  <figcaption>图 1:2026 年 Q1 销售数据,同比增长 15%</figcaption>
</figure>

<figure>
  <pre><code>console.log('Hello');</code></pre>
  <figcaption>示例 1:一段简单的 JavaScript 代码</figcaption>
</figure>

<time> — 时间标注

html
<p>本文发布于 <time datetime="2026-06-02">2026 年 6 月 2 日</time>。</p>
<p>会议安排在 <time datetime="2026-06-05T14:00">下周四下午两点</time>。</p>

datetime 属性提供机器可读的时间格式,而标签内的文字是给人看的。

<details> + <summary> — 原生折叠

html
<details>
  <summary>点击展开查看详情</summary>
  <p>这里是隐藏的详细内容,默认折叠。</p>
  <p>可以包含多个段落、图片等任意内容。</p>
</details>

默认折叠,点击 <summary> 展开。可使用 open 属性默认展开:

html
<details open>
  <summary>常见问题</summary>
  <p>这里是回答……</p>
</details>

<address> — 联系信息

html
<address>
  邮箱:<a href="mailto:hello@example.com">hello@example.com</a><br>
  地址:上海市浦东新区<br>
  电话:<a href="tel:+862111111">021-11111</a>
</address>

<address> 只用于当前页面或文章的联系方式,不是随便一个地址都能用它。