博客文章页必须用包裹正文,因其语义上表示可独立存在、复用、rss订阅的内容单元;仅表逻辑子章节,无语义;须为直接子元素,内含带datetime的和,评论区须用隔离。

博客文章页必须用 <article></article> 包裹正文,否则搜索引擎和屏幕阅读器无法识别这是独立可分发的内容单元——这不是建议,是语义强制要求。
为什么 <article></article> 不能被 <section></section> 或 <div> 替代
<p><code><article></article> 表达的是“可独立存在、可复用、可 RSS 订阅、可被聚合”的内容实体;<section></section> 只表示内部有逻辑子章节(比如「方法」「结果」「讨论」),没标题就语义断裂;<div> 则完全无含义,爬虫会忽略内容权重。
<ul><li>常见错误:<code><div class="post"> 套全文 → 搜索引擎降权,RSS 工具无法提取
<li>反例:<code><section></section> 直接当文章容器用,且内部没 <h2></h2> 以上标题 → 辅助技术报“空节”警告
<article></article>,且它必须是 <main></main> 的直接子元素
<header></header> 和 <time></time> 必须成对出现,且 datetime 不可省略
元信息(作者、发布时间、分类)不属于正文,但强关联主体,必须放进 <article></article> 内部的 <header></header>,而不是堆在开头或结尾。其中 <time></time> 若缺 datetime 属性,机器就无法解析时间,结构化数据提取失败。
- 错误写法:
<time>2024年3月15日</time>→ 无机器可读时间 - 正确写法:
<time datetime="2024-03-15">2024年3月15日</time>或更完整:datetime="2024-03-15T14:30:00+08:00" - 元信息组织推荐用
<dl> <dt>作者</dt> <dd>张三</dd> </dl>,比<p></p>堆砌更利于 Schema 提取
评论区坚决不放进 <article></article>,用 <section></section> + aria-labelledby 隔离
评论是用户生成内容(UGC),与原始文章语义无关,混进 <article></article> 会污染内容边界,导致 RSS 解析错乱、SEO 权重稀释、聚合工具误判主体。
- 错误做法:把评论 HTML 块直接塞进
<article></article>底部 - 正确结构:
<section aria-labelledby="comments-heading"><h2 id="comments-heading">评论(12)</h2>...</section> - 注意:
<section></section>必须带可视标题(<h2></h2>~<h6></h6>),否则语义失效;aria-labelledby是给屏幕阅读器补上下文的关键
最容易被跳过的细节是标题层级:文章主标题必须是 <h1></h1>,哪怕页面已有全局 <h1></h1>(如网站 Logo)。因为 <article></article> 创建了新的大纲上下文,浏览器和辅助技术会将其视为独立文档处理——用 <h2></h2> 开头,等于主动放弃语义锚点。











