是HTML5语义化导航容器,每个独立导航区须单独包裹,内部用结构,href必填、禁用伪链接,用aria-current="page"标当前页,响应式需保留完整DOM结构。

用 包裹导航结构是语义化前提
不加 也能显示菜单,但搜索引擎和屏幕阅读器无法识别这是导航区域。现代 HTML5 要求把主导航逻辑包裹在 中,否则
漏掉这个属性会导致:键盘用户无法快速定位当前位置;自动化测试工具报无障碍失败;部分 SEO 工具无法识别导航上下文。
响应式折叠菜单必须保留原生 HTML 结构
移动端点开/收起只是显隐切换,不能在 JS 里动态生成或销毁 。否则 SSR 页面首屏无导航,爬虫抓不到链接,JS 失效时整个导航消失。
安全做法:
– HTML 始终包含完整导航结构
– 用 display: none / max-height + overflow: hidden 控制展开状态
– 切换按钮用 并绑定 aria-expanded 和 aria-controls
– 点击遮罩或按 Esc 键需关闭菜单并还原焦点
容易踩的坑:
– 用 v-if(Vue)或 {show && (React)条件渲染导航 DOM —— 首屏不可见且无 SEO}
– 折叠后仍保留大段空白占位,影响滚动体验
– 没处理键盘焦点循环(Tab 进入菜单后无法自然退出)
导航栏真正难的不是样式,是结构是否经得起 JS 关闭、爬虫扫描、键盘遍历和屏幕朗读——这些都依赖最原始的 HTML 元素与属性是否到位。
<nav><ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于</a></li>
<li><a href="/contact">联系</a></li>
</ul></nav>
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











