选对嵌套结构关键在逻辑关系而非视觉需要:article 套 section 适用于多主题小节且每 section 必有连续层级标题;section 套多个 article 适用于独立可分发内容,外层需标题、内部 article 需完整元信息;禁用无标题 section、反向嵌套及语义错位标签。

选对嵌套结构,关键不在“能不能套”,而在“该不该套”——它取决于内容之间的逻辑关系,不是视觉分组或样式需要。
article 里套 section:合理且推荐
当一篇完整内容天然包含多个主题明确的小节时,用 article 包裹全文,内部用 section 划分逻辑块:
- 每块必须有真实标题(
<h2></h2>或更深层级,与 article 主标题连续) - 例如:一篇技术教程的「环境准备」「代码实现」「结果验证」三部分,各自用
<section><h3>环境准备</h3>...</section> - 避免在 article 内部只放无标题的 section,那等于用语义标签干 div 的活
section 里套多个 article:典型且常见
当一组内容彼此独立、可单独分发,又共属同一主题上下文时,用 section 做容器,内部并列多个 article:
- 外层 section 必须带标题,如
<h2>本周热点</h2> - 每条 article 应含自身标题、时间、作者等元信息,能脱离页面被 RSS 抓取或转发
- 反例:一个叫「相关推荐」的 section 下只放一个 article —— 多余,直接用 article 即可
禁止反向嵌套与无效包裹
以下结构破坏语义,应避免:
- section 内只包一个 article,且无额外主题包装(比如仅为了加 margin 或背景)
- article 内部把「相关链接」或「广告位」强行包成 article —— 它们没有独立 URL、无发布时间、不可索引
- 用 section 替代 nav、aside、footer 等专用标签,哪怕加了
aria-label也不改变语义错位 - 连续三层以上无意义嵌套,如
<section><section><section></section></section></section>—— 爬虫会识别为结构噪声
标题是生效前提,不是可选项
section 没标题 = 语义失效;article 没标题或缺元信息 = 独立性不成立:
- 每个 section 必须在自身标签内包含且仅包含一个
<h2></h2>~<h6></h6>,不能靠父级标题“借” - 嵌套的 section 要各自有标题,层级需连续(外层
<h2></h2>,内层用<h3></h3>,不可跳到<h5></h5>) - article 的标题建议用
<header><h2></h2></header>包裹,并配<time datetime></time>和作者信息











