Skip to content

Pagination 分页 ​

数据分页导航,支持页码省略、前后翻页、自定义相邻页码数、总数展示、每页条数切换与快速跳转。

基础用法 ​

基础用法

页码省略 ​

多页省略

相邻页码数 ​

siblings 控制

siblings="1"(默认)siblings="2"

页码上限 ​

pager-count 页码按钮数量上限

siblings="2"(不设上限,7 个页码钮)siblings="2" + pager-count="5"(截断优先,只显示 5 个)pager-count="5"(100 页只显示 5 个页码钮)

超过上限时按当前页居中收缩窗口,省略号两端至少留 2 页(首尾页始终可达);低于最小值 5 回落 5 并在控制台告警。

总条数 ​

show-total 显示总条数

show-total 显示「共 X 条」不设置则隐藏

每页条数切换 ​

page-sizes 每页条数下拉

每页 10 条,当前第 1 页

切换每页条数后回到第 1 页并派发 oas-change,detail: { page: 1, pageSize }。

条数切换器阈值 ​

total-boundary 控制条数切换器显隐

total-boundary="100":total ≤ 100 时隐藏条数切换器(示例 total=30,下拉不渲染)点击按钮把 total 调大(>100)后切换器自动显示;调小回隐藏total 30 → 300total 300 → 30当前 total=30(切换器隐藏)

设置 total-boundary 后,仅 total 大于阈值才渲染每页条数下拉;未设置时维持现状(有 page-sizes 即显示)。

快速跳转 ​

show-jumper 跳至指定页

当前第 3 页

输入页码后回车跳转(越界自动夹取到合法范围),派发 oas-change,detail: { page, pageSize }。

组合用法 ​

总数 + 每页条数 + 快速跳转

每页 20 条,当前第 1 页

翻页事件 ​

oas-change 事件

当前第 1 页

禁用状态 ​

disabled 全局禁用

全部分页钮、每页条数下拉与跳转输入框均禁用

尺寸 ​

size 五档(xs / sm / md / lg / xl)

默认 md;非法值回落 md 并在控制台告警。

极简模式 ​

simple 极简形态

simple + show-jumper 叠加

极简形态只渲染前后钮与「当前 / 总页数」文本,与页码省略算法互斥(simple 优先)。

总数未知形态 ​

show-more 总数未知

total 未知(≤0)时渲染「上一页 / 更多 / 下一页」三钮;更多钮为不可点状态指示,prev/next 点击 current±1当前第 1 页(无总条数概念)total>0 时 show-more 无效,走正常页码渲染

show-more 用于总数未知的场景:不渲染页码序列与总数,仅三钮形态;show-jumper / page-sizes / hide-on-single 均不适用(无总页数概念)。

首末页 ​

show-edges 首末页钮

首页(« 禁用)中间页末页(» 禁用)

单页隐藏 ​

hide-on-single 单页不渲染

总条数 8、每页 10 → 单页,组件不显示未设置时单页仍显示(按钮禁用)

自定义图标 ​

prev-icon / next-icon 插槽

«»

提供 slot="prev-icon" / slot="next-icon" 内容时替换默认箭头 ‹ / ›。

自定义总数 ​

total 插槽

共 150 条数据

有 slot="total" 内容时替换内置「共 N 条」文案;show-total 布尔仍兼容(无插槽内容时显示内置文案)。

翻页拦截 ​

oas-before-change 拦截

当前第 1 页

oas-before-change 在翻页/跳转前派发,detail: { page };宿主 preventDefault() 可取消本次变更(本示例拦截跳转到第 4 页)。切换每页条数不拦截。

受控模式 ​

受控 current

上一页下一页回到第 1 页当前第 1 页

外部按钮直接设置 current 属性驱动视图跳页(越界自动夹取);组件自身翻页同样派发 oas-change 并回写属性。

边界场景 ​

单页 / 首尾禁用

单页数据(翻页按钮均禁用)首页(‹ 禁用)末页(› 禁用)

链接模式 ​

href-template 渲染为链接

href-template="#page={page}"(点击浏览器原生跳转,中键/右键/新标签可用)当前第 3 页target="_blank" 透传(点击新标签打开)disabled 时降级为不可点击的 span

设置 href-template(含 {page} 占位符)后,页码/前后/首末钮渲染为 <a href>,{page} 替换为目标页码;target 属性透传 <a target>。禁用时降级为 span(不可点)。点击仍派发 oas-change,oas-before-change 取消时会同时阻止原生导航。

响应式 ​

responsive 窄屏自动切极简

组件宽度 < 640px 时自动按 simple 极简形态渲染(ResizeObserver 监听),恢复宽度后还原;与显式 simple 等效

省略号跳页 ​

省略号可点击跳页

当前第 5 页

省略号渲染为可点击按钮,点击向该侧跳 siblings + 1 页(受 oas-before-change 拦截与边界夹取约束);aria-label 走 i18n(向前跳页/向后跳页)。

自定义页码内容 ​

page-item 插槽模板

插槽内容含 {page} 占位符,组件克隆并按页替换

宿主放入含 {page} 占位符的模板内容,组件对每个页码钮克隆该内容并把 {page} 文本替换为实际页码(仅 textContent 替换,防注入);未提供插槽时显示纯页码数字。prev/next/首尾钮不受影响。

API ​

oas-pagination ​

属性 ​

属性说明类型默认值
current当前页(受控,翻页会更新该属性)string1
disabled全局禁用:分页钮全部禁用并带 aria-disabled,每页条数下拉与跳转输入框禁用boolean—
hide-on-single单页(pageCount ≤ 1)时整个组件不渲染boolean—
href-template链接模式:设置后页码/前后/首末钮渲染为 <a href>({page} 占位符替换为目标页),中键/右键/新标签原生可用;disabled 时降级为不可点击的 spanstring—
page-size每页条数string10
page-sizes每页条数下拉选项(JSON 数组),如 [10,20,50];切换后回到第 1 页string—
pager-count页码按钮(不含前后/首末页钮)的最大可见数量,默认 9;超过上限时按当前页居中收缩窗口(省略号两端至少留 2 页,首尾页可达),低于最小值 5 回落 5 并告警string9
responsive响应式:组件宽度 < 640px 时自动按 simple 极简形态渲染(ResizeObserver 监听容器宽度,恢复后还原);与显式 simple 等效boolean—
show-edges显示首/末页双箭头钮(« »),边界处禁用;aria-label 走 i18nboolean—
show-jumper显示「跳至 __ 页」快速跳转输入框(回车跳转,越界夹取)boolean—
show-more总数未知形态:total ≤ 0 时渲染「上一页 / 更多 / 下一页」三钮(更多钮为不可点状态指示,样式对齐页码钮但弱化;prev/next 点击 current±1 并派发 oas-change);total > 0 时无效走正常页码渲染;show-jumper / page-sizes / hide-on-single 均不适用boolean—
show-total显示总条数文案「共 X 条」boolean—
siblings当前页前后各显示的页码数string1
simple极简形态:只渲染前后钮与「当前 / 总页数」文本,与页码省略算法互斥(simple 优先);show-jumper 可叠加boolean—
size尺寸档位:xs / small / medium(默认)/ large / xl;sm/md/lg 为等价别名;非法值回落 medium 并在控制台告警stringmedium
target链接模式下透传给 <a target>(如 _blank);仅在设置 href-template 时生效string—
total总条数string0
total-boundary条数切换器显隐阈值:设置后仅 total 大于该值才渲染每页条数下拉(total ≤ 阈值隐藏);未设置时维持现状(有 page-sizes 即显示)string—

事件 ​

事件说明
oas-before-change翻页/跳转前派发,可 preventDefault 取消本次变更(切换每页条数不派发);链接模式下同时阻止原生导航,detail: { page }
oas-change翻页 { page };切换每页条数 { page: 1, pageSize };快速跳转 { page, pageSize },detail: { page } | { page: 1, pageSize } | { page, pageSize }

插槽 ​

名称说明
next-icon下一页按钮图标插槽,有内容时替换默认 ›
page-item页码内容自定义插槽:宿主放入含 {page} 占位符的模板内容(如 <span slot="page-item" hidden>第 {page} 页</span>),组件对每个页码钮克隆该内容并替换占位符(仅 textContent,防注入);未提供时显示纯页码数字;prev/next/首尾钮不受影响
prev-icon上一页按钮图标插槽,有内容时替换默认 ‹
total总条数文案插槽,有内容时替换内置「共 N 条」

CSS 变量 ​

CSS 变量默认值
--oas-pagination-fontvar(--oas-font-size-md)
--oas-pagination-heightvar(--oas-control-height-md)

页码超出范围时自动省略,首尾翻页按钮在边界自动禁用。

基于 MIT OR Apache-2.0 双许可发布