在中必须使用来明确语义结构,因其承担局部头部角色,包含标题、作者、时间等介绍性内容;否则屏幕阅读器无法识别归属,大纲断裂,影响seo与无障碍访问。

在 <section></section> 内部用 <header></header> 是完全合法且推荐的,但前提是它真正在语义上承担该节的「局部头部」角色——不是为了视觉对齐,也不是为了套样式,而是因为里面确实有标题、作者、时间等介绍性内容。
为什么 <section></section> 里必须配 <header></header> 才算结构完整
一个独立的 <section></section> 表示一个主题明确的内容单元(比如“第三章:响应式布局”或“用户评论区”),而它的开头如果包含标题或元信息,就需要用 <header></header> 显式标注这个“引导入口”。否则,仅靠 <h2></h2> 孤立存在,屏幕阅读器无法识别其归属关系,大纲生成也会断裂。
-
<section></section>本身不自动提供语义上下文,<header></header>是它“开口说话”的方式 - 没有
<header></header>的<section></section>,就像没门牌号的房间——内容存在,但找不到入口 - 搜索引擎和读屏软件依赖这种嵌套关系判断内容权重与层级,空悬的
<h2></h2>可能被降权或跳过
<header></header> 在 <section></section> 里能放什么、不能放什么
它只接受服务于该节主题的介绍性内容,不是万能包装盒。
- ✅ 允许:
<h2></h2>(必须是当前<section></section>的主标题)、<p></p>(如简介或副标题)、<time></time>(发布时间)、<nav></nav>(仅限该节内部导航,比如“本章目录”) - ❌ 禁止:
<header></header>嵌套另一个<header></header>(语义重复,浏览器会忽略内层) - ❌ 禁止:纯
<div class="badge"></div>或单独一个<button></button>(无介绍性或导航意图) - ⚠️ 注意:
<img>只能作为 logo 或图标出现,且必须带alt;轮播图、广告横幅这类非标题内容,一律不准塞进去
常见错误写法及修正
这些看似合理,实则破坏语义结构:
- 错误:
<section><h2>性能优化</h2> <p>本章讲解……</p></section>→ 缺少<header></header>包裹,标题归属模糊 - 修正:
<section><header><h2>性能优化</h2> <p>本章讲解……</p></header><p>正文开始……</p></section> - 错误:
<section><header><div class="section-title">API 设计</div></header></section>→<div> 不是标题元素,语义断裂 <li>修正:<code><section><header><h2>API 设计</h2></header><p>……</p></section>
最容易被忽略的一点:每个 <section></section> 的 <header></header> 必须用对应级别的标题(<h2></h2> 起始,不能跳级或降级),且不能脱离该 <section></section> 独自存在——把它抽出来放在外面,就等于把门牌号钉到隔壁楼去了。











