必须是的直接子元素,否则会丢失“页面唯一主体”语义,导致屏幕阅读器跳过、搜索引擎降权;导航须用/包裹链接以保障可访问性与seo;多需用aria-label或aria-labelledby区分;搜索框、登录按钮不得混入。

为什么必须是的直接子元素
浏览器和辅助技术依赖结构层级判断内容主次。 正确做法只有两种: 必须用 页面有顶部菜单、页脚链接、文章内“上一篇/下一篇”时,光靠多个 必须按场景选一种标注方式: 正确拆分方式: 最易被忽略的一点:<div class="wrapper"><main>...</main></div>,这等于主动放弃语义价值。
– 直接作为的子元素;
– 紧跟在<header></header>和<nav></nav>之后,且前面无其他块级容器。导航链接必须用
包裹,不能只套
<nav>@#@#@#@#@#@#@#@#@#@0@#@#@#@#@#@#@#@#@#@1</nav>看似简洁,但破坏了语义完整性:辅助技术无法识别这是“一组可遍历的导航项”,键盘用户按 Tab 键时可能跳过整个区域,SEO 也难以提取导航结构。<ul></ul>或<ol></ol>组织多个链接:
– <li>明确每个导航项的边界;
– 列表语义天然支持焦点顺序与读屏器逐项播报;
– CSS 中display: flex或grid布局不影响语义,但记得给<a></a>设display: block确保点击热区完整。多个导航区域怎么区分,aria-label不是可选项
<nav></nav>标签不够。没有aria-label或aria-labelledby,屏幕阅读器只会重复读“navigation”,用户根本分不清哪个是主导航、哪个是辅助入口。
– 没可见标题(如纯图标汉堡菜单):加aria-label="主导航";
– 有可见标题(如<h2 id="nav-title">网站导航</h2>):用aria-labelledby="nav-title";
– 页脚导航、侧边栏目等次要区域,同样要标注,例如aria-label="页脚快速链接"。搜索框、登录按钮别塞进
<nav><form>...</form>
<button>登录</button><ul>...</ul></nav>是高频误写。搜索和登录属于操作入口,不是导航行为,混在一起会让
– 搜索框放<header></header>内部,或用<section role="search"></section>单独包裹;
– 登录/注册按钮放在<header></header>右上角,或用户菜单下拉中;
– 只有明确用于跳转(如锚点“回到顶部”)的按钮,才允许保留在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











