结果集较大、用户大概率逐页浏览或跳到特定页:订单、文章、商品、后台日志、审核队列。
界面与交互 · 导航结构
分页Pagination
把长列表按每页条数切成多页,让用户在当前页、范围标注、边界与页码之间稳定移动的控件;订单行、范围与当前页码都长在物件上。
订单列表:翻页切片,订单行、范围、当前页码一起换
亲手翻页、改每页条数、跳页、导出本页——看订单行内容、「第 X-Y 条,共 Z 条」范围和当前页码高亮如何长在物件上,首末页到头如何禁用并写明原因。
第 0 步:这是一个订单管理后台的订单列表。点页码、上一页/下一页翻页,看上方订单行和「第 X-Y 条,共 Z 条」范围一起换;改每页条数看总页数重算;翻到首末页看「上一页/下一页」到头禁用并写明原因;最后点红色主操作「导出本页为 CSV」把当前页切片固化为文件——结果都长在物件上。
- CN10001林晓¥128已发货8月1日
- CN10002陈宇航¥266待付款9月2日
- CN10003王诗琪¥109处理中10月3日
- CN10004李俊¥529已完成11月4日
- CN10005赵敏¥76已取消12月5日
- CN10006孙皓¥848已发货8月6日
- CN10007周莉¥228待付款9月7日
- CN10008吴鹏¥58处理中10月8日
- CN10009郑楠¥1309已完成11月9日
- CN10010冯雪¥268已取消12月10日
对照:当前第 1 页,订单行显示第 1–10 条,共 47 条;当前页码墨色实心。原因:分页按每页 10 条把 47 条切片,第 1 页就是前 10 条。下一步:点页码或「下一页」翻页看订单行与「第 X-Y 条」一起换;改每页条数看页数重算;翻到末页看「下一页」禁用。
面板教会的知识点
把刚才在订单列表上看到的现象命名为六条规则。
- 翻页 = 切片结果:点页码或上一页/下一页,上方订单行立即换成该页的数据条目——结果长在订单物件上,不只靠底部说明。
- 范围标注同步:「第 X-Y 条,共 Z 条」随翻页即时变化,与每页条数和总数对齐,让用户随时知道看到的是哪一段。
- 当前页码墨色实心:当前页用
aria-current="page"加墨色填充,跟着翻页移动;不用颜色独撑,形状(实心 vs 描边)也能区分。 - 首末页到头禁用:第一页「上一页」、最后一页「下一页」用
disabled并写明原因,不静默无效点击。 - 每页条数改 → 页数重算:总数 ÷ 每页条数 = 页数;改每页条数后页数与分组重算,当前页校正,避免落到空页。
- 页码多时 … 折叠:页码很多时(如每页 5 条 → 10 页),中间用省略号折叠,首尾与当前页邻域始终可见。
什么时候用分页
从用户任务判断,而不是「列表很长就加分页」。
内容是无限流式更新(→ 加载更多 / list);需要同时对照所有项做排序汇总(→ 一次加载或 table 加筛选);结果集小到一屏放得下(直接铺开)。
怎么用:从总数到可分享当前页的最短路径
一次到位的检查顺序。
- 定总数与每页条数:总数来自数据源;每页条数给用户选(如 5/10/20),用 select 并写清「每页 N 条」。
- 算页数并切片:页数 = ceil(总数 ÷ 每页);当前页 = clamp(当前页, 1, 页数);渲染当前页切片。
- 给上一页 / 页码 / 下一页:当前页
aria-current="page";首末页边界禁用并写明;页码多时省略号折叠。 - 同步范围标注:同屏显示「第 X-Y 条,共 Z 条」与「第 N / M 页」,随翻页即时更新。
- 给 a11y 与键盘:页码支持 Tab、方向键、Home/End、Enter;翻页结果通过
aria-live告知。 - 同步 URL:把 page 与每页条数写进查询参数(?page=3&size=10),刷新或分享能回到同一页。
同一订单列表的正反例
目标都是分页 47 条订单。差别只在于范围、边界、页数重算是否守规则。
头部写「共 47 条」、底部写「第 11–20 条」;当前页码墨色实心;第一页「上一页」、末页「下一页」禁用并写明;改每页条数后页数重算、当前页校正;URL 同步 ?page=2&size=10。
用户随时知道在看哪一段、还有几页、能不能往回/往后翻。只显示「1 2 3 4 5」几个数字,没有总数也没有当前范围;末页「下一页」还能点但什么都不发生;改每页条数后页数没变、人跳到不存在的页;刷新就回到第 1 页。
用户不知道一共多少、现在在哪、还有没有下一页。快速自测
47 条订单每页 10 条,用户在第 5 页(最后一页)把每页条数从 10 改成 20。当前页应该落到哪一页?为什么「下一页」要禁用?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。