UNPKG

@z-cloud/virtual-vanilla

Version:

提供跨平台(浏览器,小程序)的虚拟列表公共基类

90 lines 2.21 kB
export type Key = string | number | bigint; export interface Range { startIndex: number; endIndex: number; overscan: number; count: number; } export interface Rect { width: number; height: number; } export interface VirtualItem { key: Key; index: number; start: number; end: number; size: number; lane: number; } export type ScrollBehavior = 'auto' | 'smooth' | 'instant'; export type ScrollAlignment = 'start' | 'center' | 'end'; export interface ScrollToOptions { align?: ScrollAlignment; behavior?: ScrollBehavior; } export interface BasicVirtualizerOptions { /** * 列表项数量 */ count: number; /** * 每一项的大小,竖向滚动为高度,横向滚动为宽度 */ size: number | ((index: number) => number); /** * 可见范围外两端渲染数量,该值越大出现白屏的概率越小。建议跟随页面滚动的虚拟列表该值可稍微配置大一些。 * @default 1 */ overscan?: number; /** * 水平滚动 * @default false */ horizontal?: boolean; /** * 每项之间的间距 * @default 0 */ gap?: number; /** * 应用于虚拟列表起始位置的padding */ paddingStart?: number; /** * 应用于虚拟列表末尾位置的padding */ paddingEnd?: number; /** * 初始滚动位置 */ initialOffset?: number | (() => number); /** * 滚动元素距离页面顶部的距离 */ scrollMargin?: number; /** * 列表被分成的列数或行数 (垂直列表对应列数,水平列表对应行数) * @default 1 */ lanes?: number; /** * 自定义每一项的 Key 值, 如React中的key * @param index 当前项的索引 * @returns */ getItemKey?: (index: number) => Key; /** * 自定义截取范围 * @param range * @returns */ customeRange?: (range: Range) => number[]; /** * 元素滚动 尺寸变化等时调用 * @param scrolling 是否滚动中 * @returns */ onChange?: (scrolling: boolean) => void; } //# sourceMappingURL=typings.d.ts.map