横向导航栏应使用nav+ul+li结构,用于网站一级入口;分页导航须用nav+ol(或ul+aria-label),表示内容序列位置;二者语义不同,不可混用,且需分别处理响应式、可访问性及动态高亮。

横向导航栏和分页导航是两类不同用途的组件,不能混用;强行把分页数字塞进横向导航栏结构里,既破坏语义,又增加维护成本,还容易在小屏上溢出或交互错乱。
横向导航栏该用 nav + ul + li,不是分页逻辑
横向导航栏本质是网站一级入口集合(如「首页」「关于」「服务」),它的 HTML 结构必须语义清晰、可访问性强。现代写法直接用 nav 包裹 ul,每个导航项是 li 里的 a:
<nav><ul>
<li><a href="/">首页</a></li>
<li><a href="/about">关于</a></li>
<li><a href="/contact">联系</a></li>
</ul></nav>
- 别用
div堆砌导航项 —— 屏幕阅读器无法识别导航区域 - 别把分页数字(如 « 1 2 3 4 »)硬塞进这个
ul—— 它们语义不同,aria-current="page"在这里不适用 -
display: flex是目前最稳的横向排列方式,gap控制间距比margin更干净 - 移动端不加 JS 也能响应:媒体查询里把
flex-direction: column,再配width: 100%即可垂直堆叠
分页导航必须独立结构,用 nav + ol 更准确
分页导航表示的是内容序列的线性位置(第 1 页、第 2 页…),W3C 推荐用有序列表 ol,因为页码有明确顺序;也可用 ul,但需确保 aria-label="分页导航" 显式声明:
<nav aria-label="分页导航"><ol>
<li><a href="?page=1">«</a></li>
<li><a href="?page=1" aria-current="page">1</a></li>
<li><a href="?page=2">2</a></li>
<li><a href="?page=3">3</a></li>
<li><a href="?page=4">»</a></li>
</ol></nav>
-
aria-current="page"必须由后端渲染或前端 JS 动态设置,HTML 静态写死会误导用户 - 禁用状态(如“上一页”在第 1 页时)不要用
disabled——a标签不支持该属性,改用aria-disabled="true"+ CSS 灰色样式 - 移动端无需 hamburger 菜单:分页项通常 ≤10 个,CSS 媒体查询设为垂直排列即可,避免 JS 操控显隐
- 若后端返回总页数未知,前端 JS 计算页码时注意边界:页码从 1 开始,
Math.ceil(total / pageSize)才是真实总页数
position: fixed 导航栏要小心 body 的 padding-top
横向导航栏设为固定定位后,页面内容会从顶部开始渲染,被遮挡。这不是 CSS 写错了,而是布局流没补全:
- 给
nav加position: fixed; top: 0; width: 100%; z-index: 1000; - 必须同步给
body加padding-top,值等于导航栏高度(比如64px) - 如果导航栏高度响应式变化(如移动端变矮),
padding-top也要用媒体查询覆盖,否则小屏下内容仍会被切掉顶部 - 别用
margin-top代替padding-top—— margin 不会撑开 body,滚动时可能露白
当前页高亮靠 JS 匹配 window.location.pathname,不是 class 写死
每个 HTML 页面里把 class="active" 硬编码在某个 a 上,会导致链接失效或高亮错位。真实场景中,高亮必须动态判断:
document.querySelectorAll('nav a').forEach(link => {
const href = new URL(link.href).pathname;
const currentPath = window.location.pathname;
if (href === currentPath || (href === '/' && currentPath === '/index.html')) {
link.setAttribute('aria-current', 'page');
}
});
- 注意路径归一化:
/和/index.html可能指向同一页面,需统一处理 - 如果是带查询参数的分页(如
?page=3),只比对 pathname 不够,得解析URLSearchParams - 这段 JS 放在
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











