HTML 语义化标签

本章目的

让网页结构更清晰、更有意义,使用语义化标签代替通用的 div,提升代码的可读性、SEO 和无障碍访问性。


什么是语义化标签?

语义化标签(Semantic Tags)是 HTML5 引入的具有明确含义的标签,比如 <header>(头部)、<nav>(导航)、<article>(文章)等。

通俗理解

假设你在整理一本书的内容:

没有语义化(使用 div

<div>第一章</div>
<div>这是第一章的内容...</div>
<div>第二章</div>
<div>这是第二章的内容...</div>

就像把所有页面混在一起,看不出谁是标题、谁是内容。

有语义化

<h1>第一章</h1>
<p>这是第一章的内容...</p>
<h2>第二章</h2>
<p>这是第二章的内容...</p>

就像给每页贴上标签:“这是标题”、“这是正文”,一目了然。


为什么使用语义化标签?

1. 提高可读性

使用语义化标签的代码更容易理解:

<!-- 有语义化,一眼就能看出页面结构 -->
<header>网站标题</header>
<nav>导航菜单</nav>
<main>主要内容</main>
<footer>页脚信息</footer>

<!-- 没有语义化,需要猜测每个 div 的作用 -->
<div class="header">网站标题</div>
<div class="nav">导航菜单</div>
<div class="main">主要内容</div>
<div class="footer">页脚信息</div>

2. SEO 优化

搜索引擎(如 Google、百度)会根据语义化标签理解网页结构,给重要内容更高权重。例如:

  • <h1> 中的内容会被认为是最重要的标题
  • <article> 中的内容会被识别为独立文章
  • <nav> 中的链接会被识别为导航链接

3. 无障碍访问

屏幕阅读器等辅助技术会根据语义化标签快速定位内容,让视障用户更方便地浏览网页。例如:

  • 可以直接跳转到导航区域
  • 可以直接跳转到主要内容区域
  • 可以快速找到文章标题和段落

4. 维护性更好

语义化标签让代码结构更清晰,团队协作和后期维护都更方便。新增功能或修改样式时,能快速定位到正确的元素。


常用语义化标签

页面结构标签

标签 含义 使用场景
<header> 页面或区域的头部 网站标题、logo、导航、搜索框
<nav> 导航区域 主导航、侧边导航、面包屑导航
<main> 页面主要内容 页面的核心内容,每个页面只有一个
<footer> 页面或区域的底部 版权信息、联系方式、友情链接

内容组织标签

标签 含义 使用场景
<section> 内容区块 将相关内容分组,如"产品介绍"区块
<article> 独立的文章内容 新闻文章、博客文章、评论
<aside> 侧边栏内容 侧边栏、广告、相关推荐
<figure> 图文说明 图片或代码块及其说明
<figcaption> figure 的说明文字 图片的标题或代码的注释

文本辅助标签

标签 含义 使用场景
<time> 时间日期 发布时间、活动日期
<address> 联系信息/署名 作者信息、联系方式
<details> 折叠内容 FAQ、补充说明
<summary> details 的标题 折叠内容的标题

实战示例

典型博客页面结构

<body>
    <header>
        <h1>我的博客</h1>
        <nav aria-label="主导航">
            <a href="#home">首页</a>
            <a href="#articles">文章</a>
            <a href="#about">关于</a>
        </nav>
    </header>

    <main>
        <article>
            <header>
                <h2>文章标题:学习 HTML 语义化</h2>
                <p><time datetime="2026-01-24">发表于 2026-01-24</time></p>
            </header>

            <section>
                <h3>为什么使用语义标签?</h3>
                <p>更好的可读性、可访问性、SEO,以及更清晰的结构。</p>
            </section>

            <footer>
                <address>作者:前端爱好者 · 邮箱:example@example.com</address>
            </footer>
        </article>

        <aside>
            <h3>相关文章</h3>
            <ul>
                <li><a href="#">HTML 基础入门</a></li>
                <li><a href="#">CSS 布局技巧</a></li>
            </ul>
        </aside>
    </main>

    <footer>
        <p>&copy; 2026 我的博客</p>
    </footer>
</body>

div vs 语义化标签

对比项 <div> 语义化标签
含义 无含义,通用容器 有明确语义
可读性 需要依靠 class 名称推断 标签名即可理解
SEO 搜索引擎无法理解内容 搜索引擎能识别内容结构
无障碍 屏幕阅读器无法识别 屏幕阅读器可以定位

最佳实践

1. 优先使用语义化标签

<!-- 推荐 -->
<header>...</header>
<nav>...</nav>
<main>...</main>

<!-- 避免 -->
<div class="header">...</div>
<div class="nav">...</div>
<div class="main">...</div>

2. 每个页面只有一个 <main>

<main> 表示页面的主要内容,每个页面应该只有一个。如果有多个内容区块,使用 <section><article>


3. 正确嵌套标题

使用语义化标签时,标题层级仍然很重要:

<section>
    <h2>产品介绍</h2>  <!-- section 内的标题 -->
    <article>
        <h3>产品 A</h3>  <!-- article 内的标题 -->
    </article>
</section>

4. 添加辅助属性

<nav aria-label="主导航">  <!-- 辅助技术识别 -->
<time datetime="2026-01-24">2026 年 1 月 24 日</time>  <!-- 机器可读 -->

文件说明

  • semantic.html - 语义化标签示例,展示完整的页面结构

练习题

基础练习

创建 practice.html,要求:

  1. 使用 <header> 包含网站标题和简单导航
  2. 使用 <main> 包含主要内容
  3. <main> 中使用 <article> 包裹一篇文章
  4. 使用 <section> 将文章分成多个小节
  5. 使用 <footer> 包含版权信息

进阶练习

  1. 在文章中添加 <aside> 侧边栏,包含"相关推荐"或"作者信息"
  2. 使用 <time> 标签标记发布时间
  3. 使用 <details><summary> 创建一个 FAQ 折叠区块
  4. 添加适当的 aria-label 属性提升可访问性

挑战练习

找一篇你之前用 <div> 写的网页,改造成语义化标签:

  1. 分析页面结构,确定每个区域的作用
  2. 用合适的语义化标签替换 <div>
  3. 检查标题层级是否正确
  4. 在浏览器中测试,确保页面功能正常

学习目标检查

  • 理解语义化标签的概念和价值
  • 掌握常用语义化标签的用法(header, nav, main, footer)
  • 能够使用 section、article、aside 组织内容
  • 知道如何在页面中使用辅助标签(time, address, details)
  • 能够将 div 布局改造成语义化标签
  • 理解语义化标签对 SEO 和无障碍访问的影响

参考

项目在https://github.com/tao355667/frontend-journey,借助 OpenCode 内置的 GLM 4.7 与 Kimi 2.5 模型生成内容,并结合学习进度对项目内容进行针对性修改与润色

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐