HTML5 入门教程
main 标签
本教程共 110 篇 · 第 68 篇 · 更新于 2026-07-28 · 约 4 分钟阅读
HTML5HTML5 入门教程语义化main主内容区唯一性可访问性
68. main 标签
本节目标:理解 main 标识页面主体内容的作用,记住每页只能有一个。
<main> 是页面最重要的语义标签之一。它标识了页面的核心内容区域。
每页只能有一个 main
这是硬性规则。一个 HTML 文档里,main 只能出现一次。
<!-- 正确 -->
<body>
<header>...</header>
<main>
<h1>文章标题</h1>
<p>正文内容</p>
</main>
<footer>...</footer>
</body>
<!-- 错误:不能有两个 main -->
<body>
<main>内容1</main>
<main>内容2</main>
</body>
浏览器不会报错,但多个 main 会让屏幕阅读器困惑。遵守规则是开发者的责任。
main 里放什么
页面的核心内容——对用户来说最重要的东西。
博客文章页面:article 在 main 里。 商品详情页:商品信息在 main 里。 搜索结果页:结果列表在 main 里。
main 里不放什么
以下内容不应该出现在 main 里:
- 导航链接(应该用 nav)
- 侧边栏(应该用 aside)
- 页眉页脚
- 站点搜索框
- 版权信息
这些内容在很多页面重复出现,不属于”主体内容”。
对可访问性的价值
屏幕阅读器可以用 main 标签给用户一个”跳到主内容”的快捷键。
用户不需要每次都听一遍导航菜单,直接跳到核心内容。
<body>
<a href="#main-content" class="skip-link">跳到主要内容</a>
<nav>...</nav>
<main id="main-content">
<h1>页面标题</h1>
<p>核心内容...</p>
</main>
</body>
.skip-link {
position: absolute;
left: -9999px;
}
.skip-link:focus {
left: 10px;
}
main 的嵌套规则
main 不能嵌套在以下元素内部:
<article><aside><footer><header><nav>
这些元素各自代表独立的内容区域,不应该成为”主体内容”的一部分。
完整示例
<body>
<header>
<h1>我的博客</h1>
<nav>
<a href="/">首页</a>
<a href="/archive">归档</a>
</nav>
</header>
<main>
<article>
<h2>今天的主题</h2>
<p>这里是文章正文,是页面的核心内容。</p>
</article>
<article>
<h2>另一篇文章</h2>
<p>同样在 main 里。</p>
</article>
</main>
<aside>
<h3>热门文章</h3>
<ul>...</ul>
</aside>
<footer>
<p>版权所有 2026</p>
</footer>
</body>
main 包裹了所有文章,aside 放热门链接,footer 放版权。主次分明。