仅用于标注页面中主导航链接集合,必须包含以为主的可跳转链接,不可滥用在锚点、操作按钮、搜索框等非导航场景,且需避免影响可访问性。

<nav></nav> 标签本身不“创建”导航栏,它只是语义化地**标注**已存在的导航结构。用错地方或空挂 <nav></nav> 不会生成任何视觉效果,反而破坏可访问性和 SEO。
什么时候必须用 <nav></nav>?
只在页面中存在**主导航链接集合**(如顶部主菜单、侧边栏目入口、页脚快速跳转)时使用。不是所有链接组都配得上 <nav></nav>:
- 文章内锚点链接(如「回到顶部」)不用
<nav></nav> - 评论区的「回复」「编辑」「删除」操作按钮不是导航,别套
<nav></nav> - 单个链接(比如「登录」按钮)即使放在 header 里,也不构成
<nav></nav> - 面包屑(
<ol class="breadcrumb"></ol>)属于辅助导航,W3C 明确建议**不用**<nav></nav>包裹
<nav></nav> 必须包含可点击的链接吗?
是的,且应以 <a></a> 为主。虽然技术上允许放 <button></button> 或表单控件,但语义上违背了“导航”的本意——用户靠它跳转到其他页面或区域。常见误用:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
- 把整个搜索框包进
<nav></nav>:<nav><form> <input><button></button> </form></nav>❌ - 用
<nav></nav>包含纯文本说明(如「请选择分类」)❌ - 嵌套另一个
<nav></nav>(多级菜单应通过<ul>/<li> </ul>结构实现,而非嵌套语义标签)❌
和 <header></header>、<aside></aside> 的关系怎么理?
<nav></nav> 是功能型语义标签,<header></header> 和 <aside></aside> 是区域型语义标签——它们可以共存,但不能互相替代:
- 顶部主导航通常放在
<header></header>内,但要额外加<nav></nav>标明其用途:<header><nav><ul>...</ul></nav></header>✅ - 侧边栏里的「相关文章链接」属于次要导航,可用
<aside><nav></nav></aside>,但需确保这些链接确实服务于全局跳转,而非仅限当前文章上下文 -
<nav></nav>可以出现在文档任意位置(包括<main></main>或<footer></footer>),只要它承载的是导航意图
最常被忽略的一点:屏幕阅读器会把 <nav></nav> 当作一个可跳过的独立区域,如果里面塞了非导航内容,会直接干扰残障用户的操作流。语义不是装饰,是契约。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










