Pagination
分页器,用于切换大量数据的页码。严格对齐 Semi Design:default(完整页码 + 省略号折叠,7 格上限)与 small(current/total 紧凑视图,可 hoverShowPageSelect 悬停弹全部页码切页)两类布局。showTotal 显示总页数;省略号 hover 弹出隐藏页码。越界的当前页/每页条数与快速跳页输入均会被钳制到有效范围(纯函数实现,受控 prop 仅经回调上报)。
如何引入
import { Pagination } from '@chenzy-design/svelte';基本
通过 total 设置总条数、pageSize 设置每页容量。
禁用
通过 disabled 禁用整个分页器。
总页数显示
通过 showTotal 显示总页数文案。
指定当前页码
通过 defaultCurrentPage 指定初始激活的页码(非受控)。
每页容量切换
开启 showSizeChanger,通过 Select 快速切换每页容量。
快速跳转
开启 showQuickJumper,输入页码回车快速跳转;越界自动跳末页。
页码受控
传入 currentPage 后为受控组件,当前页完全取决于 currentPage。
当前第 3 页
预设每页容量可选值
通过 pageSizeOpts 指定切换每页容量的可选值。
迷你版本
size='small' 为紧凑视图(current/total)。
hover 快速切换
迷你版本开启 hoverShowPageSelect,可 hover 页码弹出全部页码快速切换(v1.27)。
API 参考
Pagination
Props
| 属性 | 说明 | 类型 | 默认值 |
|---|---|---|---|
total | 数据总条数(对齐 Semi) | number | 1 |
showTotal | 是否显示总页数文案(对齐 Semi) | boolean | false |
pageSize | 每页条数;缺省取 pageSizeOpts[0](对齐 Semi,默认 null) | number | undefined |
pageSizeOpts | size changer 可选每页条数(对齐 Semi) | number[] | [10,20,40,100] |
size | small 为紧凑视图(current/total)(对齐 Semi) | 'small'|'default' | default |
currentPage | 受控当前页(越界自动钳制显示,不回写;对齐 Semi) | number | undefined |
defaultCurrentPage | 默认当前页(非受控;对齐 Semi) | number | 1 |
onPageChange | 仅页码变化回调(对齐 Semi) | (currentPage: number) => void | undefined |
onPageSizeChange | 每页容量变化回调(对齐 Semi) | (newPageSize: number) => void | undefined |
onChange | 页码或每页容量变化回调(对齐 Semi) | (currentPage: number, pageSize: number) => void | undefined |
prevText | 上一页内容;缺省显示 ‹(对齐 Semi prevText) | string | Snippet | undefined |
nextText | 下一页内容;缺省显示 ›(对齐 Semi nextText) | string | Snippet | undefined |
showSizeChanger | 显示每页条数选择器;size=small 时不生效(对齐 Semi) | boolean | false |
showQuickJumper | 显示快速跳页输入(越界静默钳制,非数字忽略;对齐 Semi) | boolean | false |
popoverZIndex | 浮层 z-index(对齐 Semi),透传 Select/Popover | number | 1030 |
popoverPosition | size changer / 省略号 / hover 浮层方位(对齐 Semi,透传 Select/Popover) | PopoverPosition | 'bottomLeft' |
style | 透传根元素内联样式(对齐 Semi style) | string | undefined |
class | 透传根元素类名(对齐 Semi className) | string | undefined |
hideOnSinglePage | 仅一页时隐藏整个分页器;showSizeChanger 为 true 时此开关失效(对齐 Semi) | boolean | false |
hoverShowPageSelect | size=small 时 hover 页码弹出全部页码快速切换(对齐 Semi,v1.27) | boolean | false |
disabled | 禁用(对齐 Semi) | boolean | false |
preventPageChangeOnPageSizeChange | 切换 pageSize 时阻止自动调整 currentPage(对齐 Semi) | boolean | false |
Accessibility
| ARIA role | navigation |
| 键盘交互 | TabEnterSpaceArrowLeftArrowRightHomeEnd |
- nav[aria-label] 包裹;页码列表 ul/li,页码为 li 内 <button>,当前页 aria-current=page
- 页码组 roving tabindex:仅当前/聚焦页 tabindex=0,方向键漫游移动焦点不切页,Enter/Space 切页
- 上一页/下一页在边界原生 disabled 且移出 Tab 序列
- 省略号可 hover 弹出隐藏页码(disabled 时降级为 aria-hidden 静态 …)
设计变量
| 变量 | 默认值 | 用法 |
|---|---|---|
--cd-color-pagination-item-bg-active | var(--cd-color-fill-1) | 翻页器 页码 按下态背景颜色 |
--cd-color-pagination-item-bg-default | transparent | 翻页器 页码 背景颜色 |
--cd-color-pagination-item-bg-disabled | transparent | 翻页器 页码 禁用态背景颜色 |
--cd-color-pagination-item-bg-hover | var(--cd-color-fill-0) | 翻页器 页码 悬浮态背景颜色 |
--cd-color-pagination-item-bg-selected | var(--cd-color-primary-light-default) | 翻页器 页码 选中态背景颜色 |
--cd-color-pagination-item-bg-selected-disabled | var(--cd-color-disabled-fill) | 翻页器 页码 选中禁用态背景颜色 |
--cd-color-pagination-item-border-active | transparent | 翻页器 页码 激活边框颜色 |
--cd-color-pagination-item-border-default | transparent | 翻页器 页码 默认边框颜色 |
--cd-color-pagination-item-border-disabled | transparent | 翻页器 页码 禁用边框颜色 |
--cd-color-pagination-item-border-hover | transparent | 翻页器 页码 悬浮边框颜色 |