HTML5 确实有 <article> 标签,拼写错误(如带下划线)、未声明 <!DOCTYPE html> 或旧版 IE 兼容问题会导致其失效,表现为 querySelector 返回 null 或屏幕阅读器忽略。

HTML 里没有 <article> 标签?先确认浏览器支持和拼写
HTML5 确实有 <article>,不是 <_article> 或 <article\_>——带下划线的写法是无效标签,浏览器会当成未知元素处理,既无语义,也无默认样式或可访问性支持。
常见错误现象:document.querySelector('article') 返回 null,或屏幕阅读器跳过该区域,往往是因为拼写错误、未声明 <!DOCTYPE html>,或在旧版 IE(
- 必须用标准拼写:
<article></article> - 需以
<!DOCTYPE html>开头,否则部分浏览器进入怪异模式,忽略语义标签 - IE8 及更早版本不识别
<article>,如需兼容,得用document.createElement('article')配合 CSS 重置(但建议优先降级为<div class="article">)
<article> 的适用场景:内容是否「可独立分发」是核心判断标准
不是所有“看起来像一篇文章”的区块都该用 <article>。W3C 定义很明确:它表示「文档、页面、站点或应用中自成一体的、可独立分配或复用的内容」——比如一篇博客正文、一条新闻、一个用户评论、一个微博卡片。
容易踩的坑是把「视觉上独立」等同于「语义上独立」。例如侧边栏的「热门文章列表」本身只是导航,里面每项才可能是 <article>;而整个列表应包裹在 <aside> 或 <section> 中。
立即学习“前端免费学习笔记(深入)”;
- ✅ 适合:
<article>包裹单篇博客全文、RSS 订阅源中的每条条目、论坛中每条用户发帖 - ❌ 不适合:整页主内容区(用
<main>)、文章摘要列表(用<section>+ 多个<article>)、带标题的广告位(语义不符,用<aside>或<section>) - ⚠️ 嵌套可用:一篇报道内嵌一条引用的专家评论,可在外层
<article>里再套一个<article>,表示其独立性
<article> 和 <section>、<div> 的关键区别在哪
三者层级不同:<div> 是纯容器,无语义;<section> 表示主题性分组(如“评论区”“相关推荐”),但内容不必然独立;<article> 强调可脱离上下文存在——这是唯一能被 RSS、爬虫或分享工具单独提取的语义标签。
性能和兼容性影响极小,但语义错误会影响 SEO 权重分布和辅助技术体验。Google 明确使用结构化数据解析 <article>,用于生成富摘要(如 “Published on…” 时间戳)。
-
<section>必须有标题(<h2>–<h6>),<article>可选,但强烈建议加<header>和<h1>提升可访问性 - 不要只为“加样式”而用
<article>——CSS 选择器article { margin: 1em; }没问题,但若只是为了加外边距,<div class="card">更准确 - 多个
<article>并列时,建议用<main>或<section>包裹,形成清晰语义树
实际写法示例:一个最小但合规的 <article>
以下代码通过 W3C 验证,且能被主流爬虫识别为独立内容单元:
<!DOCTYPE html>
<html>
<head><title>示例</title></head>
<body>
<main>
<article>
<header>
<h1>如何正确使用 article 标签</h1>
<p><time datetime="2024-04-10">2024年4月10日</time></p>
</header>
<p>语义清晰比视觉漂亮更重要。</p>
<footer><p>作者:前端工程师</p></footer>
</article>
</main>
</body>
</html>
注意 <time> 的 datetime 属性值必须是机器可读格式(如 YYYY-MM-DD),否则无法被结构化数据工具识别;<footer> 在 <article> 内部时,属于该文章的页脚,不是整页页脚。
最常被忽略的是 <article> 内部缺少 <header> 或 <time>,导致语义残缺——即使 HTML 合法,对 SEO 和可访问性来说,它就只是个带点样式的 <div>。


















