前端进阶之旅前端进阶之旅
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
  • 基础篇HTML/CSS/JS 打底
  • 进阶篇原理与工程化
  • 高频篇面试最常问的那批
  • 精选篇按模块收敛的总结
  • 手写篇常考代码手写实现
  • 面经篇真实面试问题复盘
  • AI 篇NEWAI 时代的前端考点
  • 历年面经NEW按年份追踪真实考点
  • 每日一题每天一道,攒手感
  • 专项自测100 题快速查漏
  • 小程序题库小程序专项刷题
  • 算法题库NEW在线编码即时判题
  • 知识卡片NEW碎片时间过考点
  • 面试题大全常见问题解析
  • AI 答疑NEW随时提问,即时解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • AI 定制路线NEW按你的简历现排
  • AI 知识地图NEW串起全站知识点
  • 原理篇React / Vue 源码拆解
  • HTTP从报文一路讲到 HTTPS
  • 浏览器渲染、事件循环、进程
  • 计算机基础Linux、网络、操作系统
  • 设计模式23 种模式怎么用
  • Node学习指南从环境搭建到服务端
  • NPM工作流script、依赖与发布
  • Docker容器化部署上手
  • Canvas图形与动画实战
  • 前端系统进阶学习大型项目工程化
  • 前端综合文章长期沉淀的实践文
  • 思维导图知识点全景图
  • 学习路线按图索骥不跑偏
  • AI 热点NEWAI 每日动态
  • 公众号动态公众号历史文章
  • 博客动态站长的技术博客
  • 开发者导航常用工具与文档站
首页程序员面试题库article section 区别 HTML5
HTHTML语义与文档

在 HTML5 中,<article> 和 <section> 有什么区别?如何决定使用哪个?

两者都划分内容区域,核心区别在于内容是否可独立分发或复用。可独立取出的用 <article>;仅是文档内需要分节的主题区用 <section>。

前端进阶之旅 · 一题精讲更新于 2026.09.05
HTML#语义与文档
先看核心答案
理解线索

判断依据:是否能单独成立

  1. 独立分发article 适合 RSS 或复用
  2. 主题分组section 需配合标题明确边界
  3. div 兜底无语义只有样式的容器用 div

若内容是列表项或侧栏等特殊语义,优先考虑对应元素而非 section。

核心回答

先记住这个答案

<article> 表示可独立分发或复用的自包含内容,如博客文章、评论、产品卡片;<section> 是通用文档分区,强调主题分组,通常需标题。决定时先问:内容脱离上下文是否依然完整有意义?若是,用 <article>;否则若确实需要语义分区,用 <section>。段落和侧栏不是 <section>,div 才用于无语义包装。

  • 独立可聚合内容选 article
  • 主题分组单元用 section
  • 普通无语义容器用 div

内容模型与大纲贡献机制

<article> 属于 sectioning content,会在大纲中创建独立分区,且其内容被定义为可独立分发,例如在 RSS 中重新输出。不管内部是否再分节,<article> 自身是聚合单元。因此文章里的评论可作为嵌套 <article>,每条评论都能脱离文章单独呈现。

<section> 同样归为 sectioning content,但它的语义是文档的一个主题分区,通常需要标题来描述该分区内容。若一个区域只是样式容器,内部没有明确标题或不构成大纲中可单独识别的部分,使用 <section> 会制造没有标题的分区,对辅助技术并不友好,应改用 <div>。

构建包含用户评论的新闻文章页

假设页面包含一篇新闻报道,下方有用户评论。报道主体可单独转载,应放入 <article>;每条评论独立于其他评论,它们可各自作为 <article>,而评论列表用 <section> 加上“用户评论”标题来分组。产品卡片和独立的小工具也能作为 <article>。

处理时先判断内容是否能脱离页面上下文。新闻里的“相关报道”区域虽然主题相关,但拆开便失去上下文,不适合 <article>,宜用 <aside> 或 <section>。若评论本身没有外部引用价值,也可直接用 <section> 包裹,但 <article> 更贴合评论的独立可聚合属性。

边界条件:无标题与嵌套规则

当 <section> 没有可感知的标题时,其语义价值接近普通分区,往往不如 <div> 加 aria-label 清晰。若内容同时是独立主题,可以用 <article>,并且 <article> 不强制要求内部标题,但规范建议在可见标题辅助识别。不要仅因为视觉卡片就采用 <article>,还要确认内容可独立分发。

<article> 不能嵌套在 <address> 等特殊祖先内,而 <section> 是通用分区组件。屏幕阅读器的导航可能会遍历 sectioning 元素,滥用会制造额外的大纲节点。正确做法是在没有明确候选项(如 article、aside、nav)时,才使用 <section>,且通常应配标题;否则用 div。

回答前,多想一步

容易答错的地方

把样式容器看作 section
有人为圆角边框的背景块随意套 <section>,即使内部无主题标题。这会生成无用的大纲节点,干扰文档结构。正确做法:section 更适用于有标题的主题分区;若是无语义包装,应使用 div。
认为每个卡片都该是 article
产品列表中的每个卡片若含有可独立使用的完整信息,可以是 article,例如“操作价格已包含税费”这类上下文补充却属于页面整体,不具有独立性。判断标准是能否单独出现在其他应用或订阅源中依然成立。
试着用自己的话回答

面试官还会怎么问?

页面中能多次使用 article 和 section 吗?

可以。每个 article 是一个独立单元,正文和评论可分别作为 article;section 也允许多次用于不同主题分区。关键在于命名和标题层次清晰,让用户能通过标题导航到对应区域。

section 一定需要包含标题吗?

按 HTML 规范建议,section 应包含标题,以表示其内容主题。若一个区域没有可显示标题且只是结构性分组,使用 div 更合适,可以避免生成未命名分区。

article 与 main、article 元素在无障碍上有什么不同

main 每页一个代表主要内容区域,而 article 是独立可分发组件。两者可共存:新闻页可将主要报道放 main 中的 article 内。article 会被映射到 role="article",辅助技术可按内容单元导航。

从一道题,走向一组知识

把知识连起来

语义与文档

在 HTML 中,<header>、<main>、<footer> 等结构性元素如何使用,以及每个文档中 <main> 的个数限制是多少?

了解 main 对文章区域的包裹方式,以及页头页脚如何与 article 内部的 header/footer 区分。

语义与文档

HTML 中标题(h1-h6)的正确层级结构对页面可访问性和 SEO 有何影响?

section 需要标题,但标题层级与大纲结构密切相关,可继续弄清该怎样选取 h1-h6。

参考资料

  • <article> HTML article contents element

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 内容模型与大纲贡献机制
  3. 构建包含用户评论的新闻文章页
  4. 边界条件:无标题与嵌套规则
  5. 容易答错的地方
  6. 面试官还会怎么问
  7. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑