语义化 HTML5:语义化元素与 div 堆砌
用语义化元素替代没有意义的包装 div,并了解文档大纲算法和标题层级。
语义化 HTML5:语义化元素与 div 堆砌 是 CoddyKit 上的免费 Frontend Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Frontend Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Frontend Academy 课程共包含 4 节课。
Div 大杂烩——问题所在
Div 大杂烩指完全由 <div> 和 <span> 元素构成的页面。它需要依靠 class 名称传达结构;没有这些 class,屏幕阅读器无法理解页面结构,也无法向搜索引擎传达任何含义。
<!-- Div soup (avoid) -->
<div class="container">
<div class="header">
<div class="logo">...</div>
<div class="nav">...</div>
</div>
<div class="content">...</div>
<div class="footer">...</div>
</div>语义化替代方案
用能够传达用途的语义化元素替换没有意义的 div。这样,结构就能自我说明,即使没有任何 CSS 也易于理解。
<!-- Semantic HTML (preferred) -->
<body>
<header>
<a href="/"><img src="logo.svg" alt="Brand"></a>
<nav>...</nav>
</header>
<main>...</main>
<footer>...</footer>
</body>文档大纲算法
标题元素(h1-h6)会创建文档大纲。屏幕阅读器用户可以按标题导航。辅助技术会播报大纲层级。请保持层级合理:h1 用于页面标题,h2 用于主要部分,h3 用于子部分。
<time> — 机器可读的日期
<time> 元素使用机器可读的 datetime 属性标记日期和时间。搜索引擎可以理解活动日期;屏幕阅读器也能播报格式化后的日期。
<p>Published on <time datetime="2025-06-15">June 15, 2025</time></p>
<time datetime="2025-06-15T14:30">2:30 PM</time><address>
<address> 元素用于包裹与最近的文章或文档相关的联系信息。它不一定是邮政地址,电子邮件、电话和社交账号也算。
<address>
<a href="mailto:hello@coddy.app">hello@coddy.app</a><br>
<a href="https://twitter.com/coddykit">@coddykit</a>
</address><figure> 和 <figcaption>
<figure> 用于包裹图像、图表、代码示例或视频等自包含内容。<figcaption> 提供与 figure 在语义上关联的说明文字。
<figure>
<img src="chart.png" alt="Monthly active users 2025">
<figcaption>Figure 1: Monthly active users increased 42% in Q4 2025.</figcaption>
</figure><blockquote> 和 <cite>
<blockquote> 用于标记较长的引用。请使用 cite 属性指定来源 URL。<cite> 元素用于标记创作作品(书籍、文章、电影)的标题。
<blockquote cite="https://developer.mozilla.org">
<p>HTML is the standard markup language for creating web pages.</p>
<footer>—<cite>MDN Web Docs</cite></footer>
</blockquote><details> 和 <summary>
<details> + <summary> 组合可以在不使用 JavaScript 的情况下创建原生手风琴或披露控件。浏览器会自动处理展开与收起、键盘交互以及无障碍支持。
<details>
<summary>What is the refund policy?</summary>
<p>We offer a 30-day money-back guarantee on all plans.</p>
</details><mark> — 突出显示的文本
<mark> 表示为了便于参考而突出显示的文本,例如搜索结果中的匹配内容。它在语义上不同于使用 CSS 将文本设置为黄色。
<p>Search results for <q>flexbox</q>:</p>
<p>Use <mark>flexbox</mark> for one-dimensional layouts...</p><abbr> — 缩写
请使用 <abbr> 包裹缩写词和首字母缩略词,并在 title 属性中提供完整术语。屏幕阅读器和浏览器会在用户悬停时向其展示完整形式。
<abbr title="Cascading Style Sheets">CSS</abbr>
<abbr title="Accessible Rich Internet Applications">ARIA</abbr>何时使用 <div> 和 <span>
这两个元素仍然很有用。对于没有语义含义的通用块级容器(例如布局容器、React 中的组件根节点),<div> 是正确的选择。对于没有语义含义的行内样式挂钩,请使用 <span>。
快速检查
哪个 HTML 元素可以在无需 JavaScript 的情况下创建原生可折叠披露控件?
回顾:语义化 HTML5
用语义化元素替代 div 大杂烩:header、nav、main、article、section、aside、footer。日期使用 time,媒体使用 figure/figcaption,手风琴使用 details/summary,突出显示内容使用 mark。仅在没有语义含义的布局容器中使用 div 和 span。
常见问题解答
「语义化 HTML5:语义化元素与 div 堆砌」课时是免费的吗?
是的 — 「语义化 HTML5:语义化元素与 div 堆砌」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Frontend Academy 课程的其余内容,请升级到 CoddyKit PRO。 Frontend Academy 课程共包含 4 节课。
「语义化 HTML5:语义化元素与 div 堆砌」这节课中我会学到什么?
用语义化元素替代没有意义的包装 div,并了解文档大纲算法和标题层级。 你通过在浏览器中直接运行的动手代码来练习 Frontend Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Frontend Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Frontend Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「语义化 HTML5:语义化元素与 div 堆砌」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Frontend Academy 课中编写并运行代码吗?
能。每节 Frontend Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 表单控件:input 类型、select、textarea
- ARIA 与可访问性:label、role、aria-*
- 语义化 HTML5:语义化元素与 div 堆砌
- 表单验证属性