标签仅语义化标识主导航链接组,不提供样式或交互功能;其内容须为跳转链接,禁用按钮、表单等非导航元素;需配合CSS/JS实现下拉、响应式等行为,且旧IE需polyfill支持。
是语义化容器,只表示「页面中一组主导航链接」,不负责样式、交互或菜单层级逻辑。浏览器和屏幕阅读器靠它识别导航区域,但点击展开、下拉、高亮当前页这些功能,必须靠 CSS 和 JavaScript 实现。
不会自动变横向菜单,也不会响应鼠标悬停 是允许的(比如顶部主菜单 + 页脚快捷链接),但语义重复的(如一个页面里套三层 )会被辅助技术忽略,但合理使用能提升结构化数据解析准确率内容必须是「跳转用的链接」,不能是按钮、搜索框、登录表单或纯文本说明。
( 不是导航链接)(搜索框不属于导航语义))通常不用 包裹,因为它是位置路径,不是跳转入口集合HTML5 本身不提供任何菜单交互能力。 只是告诉浏览器“这里是一组导航链接”,展开收起、移动端汉堡菜单、键盘焦点管理全靠外部代码。
role="navigation" 或 aria-expanded 属性,
导致屏幕阅读器无法感知菜单状态Tab 进入、Enter 展开、ArrowDown 移动焦点等逻辑:hover 或 :focus-within)在触摸设备上基本失效,不可靠所有现代浏览器都原生支持 ,但老版本 IE(≤8)不认识它,会当成未知标签处理——既不渲染样式,也不暴露 DOM 接口。
立即学习“前端免费学习笔记(深入)”;
document.createElement("nav") 注册元素(或引入 html5shiv) 应用默认样式(比如 display: block),得手动补 nav { display: block; }
在旧浏览器中改善 SEO 或可访问性——它的语义价值在 DOM 解析层就丢失了