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

article 该用在能“剪下来就发 RSS”的地方
如果你的内容能脱离当前页面、单独被引用或聚合(比如博客正文、新闻条目、用户评论),article就是唯一合理选择。搜索引擎和阅读模式会优先识别它,RSS解析器也只抓article内容——误用section会导致内容不可见或权重稀释。
常见错误现象:
- 把产品页的「参数表」或「售后说明」包进
article→ 它们依赖整页上下文,不能单独存在 - 首页轮播图每张图都套
article→ 图片本身不是自包含内容单元,只是视觉组件 -
article里没写<header><h1>标题</h1></header>或没配<time>→ WCAG 要求它有明确标题,否则语义断裂
section 是给“离不开这页”的主题区块用的
section不是视觉容器,而是逻辑分组。它必须承载一个可被概括的主题,比如「安装步骤」「客户评价」「相关推荐」——这些模块一旦抽离当前页面,信息就不完整了。
使用场景与要点:
立即学习“前端免费学习笔记(深入)”;
- 一个博客文章内部划分为「背景」「方法」「结论」三块 → 每块用
section,且最好带<h2>标题,否则失去主题性 - 电商页的「规格参数」「用户评价」「售后政策」三个并列区域 → 各自独立用
section,不嵌套article - 不要用
section替代nav或footer→ 导航栏写成<section aria-label="主导航">是典型误用,应直接用<nav>
section 不带标题等于没写
没有<h1>–<h6>的section在无障碍树里不会被识别为逻辑单元,Chrome DevTools 的 Accessibility 面板里压根不显示它。
标题不必紧贴开头,但必须在同一个section元素内。例如:
<section>
<p>说明文字</p>
<div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<img src="...">
<div class="aritcle_card_info flexColumn">
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
</div>
</div>
</div>
<h2>相关资源</h2>
</section>
上面这个写法是错的——<h2>在末尾,但语义上它应该概括整个section,所以必须放在开头或至少在内容逻辑起点附近。
嵌套关系不能反着来
article可含section,但section不该硬塞article。
article内部可以自然包含多个section(如教程分章节),这是语义连贯的;但反过来,如果一个section下堆了 5 篇博客摘要,说明你真正需要的是<main>或<div>作为外层容器,再让每篇用article——因为它们彼此独立,不是同一主题下的子分组。
容易踩的坑:
-
section里放了 3 条用户评论,每条都用article→ 正确;但如果这 3 条只是「最新评论」模块,而模块本身无独立语义,外层用section合理 -
section里混着产品图、参数表、购买按钮 → 这不是主题分组,是功能拼凑,更适合用<div class="product-card"> - 在
article里又套一层section包裹标题+首段,但没新主题 → 多余,直接用<header>+<p>更干净
不确定时,先问自己两个问题:这个内容复制到另一个网站或 RSS 订阅源里,是否依然成立?去掉周围其他内容,仅保留它,读者能否理解核心意思?答案直接决定该用哪个标签。



















