main 标签必须唯一且不能嵌套,因其表达整页“不可替代的核心内容”,是浏览器、屏幕阅读器和搜索引擎定位主旨的关键;HTML5 规范要求它必须是 body 的直接子元素,重复或嵌套会导致辅助技术忽略后续节点、SEO 降权。

main 标签为什么必须唯一且不能嵌套
main 表达的是整页“不可替代的核心内容”,不是视觉上的主区域,也不是“看起来最显眼的部分”。浏览器、屏幕阅读器和搜索引擎都依赖它快速定位页面主旨。一旦出现多个 main,辅助技术会忽略后续的,SEO 也可能降权。
常见错误包括:在 article 内部再包一层 main;把侧边推荐栏和正文一起塞进同一个 main;SPA 路由切换时重复插入 main 而未移除旧节点。
-
main必须是body的直接子元素(HTML5 规范明确要求) - 它不能出现在
header、footer、aside或另一个article内部 - 动态渲染时,每次更新内容前应先
document.querySelector('main')?.remove()
article 和 section 的边界到底怎么划
关键判断标准不是样式或宽度,而是“删掉周围内容后,这块还能不能独立存在”。能 → article;不能 → section。
比如博客列表页:每篇博文用 article 包裹,但整个“Vue 教程”栏目应外层加 section 并配 h2 标题,而不是让多个 article 平铺在 main 下——否则语义上缺失了“栏目归属”这一层关系。
立即学习“前端免费学习笔记(深入)”;
-
article必须自带标题(h1–h6),且可被 RSS 订阅、单独打印或转发 -
section必须有明确的h2–h6标题,且标题要反映该块的逻辑主题,不能空着 - 不要用
section替代div做纯样式分隔;无语义的视觉区块仍该用div
aside 放在哪才真正表达“服务对象”
aside 的语义是“与主内容相关但可分离的信息”,它的位置直接决定服务范围:放在 article 内,表示服务于该文;放在 main 旁(同级),表示服务于整页主体。
典型误用:把广告横幅、第三方推荐卡片硬塞进 aside;或者把文章右侧的术语解释放在 main 外部,导致屏幕阅读器无法关联到原文。
- 文章内的作者简介、引用来源、补充图表,应嵌套在
article内的aside - 全站通用的“热门标签”“友情链接”,更适合放在
aside且与main同级 -
aside里不要放主导航链接,那是nav的职责
time、figure、address 这些细节标签为什么不能省
它们不是锦上添花,而是机器可读的关键锚点。time datetime="2026-06-10" 比 “6月10日” 多出结构化时间信息,能让日历聚合、时效性 SEO、语音助手播报日期成为可能;figure+figcaption 明确图文绑定关系,比 div+p 更易被辅助工具识别为整体;address 则告诉解析器“这是联系信息”,而非普通段落。
-
time必须带datetime属性,否则失去机器可读价值 -
figure只用于图像、图表、代码块等媒体内容,纯装饰图不用 -
address应只出现在footer或article的footer中,不用于邮箱列表或地址表格



















