项目
版本

选项

您可以使用一组初始选项来初始化 OverlayScrollbars,这些选项可以随时使用 options 方法进行更改:

OverlayScrollbars(document.querySelector("#myElement"), {
  overflow: {
    x: "hidden",
  },
});

默认的选项包括:

const defaultOptions = {
  paddingAbsolute: false,
  showNativeOverlaidScrollbars: false,
  update: {
    elementEvents: [["img", "load"]],
    debounce: [0, 33],
    attributes: null,
    ignoreMutation: null,
  },
  overflow: {
    x: "scroll",
    y: "scroll",
  },
  scrollbars: {
    theme: "os-theme-dark",
    visibility: "auto",
    autoHide: "never",
    autoHideDelay: 1300,
    autoHideSuspend: false,
    dragScroll: true,
    clickScroll: false,
    pointers: ["mouse", "touch", "pen"],
  },
};
选项 类型 默认值 说明
paddingAbsolute boolean false 表示是否将内容的内边距设置为绝对值。
showNativeOverlaidScrollbars boolean false 表示是否应显示原生的叠加滚动条。
update.elementEvents Array<[string, string]> | null [['img', 'load']] 这是一个由元组组成的数组,其中元组的第一个值是选择器,第二个值是事件名称。如果任何具有指定选择器的元素触发了任何指定的事件,插件将自行更新。默认值可解释为“如果任何 img 元素触发 load 事件,插件将更新自身”。
防抖监控内容变更的 MutationObserver。如果传入一个元组,第一个值是超时时间,第二个值是最大等待时间。如果只传入一个数字,则只指定了超时时间,没有最大等待时间。如果为 null,则不进行防抖。有助于微调性能。
update.debounce [number, number] | number | null [0, 33] 注意:如果超时值使用了 0,则使用 requestAnimationFrame 而不是 setTimeout 来进行防抖处理。
update.attributes string[] | null null 注意:即使此选项为 nullMutationObserver 总会观察一个基础属性数组。
一个由 MutationObserver 应额外观察的针对内容的属性名组成的数组。
update.ignoreMutation (mutation) => any | null null 一个接收 MutationRecord 作为参数的函数。如果该函数返回一个 truthy 值,则忽略该突变且插件不会更新。有助于微调性能。
overflow.x string 'scroll' 注意:有效值为:'hidden', 'scroll', 'visible', 'visible-hidden', 和 'visible-scroll'。
水平(x 轴)的溢出行为。
overflow.y string 'scroll' 注意:有效值为:'hidden', 'scroll', 'visible', 'visible-hidden', 和 'visible-scroll'。
垂直(y 轴)的溢出行为。
scrollbars.theme string | null 'os-theme-dark' 将指定的主题(类名)应用于滚动条。
scrollbars.visibility string 'auto' 注意:有效值为:'visible', 'hidden', 和 'auto'。
如果其滚动轴能够具有可滚动的溢出,则滚动条的可见性。(轴的可滚动溢出仅在溢出行为为'scroll'或'visible-scroll'时才可能)。
scrollbars.autoHide string 'never' 注意:有效值为:'never', 'scroll', 'leave', 和 'move'。
自动隐藏可见滚动条的可见性,在用户执行特定操作后。
scrollbars.autoHideDelay number 1300 自动隐藏滚动条之前的时间延迟(以毫秒为单位)。
scrollbars.autoHideSuspend boolean false 暂停自动隐藏功能,直到首次执行滚动交互为止。
此选项的默认值因向后兼容性原因设为false,但为了更好的可访问性建议设置为true
scrollbars.dragScroll boolean true 指示是否可以通过拖动滚动条手柄来滚动。
scrollbars.clickScroll boolean false 注意:此选项需要 ClickScrollPlugin 才能生效。
指示是否可以通过点击滚动条轨道来滚动。
scrollbars.pointers string[] | null ['mouse', 'touch', 'pen'] 插件应响应的 PointerTypes(指针类型)。

TypeScript

// 定义一个OverlayScrollbars实例的选项类型。
type Options = {
  // 指定内边距是否应为绝对值。
  paddingAbsolute: boolean;
  // 指定是否显示原生滚动条。仅当原生滚动条被覆盖时有效。
  showNativeOverlaidScrollbars: boolean;
  // 自定义自动更新的行为。
  update: {
    /**
     * 来自具有给定选择器的元素的指定事件将触发更新。
     * 对于MutationObserver和ResizeObserver无法检测到的所有内容都非常有用,
     * 例如:图像的`load`事件或`transitionend`/`animationend`事件。
     */
    elementEvents: Array<[elementSelector: string, eventNames: string]> | null;
    /**
     * 用于检测内容变化的防抖设置。
     * 如果提供了一个元组,可以自定义`timeout`(超时时间)和`maxWait`(最大等待时间),单位为毫秒。
     * 如果是一个单一数字,则只自定义`timeout`。
     *
     * 如果`timeout`为`0`,仍然存在防抖。(它通过`requestAnimationFrame`执行)。
     */
    debounce: [timeout: number, maxWait: number] | number | null;
    /**
     * 如果这些HTML属性发生变化,将触发更新。
     * 基本属性如`id`、`class`、`style`等始终被观察,无需显式添加。
     */
    attributes: string[] | null;
    // 一个函数,允许忽略内容突变,或者如果什么都不忽略则为null。
    ignoreMutation: ((mutation: MutationRecord) => any) | null;
  };
  // 按轴自定义溢出行为。
  overflow: {
    // 水平(x轴)的溢出行为。
    x: OverflowBehavior;
    // 垂直(y轴)的溢出行为。
    y: OverflowBehavior;
  };
  // 自定义滚动条的外观。
  scrollbars: {
    // 滚动条的主题。主题值将作为`class`添加到实例的所有`scrollbar`元素上。
    theme: string | null;
    // 滚动条的可见性行为。
    visibility: ScrollbarsVisibilityBehavior;
    // 滚动条的自动隐藏行为。
    autoHide: ScrollbarsAutoHideBehavior;
    // 滚动条自动隐藏的延迟时间,单位为毫秒。
    autoHideDelay: number;
    // 是否暂停滚动条自动隐藏行为,直到发生滚动。
    autoHideSuspend: boolean;
    // 是否可以通过拖动滚动条的把手来滚动视口。
    dragScroll: boolean;
    // 是否可以通过点击滚动条的轨道来滚动视口。
    clickScroll: boolean;
    // 支持的指针类型数组。
    pointers: string[] | null;
  };
};
在本文档中