main必须唯一且仅包裹当前页面不可替代的核心内容;article用于可独立分发的内容(如博客正文),需含标题、时间等完整信息;section须有主题和标题,否则应改用p或div。

main 必须且只能出现一次,包裹真正属于当前页面的、不可替代的核心内容;其他标签是否使用、怎么嵌套,取决于内容本身有没有对应语义,不是为了“用而用”。
什么时候该用 article 而不是 section
关键看内容能不能独立存在、是否具备完整信息闭环:
-
article适合博客正文、新闻稿、产品说明书这类可被单独转载、RSS 抓取、或在其他上下文中复用的内容;它内部通常含header(含h1–h6)、时间信息、作者署名,甚至自带footer -
section是文档内的逻辑分块,必须有主题和标题(h2–h6),比如“技术实现细节”“用户反馈汇总”;如果一段内容连标题都没有,只是连续几段文字,直接用p更合适 - 误用常见现象:
section包裹单个p、article套在广告位或侧边推荐里——这两类内容既不独立,也不构成完整信息单元,该用aside或普通div
main 里要不要嵌套 header 和 footer
要,但只在它们属于文章本体结构时才嵌套:
- 文章页顶部的标题、发布时间、作者信息,应放在
main内部的header里,而不是页面级的header;否则屏幕阅读器会把它们当成全站导航的一部分 - 文末的“相关阅读”“版权声明”“编辑说明”,如果只针对这篇文章,就放进
main的footer;如果是全站统一的页脚(如底部导航、ICP备案号),必须用页面级的footer,且不能嵌套在main里 - 禁止
main>header>nav这种写法:文章内导航(如目录锚点)可用nav,但全站主导航必须在页面级header中,且与main平级
侧边栏、广告、推荐内容该用 aside 还是 div
aside 不是“右边那个栏”的视觉占位符,而是语义上“与主内容相关但非必需”的补充信息:
- 适用
aside:文章中提到的术语解释(配合dl)、作者简介、同一作者的其他文章列表、引用来源说明 - 不适用
aside:全站通用广告位、第三方推广链接、登录框、搜索框——这些跟当前文章无直接语义关联,用div+ 合理 class 更准确 - 注意兼容性陷阱:旧版 IE 需 HTML5 Shiv 支持
aside等新标签,但现代项目基本无需考虑;真正容易出错的是用aside包裹nav却没加aria-label,导致读屏器无法区分这是“文章内导航”还是“无关侧边栏”
最容易被忽略的是大纲层级:哪怕所有语义标签都用对了,只要 h2 后面突然跳到 h4,或者在 article 里塞了个 h1,整个语义结构就会被辅助工具降权甚至跳过。语义化不是贴标签,是让每个节点在逻辑链上都有明确位置。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











