实例
OverlayScrollbars
实例是通过调用 OverlayScrollbars
函数并传入一个元素和选项对象来创建的。
const osInstance = OverlayScrollbars(document.body, {});
实例方法
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
options(): Options |
- | Options : 当前选项 |
获取实例当前选项配置 |
options(newOptions, pure?): Options |
newOptions : PartialOptions 新选项pure : boolean | undefined 是否应在添加新选项之前重置选项 |
Options :完整的新选项 |
设置实例选项配置 |
on(eventListeners, pure?): Function |
eventListeners : EventListeners 一个包含已添加监听器的对象。字段为事件名,值为监听器pure : boolean | undefined 是否应在添加新监听器之前移除所有已添加的事件监听器 |
Function : 一个用于移除所有已添加事件监听器的函数 |
向实例添加事件监听器 |
on(name, listener): Function |
name : string 事件名listener : Function 当事件被触发时调用的函数 |
Function : 一个用于移除已添加事件监听器的函数 |
向实例添加单个事件监听器 |
on(name, listeners): Function |
name : string 事件名listeners : Function[] 当事件被触发时调用的函数数组 |
Function : 一个用于移除已添加的事件监听器的函数 |
向实例添加多个事件监听器 |
off(name, listener): void |
name : string 事件名listener : Function 从实例移除的函数 |
- | 从实例中移除单个事件监听器 |
off(name, listeners): void |
name : string 事件名listeners : Function[] 从实例移除的函数数组 |
- | 从实例中移除多个事件监听器 |
update(force?): boolean |
force : boolean | undefined 是否应强制使缓存失效以进行更新 |
Function 一个布尔值,表示更新事件是否通过此更新触发 |
更新实例 |
state(): State |
State : 状态对象 |
State : 一个描述实例状态的对象 |
获取实例状态 |
elements(): Elements |
Elements : 元素对象 |
Elements : 一个描述实例元素的对象 |
获取实例元素 |
destroy(): void |
- | - | 销毁实例并移除所有已添加的元素 |
plugin(plugin: object): object |
plugin : 插件对象 |
object | undefined : 一个描述插件实例模块的对象,如果未找到任何实例,则为 undefined |
获取传入插件的实例模块 |
Typescript
// OverlayScrollbars TypeScript接口的简化版本。
interface OverlayScrollbars {
// 获取实例当前的选项设置。
options(): Options;
// 设置实例的当前选项,可选参数pure控制是否纯净更新。
options(newOptions: PartialOptions, pure?: boolean): Options;
// 向实例添加事件监听器。
on(eventListeners: EventListeners, pure?: boolean): () => void;
// 向实例添加单个事件监听器。
on<N extends keyof EventListenerArgs>(
name: N,
listener: EventListener<N>
): () => void;
// 向实例添加多个事件监听器。
on<N extends keyof EventListenerArgs>(
name: N,
listener: EventListener<N>[]
): () => void;
// 从实例中移除单个事件监听器。
off<N extends keyof EventListenerArgs>(
name: N,
listener: EventListener<N>
): void;
// 从实例中移除多个事件监听器。
off<N extends keyof EventListenerArgs>(
name: N,
listener: EventListener<N>[]
): void;
// 更新实例状态。
update(force?: boolean): boolean;
// 获取实例的状态信息。
state(): State;
// 获取实例所管理的元素集合。
elements(): Elements;
// 销毁实例并移除所有已添加的元素。
destroy(): void;
// 获取传入插件的实例模块。
plugin<P extends InstancePlugin>(
osPlugin: P
): InferInstancePluginModuleInstance<P> | undefined;
}
// 描述OverlayScrollbars实例的状态信息。
interface State {
// 当前填充(padding)的像素值。
padding: TRBL;
// 填充是否为绝对值。
paddingAbsolute: boolean;
// 视口的宽度和高度(以像素为单位)。
overflowEdge: XY<number>;
// 溢出量(以像素为单位)。
overflowAmount: XY<number>;
// 视口的CSS溢出样式。
overflowStyle: XY<OverflowStyle>;
// 视口是否有溢出。
hasOverflow: XY<boolean>;
// 视口滚动坐标信息。
scrollCoordinates: {
// 每个轴的起始(原点)滚动坐标。
start: XY<number>;
// 每个轴的结束滚动坐标。
end: XY<number>;
};
// 方向是否被认为是从右至左(RTL)。
directionRTL: boolean;
// 实例是否已被销毁。
destroyed: boolean;
}
// 描述OverlayScrollbars实例包含的各个元素。
interface Elements {
// 实例应用于的目标元素。
target: HTMLElement;
// 宿主元素,是所有其他元素的根。
host: HTMLElement;
// 负责应用正确内边距的元素,根据初始化可能与视口元素相同。
padding: HTMLElement;
// 负责执行滚动操作的元素。
viewport: HTMLElement;
// 用于承载内容的元素,根据初始化可能与视口元素相同。
content: HTMLElement;
// 可以获取当前`scrollLeft`或`scrollTop`偏移量的元素,根据目标元素可能与视口元素相同。
scrollOffsetElement: HTMLElement;
// 可以添加`scroll`事件的元素,根据目标元素可能与视口元素相同。
scrollEventElement: HTMLElement | Document;
// 水平滚动条元素集合。
scrollbarHorizontal: CloneableScrollbarElements;
// 垂直滚动条元素集合。
scrollbarVertical: CloneableScrollbarElements;
}