main元素在HTML5中必须且只能出现一次,用于包裹页面唯一主体内容,不可嵌套在article、aside、header等语义元素内,应排除页眉页脚等全局结构,并推荐添加aria-label或aria-labelledby提升可访问性。

main 元素在 HTML5 中用于标识文档中与当前页面主题直接相关、独一无二的主体内容区域。
必须且只能出现一次
一个 HTML 文档中,main 元素应当有且仅有一个。重复使用 main 会违反语义规范,影响可访问性(如屏幕阅读器可能无法正确识别主内容)和搜索引擎对页面结构的理解。
- 若页面含多个“主要内容区块”(如首页有文章列表+推荐栏目+最新动态),应将它们统一包裹在一个 main 内,而非为每个区块单独加 main
- 不建议在 article、aside、nav、header 或 footer 等其他语义元素内部嵌套 main
不能作为后代出现在某些语义元素中
main 不应被放置在 article、aside、footer、header 或 nav 元素内部——因为这些元素本身已有明确的语义边界,嵌套 main 会造成语义冲突。
- 例如:不要写
<article><main>...</main></article> - 但可以写
<main><article>...</article></main>,此时 article 是 main 的子内容,符合逻辑
不包含网站通用结构
main 应排除页眉、导航栏、侧边栏、页脚等全站复用内容。它只承载当前页面特有的核心信息。
立即学习“前端免费学习笔记(深入)”;
- 比如博客文章页,main 应包含标题、正文、作者信息、发布时间等;而顶部 logo、主导航、右侧分类标签栏不属于 main
- 如果某区块在多个页面中完全一致(如“关注我们”模块),通常更适合放在 aside 或 section 中,而非 main
可选但推荐添加 aria-label 或 aria-labelledby
虽然不是强制要求,但为 main 显式提供可访问性标签,能进一步提升辅助技术体验。
- 用
aria-labelledby="main-title"关联页面内已有标题(如<h1 id="main-title">最新技术文章</h1>) - 或用
aria-label="文章主体内容"直接描述其作用



















