前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
首页程序员面试题库HTML main header footer 结构元素
HTML语义与文档

header、main、footer 各放什么?页面能有几个 main?

<header> 是页面或章节的引导内容,<footer> 是对应页面或章节的页脚信息;它们不只按屏幕顶部、底部的位置命名。<main> 标记文档主要内容,通常一个页面只应有一个当前可见的主内容区域,并且不应放进 header、footer、nav 等结构中。这样读屏用户可以快速跳到正文。

前端进阶之旅 · 一题精讲更新于 2026.09.29
HTML#语义与文档#Web 可访问性
先看核心答案读代码示例
理解线索

main 是当前页面主内容地标

  1. header可属于整页,也可属于文章章节的引导内容
  2. main页面主要内容地标,通常只保留一个当前可见项
  3. footer可属于整页,也可属于文章章节的收尾信息

页面级页头之外,文章或章节也可以有自己的 header。

核心回答

先记住这个答案

<main> 是页面主要内容的地标,读屏用户可借它跳过重复菜单;页面通常应只有一个当前可见的主内容。<header>、<footer> 则看它们属于页面还是某个章节,并非只看屏幕上的上下位置。文章卡片可以有自己的标题区和页脚,但不能把每个视觉容器都当成全站地标。

  • header 可用于页面或章节
  • footer 可用于页面或章节
  • 通常保留一个可见 main
  • 视觉位置由 CSS 决定

资讯页的三段主体结构

资讯站上方有站点 logo、搜索和导航,中间是文章列表,底部是版权与联系信息。用页面级 header、main、footer 表达结构,文章卡片内部也可以有自己的 header 或 footer。不要因为页脚视觉上在底部就把所有悬浮操作都塞进 footer,也不要把侧栏广告当作主要内容。单页应用切换路由时,应保持当前页面的主内容地标清楚。

页面地标的基本结构HTML
<header>
  <a href="/">站点首页</a>
  <nav aria-label="主导航">...</nav>
</header>
<main id="content"><h1>最新文章</h1></main>
<footer>版权与联系方式</footer>
<!-- 正文只有一个当前主内容区域 -->

这些结构元素给文档提供地标和内容关系,但具体视觉位置仍由 CSS 决定。 示例的导航属于页眉,最新文章属于主内容,版权属于页脚,这些位置不要求和 CSS 布局一一对应。页脚视觉上若固定在屏幕底部,也不会因此变成 <main>;一篇文章的作者栏即使在正文上方,也可以是该文章自己的 <header>。读屏地标应让用户快速跳到真正主内容,而不是让每个组件都报告成页面级页眉和页脚。

main 是当前页面主内容地标

header 和 footer 可属于整个页面,也可属于 article、section 等内容区域;它们的语义会随上下文变化。main 对应页面主体,不能靠重复多个可见 main 来做并列栏目;并列内容应在一个主内容区内组织。跳转链接还可指向 main,方便键盘用户绕过重复导航。

一个博客页可有全站 <header>、包住正文的 <main> 和全站 <footer>;正文里的每篇 <article> 还可有自己的标题区和作者信息。这些区域的语义取决于所属范围,不因视觉上都排在顶部就等价。若页面同时把桌面和移动版主内容都留在 DOM 中,应确认只有当前版本可见且不会产生两个竞争的主内容地标。

回答前,多想一步

容易答错的地方

说一个页面只能有一个 header
页面级页头之外,文章或章节也可以有自己的 header。
用多个 main 表示多个栏
主内容地标应清楚且唯一,并列栏目放在同一主内容结构内。
试着用自己的话回答

面试官还会怎么问?

导航必须写在 header 里吗?

不必须。nav 可独立出现,位置由页面结构决定。

文章内部的 footer 能放什么?

作者、标签、修改时间等该文章的附属信息都可能适合。

为什么需要跳到主内容的链接?

键盘用户能跳过每页重复出现的导航,直接进入正文。

从一道题,走向一组知识

把知识连起来

语义与文档

文章卡片用 article,普通内容分区用 section 吗?

文章可在 main 中以 article、section 组织,页面地标与局部结构各有层级。

语义与文档

长引用、短引用和作品标题,分别该用哪个标签?

引用文本可放在正文区域,blockquote 的来源语义不同于页面 footer。

语义与文档

哪些链接该放 nav?页面能有多个 nav 吗?

主导航常位于页面 header,但 nav 不要求一定嵌在里面。

参考资料

  • <main> HTML main element

示例用于理解所注明的运行环境与边界;延伸学习可结合原文中的更多案例。

本题目录
  1. 先记住这个答案
  2. 资讯页的三段主体结构
  3. main 是当前页面主内容地标
  4. 容易答错的地方
  5. 面试官还会怎么问
  6. 把知识连起来
读懂,再试着讲出来

先看核心答案,再读代码。最后展开追问,检查自己有没有遗漏边界。

试着回答追问
浏览全部面试题理解原理,也关注真实的使用场景。回到顶部 ↑