必须作为body、article或section的直接子元素,用于包裹顶部介绍性内容;同理,须依附于明确节元素,表达所属区块的结尾信息,二者禁止互相嵌套且不可脱离语义上下文。

<header></header> 和 <footer></footer> 不是“可有可无的装饰”,它们在网页重构中承担明确的结构定位职责:一个锚定内容起点,一个收束内容终点,且各自有不可替代的语义边界。
重构时 <header></header> 应该放在哪里?
它必须包裹页面或某个 <section></section> / <article></article> 的**顶部介绍性内容**,不是所有顶部区域都适合。常见误用是把整个导航栏+Logo+搜索框一股脑塞进一个全局 <header></header>,却忽略了嵌套结构。
- 页面级
<header></header>:放在最外层开头,仅包含网站级信息(如 logo、主<nav></nav>、全局搜索) - 区块级
<header></header>:可出现在<section></section>或<article></article>内部,只负责该区块的标题、作者、发布时间等(例如一篇博客文章顶部的<h1></h1>+<time></time>) - 不能嵌套在
<footer></footer>、<address></address>或另一个<header></header>里 - 如果页面有多个逻辑区块(如“关于我们”“服务列表”),每个
<section></section>可自带<header></header>,但不要为每个<div> 都加一个 <h3>重构时 <code><footer></footer>的合法位置有哪些?<footer></footer>不等于“页面最底下那条灰条”。它的归属对象决定了它该放哪儿——它可以属于整个页面,也可以只属于某个<article></article>或<section></section>。- 页面级
<footer></footer>:放在最末尾,且不应被<main></main>或<section></section>包裹(除非是该区块的页脚) - 文章级
<footer></footer>:放在<article></article>内部结尾处,用于放作者信息、标签、相关链接等(注意:不是版权信息) - 禁止放在
<header></header>、<nav></nav>或<main></main>外部但又不属于的位置(比如悬浮固定在右下角) - 一个
<section></section>可以没有<footer></footer>,但一旦用了,内容必须与该区块直接相关(如“本节参考资料”)
为什么
<main></main>位置错了会导致语义崩塌?<main></main>是页面唯一性最强的语义容器,它的位置错误会直接干扰屏幕阅读器跳转和搜索引擎主内容识别。- 必须是
的直接子元素,且只能出现一次 - 不能被
<article></article>、<section></section>、<header></header>、<footer></footer>、<nav></nav>包裹——否则它就不是“页面主内容”,而是某区块的子内容 - 常见重构陷阱:把整站导航+侧边栏+主内容全塞进一个
<div class="wrapper">,再给这个 <code><div> 加 <code><main></main>,结果<main></main>实际包裹了非主内容 - 正确做法:
<main></main>开始于主导航之后、页脚之前,中间只放真正面向用户的核心信息流(如文章列表、表单、产品卡片)
重构中最容易被忽略的,是语义标签的“归属关系”——
<header></header>属于谁、<footer></footer>服务谁、<main></main>排除谁。脱离上下文单独看标签,很容易套用模板;而真实重构,永远从内容层级和用户意图出发定位每个标签。 - 页面级











