article用于可独立分发的内容单元,如博客正文、新闻条目;section用于依赖页面上下文的主题分组,如安装步骤、用户评价;误用会损害seo、可访问性和rss解析。

article 该用在能“剪下来就发 RSS”的地方
如果你的内容能脱离当前页面、单独被引用或聚合(比如博客正文、新闻条目、用户评论),article 就是唯一合理选择。搜索引擎和阅读模式会优先识别它,RSS 解析器也只抓 article 内容——误用 section 会导致内容不可见或权重稀释。
常见错误现象:
- 把产品页的「参数表」或「售后说明」包进
article→ 它们依赖整页上下文,不能单独存在 - 首页轮播图每张图都套
article→ 图片本身不是自包含内容单元,只是视觉组件 -
article里没写<header><h1>标题</h1></header>或没配<time></time>→ WCAG 要求它有明确标题,否则语义断裂
section 是给“离不开这页”的主题区块用的
section 不是视觉容器,而是逻辑分组。它必须承载一个可被概括的主题,比如「安装步骤」「客户评价」「相关推荐」——这些模块一旦抽离当前页面,信息就不完整了。
使用场景与要点:
- 一个博客文章内部划分为「背景」「方法」「结论」三块 → 每块用
section,且最好带<h2></h2>标题,否则失去主题性 - 电商页的「规格参数」「用户评价」「售后政策」三个并列区域 → 各自独立用
section,不嵌套article - 不要用
section替代nav或footer→ 导航栏写成<section aria-label="主导航"></section>是典型误用,应直接用<nav></nav>
嵌套关系不能反着来:article 可含 section,但 section 不该硬塞 article
article 内部可以自然包含多个 section(如教程分章节),这是语义连贯的;但反过来,如果一个 section 下堆了 5 篇博客摘要,说明你真正需要的是 <main></main> 或 <div> 作为外层容器,再让每篇用 <code>article ——因为它们彼此独立,不是同一主题下的子分组。
容易踩的坑:
-
section里放了 3 条用户评论,每条都用article→ 正确;但如果这 3 条只是「最新评论」模块,而模块本身无独立语义,外层用section合理 -
section里混着产品图、参数表、购买按钮 → 这不是主题分组,是功能拼凑,更适合用<div class="product-card"> <li>在 <code>article里又套一层section包裹标题+首段,但没新主题 → 多余,直接用<header></header>+<p></p>更干净 - 这段内容复制粘贴到另一个网站,读者还能看懂吗?→ 能 →
article;不能 →section或其他标签 - 它有没有一个能概括自身的小标题(哪怕只是
<h3>注意事项</h3>)?→ 没有 → 别用section,考虑div或更精确的语义标签(如aside)
不确定时,先问自己两个问题
别靠视觉样式判断,只看内容本质:
最常被忽略的一点:语义标签不是装饰。硬套 article 或 section 比不用更危险——尤其当团队对“独立性”理解不一致时,结构会快速退化为语义噪音。先确认内容是否真具备可分发性或主题聚合性,再落笔。











