必须且只能出现一次,因其是页面唯一主内容语义锚点,供屏幕阅读器快捷跳转和搜索引擎识别核心主题;重复或嵌套会导致辅助技术误读、seo降权,spa中须动态替换内容而非新增实例。

HTML语义化标签不是“写得更漂亮”的装饰,而是告诉浏览器、爬虫和屏幕阅读器“这段内容到底是什么”。用错或不用,会直接导致SEO权重稀释、无障碍访问失败、甚至JS逻辑误判DOM结构。
为什么 <main></main> 必须且只能出现一次
浏览器和辅助技术(如NVDA、VoiceOver)把 <main></main> 当作页面唯一主内容锚点。若多次出现,屏幕阅读器可能跳过后续所有 <main></main>,或只朗读第一个;Google 也会降低该页核心内容识别置信度。
- 错误写法:
<main>首页内容</main><main>文章详情</main>(SPA中常见,但违反规范) - 正确做法:SPA应在路由切换时动态替换
<main></main>内容,而非新增;多区块场景改用<section></section>或@#@#@#@#@#@#@#@#@#@0 查看细则(应保持在段落内) - 性能提示:部分旧版屏幕阅读器对
<nav></nav>有快捷跳转键(如 NVDA + N),滥用会导致用户频繁误跳
<aside></aside> 的边界常被高估
<aside></aside> 表示“与主内容相关但可独立存在”的旁支信息,不是“右边那栏”。广告、作者简介、术语解释、延伸阅读都算;但“热门标签云”“最新评论列表”若与当前文章强耦合,则更倾向用 <section></section>。
- 关键判断:把它整个删掉,主内容是否依然完整、自洽?如果是,才适合
<aside></aside> - 兼容性注意:IE8 及更早版本不识别
<aside></aside>,需配合 HTML5 Shiv,但更重要的是——别为了兼容性放弃语义,而应通过 CSS 保证视觉降级可用 - 易错点:
<aside></aside>不能作为<main></main>的直接子元素以外的容器(W3C 明确建议其应靠近关联内容,而非全局悬浮)
真正难的不是记住每个标签怎么写,而是每次写 <div> 前问一句:这个区块如果去掉所有样式,机器还能不能准确说出它“是干什么的”。</div>
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











