# scrollbar

# 介绍

scrollbar 插件为 BetterScroll 提供了样式美观的滚动条。

提示

从 v2.2.0 开始,用户可以提供自定义的滚动条。

# 安装

npm install @better-scroll/scroll-bar --save

// or

yarn add @better-scroll/scroll-bar

# 使用

首先引入 scrollbar 插件,并通过静态方法 BScroll.use() 注册插件

  import BScroll from '@better-scroll/core'
  import ScrollBar from '@better-scroll/scroll-bar'

  BScroll.use(ScrollBar)

接着在 options 传入正确的配置。

  new BScroll('.bs-wrapper', {
    scrollY: true,
    scrollbar: true
  })

# 示例

  • 竖向滚动条

    <template>
      <div class="scrollbar">
        <div ref="wrapper" class="scrollbar-wrapper">
          <ul class="scrollbar-content">
            <li v-for="i of 40" :key="i" class="scrollbar-content-item">
              {{ `I am item ${i} `}}
            </li>
          </ul>
        </div>
      </div>
    </template>
  • 横向滚动条

    <template>
      <div class="horizontal-scrollbar-container">
        <div class="scroll-wrapper" ref="scroll">
          <div class="scroll-content">
            <div class="scroll-item" v-for="index in num" :key="index">{{index}}</div>
          </div>
        </div>
      </div>
    </template>
  • 用户定制化滚动条

    <template>
      <div class="custom-scrollbar-container">
        <div ref="wrapper" class="custom-scrollbar-wrapper">
          <img @load="onload" class="custom-scrollbar-content" :src="girlImageLink" alt="">
          <!-- custom-vertical-scrollbar-->
          <div class="custom-vertical-scrollbar" ref="vertical">
            <div class="custom-vertical-indicator"></div>
          </div>
          <!-- custom-horizontal-scrollbar-->
          <div class="custom-horizontal-scrollbar" ref="horizontal">
            <div class="custom-horizontal-indicator"></div>
          </div>
        </div>
      </div>
    </template>
  • 搭配鼠标滚轮

    <template>
      <div class="mousewheel-scrollbar-container">
        <div ref="wrapper" class="custom-scrollbar-wrapper">
          <div class="custom-scrollbar-content">
            <img @load="onload" :src="girlImageLink" alt="">
          </div>
          <!-- custom-horizontal-scrollbar-->
          <div class="custom-horizontal-scrollbar" ref="horizontal">
            <div class="custom-horizontal-indicator"></div>
          </div>
        </div>
        <div class="tip">please use your mouse-wheel</div>
      </div>
    </template>

# scrollbar 选项对象

# fade

  • 类型boolean
  • 默认值true

当滚动停止的时候,滚动条渐隐。

# interactive

  • 类型boolean
  • 默认值false

滚动条是否可以交互。

# customElements 2.2.0

  • 类型HTMLElement[]
  • 默认值[]

用户提供自定义的滚动条。

// 横向滚动条
const horizontalEl = document.getElementById('用户自定义的滚动条')
new BScroll('.bs-wrapper', {
  scrollY: true,
  scrollbar: {
    customElements: [horizontalEl]
  }
})
// 竖向滚动条
const verticalEl = document.getElementById('用户自定义的滚动条')
new BScroll('.bs-wrapper', {
  scrollY: false,
  scrollX: true,
  scrollbar: {
    customElements: [verticalEl]
  }
})
// 双向滚动条
const horizontalEl = document.getElementById('用户自定义的滚动条')
const verticalEl = document.getElementById('用户自定义的滚动条')
new BScroll('.bs-wrapper', {
  freeScroll: true,
  scrollbar: {
    // 当滚动条是 2 个的时候,数组第一个元素是横向滚动条
    customElements: [horizontalEl, verticalEl]
  }
})

# minSize 2.2.0

  • 类型number
  • 默认值8

滚动条的最小尺寸,当用户提供了自定义的滚动条,该配置无效。

# scrollbarTrackClickable 2.2.0

  • 类型boolean
  • 默认值false

滚动条轨道是否允许点击。

注意:当开启该配置的时候,请保证 BetterScroll Options 的 click 为 true,否则无法触发点击事件。详细原因在这

new BScroll('.bs-wrapper', {
  scrollY: true,
  click: true // 必不可少
  scrollbar: {
    scrollbarTrackClickable: true
  }
})

# scrollbarTrackOffsetType 2.2.0

  • 类型string
  • 默认值'step'

滚动条轨道被点击之后,滚动距离的计算方式,默认与浏览器的表现形式一样,可以配置为 'clickedPoint',代表滚动条滚动至点击的位置。

# fadeInTime 2.4.0

  • 类型number
  • 默认值250

滚动条渐显的动画时长。

# fadeOutTime 2.4.0

  • 类型number
  • 默认值500

滚动条渐隐的动画时长。

提示

当 scrollbar 配置为 true 的时候,插件内部使用的是默认的插件选项对象。

const bs = new BScroll('.wrapper', {
  scrollbar: true
})

// 相当于

const bs = new BScroll('.wrapper', {
  scrollbar: {
    fade: true,
    interactive: false,
    // 以下配置项 v2.2.0 才支持
    customElements: [],
    minSize: 8,
    scrollbarTrackClickable: false,
    scrollbarTrackOffsetType: 'step',
    scrollbarTrackOffsetTime: 300,
    // 以下配置项 v2.4.0 才支持
    fadeInTime: 250,
    fadeOutTime: 500
  }
})