article是唯一该包裹整篇博客正文的标签,因为它是唯一表达“可独立分发、可被RSS订阅、可单独聚合”语义的HTML元素;section仅表示有主题的子区块,div无语义,误用会导致搜索引擎降权、RSS抓取失败和屏幕阅读器定位错误。

article 是唯一该包裹整篇博客正文的标签,不是 section,也不是 div。用错就等于告诉搜索引擎“这内容不独立、不可分发”,直接影响 RSS 抓取、SEO 权重和屏幕阅读器定位。
为什么不能用 section 替代 article 包裹整篇文章
section 表示“文档内有逻辑关联的子区块”,比如「背景」「方法」「结论」;而 article 表达的是“可独立存在、可被转载、可被聚合的内容单元”。博客正文、新闻稿、论坛主帖都属于后者。
- 误用
section包裹全文 → 搜索引擎无法识别这是“一篇完整文章”,可能降权或忽略收录 -
article内部嵌套多个section是合理结构,但反向嵌套(section套article)需有明确理由,比如“专题报道”里包含多篇独立稿件 - CMS 输出若默认用
section或div包文章,必须手动替换或加role="article"+aria-labelledby临时补救
header 和 footer 在 article 内部怎么用才对
article 内的 header 不是页面顶部导航栏,而是专为这篇文章服务的元信息容器:标题、作者、时间、分类等。同理,footer 放的是本文末尾的版权声明、相关链接、编辑说明,不是全站页脚。
-
header必须含h1—— 即使页面已有全局h1(如网站 Logo),article创建了新的大纲上下文,它需要自己的h1 -
time标签必须带datetime属性,值为 ISO 格式(如2024-03-15T14:30:00+08:00),纯中文日期(如“2024年3月15日”)对机器不可读 - 元信息建议用
dl/dt/dd组织,而不是堆在p里:<dt>作者</dt><dd>张三</dd> -
footer里别放主导航或全站链接——那是body级footer的事
评论区为什么坚决不能放进 article
评论是用户生成内容(UGC),与原始文章语义上不构成同一内容单元,也不具备独立分发价值。塞进 article 会污染内容边界,导致 RSS 解析失败、内容聚合出错、结构化数据提取混乱。
立即学习“前端免费学习笔记(深入)”;
- 正确做法:用
section包裹评论区,并配aria-labelledby="comments-heading"和<h2 id="comments-heading">评论(42)</h2> - 不要给评论区加
article—— 每条评论可单独用article,但整个评论区不是 - 如果 CMS 强制把评论注入到
article尾部,需用 JS 或后端逻辑将其移出,否则语义已损坏
p、em、strong、blockquote 这些文本级标签容易踩的坑
它们不是样式开关,而是语气/角色声明。浏览器默认样式只是辅助,关键在语义是否准确。
- 段落必须用
p,别用br换行模拟段落——这会让屏幕阅读器读成一整段,失去停顿与节奏 -
em表示“强调语气”,strong表示“内容重要性高”,不是“斜体”和“粗体”的替代品;b和i只在纯样式无语义时才用(如产品名、外文术语) -
blockquote必须用于大段引用,且最好带cite属性;行内引用用q,不要滥用blockquote -
code仅用于真实代码片段,变量名、命令、文件路径都该包在里面:console.log()、git commit、/src/utils/
真正难的不是记住标签名,而是每次写 HTML 时下意识问一句:“这个内容,机器能把它当成什么来理解?”——答案错了,后续所有 SEO、无障碍、维护成本都会加倍。



















