必须且只能用一次,用于包裹用户打开页面真正想看的核心内容(如文章正文、商品详情、主表单),不可嵌套、不可重复、不可隐藏,且不能作为header/nav/aside/footer的子元素。

<main></main> 是页面中唯一、不可嵌套、语义上代表“核心内容”的容器,不是装饰性或辅助性区域——它必须存在且只出现一次。
什么时候必须用 <main></main>?
当你有一块内容,用户打开页面就是为了看它(比如文章正文、商品详情、表单主操作区),这块内容就该放进 <main></main>。搜索引擎、屏幕阅读器和浏览器都依赖这个标签判断“这里才是重点”。
- 一个博客页:
<main></main>包裹<article></article>,不包侧边栏或页脚导航 - 电商商品页:
<main></main>包裹商品图、描述、购买按钮,不包顶部搜索栏或底部推荐 - 避免把整个
塞进 <code><main></main>——它不是“除了 header/footer 之外的剩余部分”,而是“用户真正要消费的内容主体”<main></main>和<section></section>、<article></article>的关系<main></main>是容器,<section></section>和<article></article>是内容组织单元;三者可以嵌套,但不能混淆职责。-
<main></main>内可包含多个<article></article>(如新闻列表页),也可只含一个<section></section>(如单页介绍) -
<article></article>可独立分发(RSS、分享),<section></section>仅表示逻辑分组,无独立语义;<main></main>不提供这种粒度,只回答“这是不是页面核心” - 禁止在
<main></main>外再用<main></main>——浏览器会忽略第二个,辅助技术可能报错
容易被忽略的兼容性与校验问题
虽然现代浏览器都支持
<main></main>,但 HTML 验证器和某些旧版辅助工具对它的使用有硬性要求。- 必须且只能有一个:重复或缺失都会触发 W3C 验证警告,部分无障碍测试工具直接标记为失败
- 不能是
<header></header>、<footer></footer>、<aside></aside>的子元素——这些本就是外围结构,放进去语义冲突 - 不要用 CSS 隐藏
<main></main>内容(如display: none):这会让屏幕阅读器跳过整块核心内容,违反 WCAG 1.3.1 原则
真正难的不是写对标签,而是每次加
<main></main>前问一句:如果删掉 header、nav、sidebar、footer,剩下这部分,是不是用户点进来唯一想看的东西?如果不是,那就还没找到真正的<main></main>。 -
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











