![欢迎PR](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)
Chrome 、Firefox、 Safari、 Edge 、 IE 9~11,都支持。但是目前不支持移动端 |
* [x] 保留原生滚动条功能
* [x] 支持动态设置滚动条颜色
* [x] 支持设置滚动条的位置。左右(竖向滚动条)、上下(横向滚动)方向
* [x] 支持隐藏滚动条
* [x] 支持动态设定滚动位置,并支持top与left值同步
* [x] 支持动态数据resize,滚动条自动隐藏与显示
* [x] 支持设置resize滚动条变化规则(e. 在chart应用中,来新消息时,滚动条始终在最底部)
* [ ] 支持设置滚动速度
* [ ] 支持设置隐藏滚动条,hover时显示
https://tangdaohai.github.io/vue-happy-scroll/
`vue-happy-scroll`是一款基于vue2.0的滚动条插件。
此插件致力**解决原生滚动条在不同系统、不同浏览器中的丑陋表现**,在保证原生滚动条功能可用的基础上实现了更丰富的功能、保证在所支持的浏览器下展现出风格一致、交互体验一致的滚动条。
它可以让你无需关心滚动条的兼容性问题,无需关心`内容区域`的宽高,当设定`resize`属性后,可以根据内容大小`自动显示或隐藏滚动条`。
这里有对各种丰富的[额外功能](https://github.com/tangdaohai/vue-happy-scroll#%E5%B1%9E%E6%80%A7)进行说明。
## 版本迭代计划列表
https://github.com/tangdaohai/vue-happy-scroll/projects/1
推荐使用`npm`,这样可以跟随你的`webpack`配置去选择怎样打包。
npm i -D vue-happy-scroll
当前是使用的[https://unpkg.com](https://unpkg.com)托管CDN,unpkg会自动与`npm`中版本保持同步。
通过以下方式引入即可:
> 可以访问[https://unpkg.com/vue-happy-scroll/](https://unpkg.com/vue-happy-scroll) 来选择不同版本
```vue
```
//如果vue是全局变量,happyScroll自动全局安装。
if (typeof window !== 'undefined' && window.Vue) {
Vue.component('happy-scroll', HappyScroll)
}
* 类型`String`
* 默认值`rgba(51,51,51,0.2)`
* 用法:
> 建议使用`rgba`,这样可以为滚动条设置透明度,当然,如果你需要设置透明度的话。
* 类型`Number|String`
* 默认值`4`
* 用法:
> 对于竖向滚动条表示宽度,横向滚动条表示高度
* 类型`Number`
* 默认值`40`
* 单位`px`
* 用法
**当元素无限长或者宽的时候,会导致滚动条无限小**,这种情况可以使用该属性。来设置最小的长度。
也可以设置`百分比`来限制最小长度(可视区域 * min-length-h)。假设可视区域的宽度为`300px`,那么滚动条为`60px`。
当`min-length-h`小于`1`的时候,会将其当作`百分比`来处理。
* 类型`NUmber`
* 默认值`40`
* 单位`px`
* 用法
**当元素无限长或者宽的时候,会导致滚动条无限小**,这种情况可以使用该属性。来设置最小的长度。
也可以设置`百分比`来限制最小长度(可视区域 * min-length-v)。假设可视区域的高度为`200px`,那么滚动条为`40px`。
当`min-length-h`小于`1`的时候,会将其当作`百分比`来处理。
* 类型`Number|String`
* 默认值`0`
* 修饰符`sync`
* 用法:
> 相当于`element.scrollTop` 一致。
`scroll-top`的值会自动转换为数字,所以当值为固定的数字时(使用`+`转换的),你无需增加`:(v-bind)`,直接写为`scroll-top="20"`即可。
* 类型`Number|String`
* 默认值`0`
* 修饰符`sync`
* 用法:
> 相当于`element.scrollLeft` 一致。
* 类型 `Boolean`
* 默认值 `false`
* 用法:
- 类型 `Boolean`
- 默认值 `false`
- 用法:
>如果你不需要横向出现滚动条,可以设置hide-horizontal来提高性能。
如果`你的容器`大小是变化的(`高度`或者`宽度`可能随时发生变化的情况),可使用`resize`来开启对容器大小变化的监听,当`容器`的`宽高`大于你设定的`宽高`时,会自动出现滚动条,反正会自动隐藏滚动条。
* 类型`Boolean`
* 默认值`false`
* 用法:
> 此功能当前版本依赖 [element-resize-detector](https://github.com/wnr/element-resize-detector),目前正在寻找性能更高的办法,当然此插件的性能还是可以肯定的
* 类型`String`
* 默认值`''`
* 可选值:
1. `start`
2. `end`
3. 除`1、2`的值之外,其他所有值都认为是`默认值`
* 用法:
> 当`resize=true`时,此配置才有效。
该属性表示当容器`变小`时,滚动条移动的方向。
* smaller-move-h 内容变小时,`横向`滚动条移动的方向
* smaller-move-v 内容变小时,`竖向`滚动条移动的方向
当设置为`start`时,表示变小之后,滚动条会移动到`头部`(对`竖向`滚动条来说是`最上边`,对`横向`滚动条来说是`最左边`)
当设置为`end`时,表示变小之后,滚动条会移动到`尾部`(对`竖向`滚动条来说是`最下边`,对`横向`滚动条来说是`最右边`)
当设置为`''`(默认值)时,表示在变小时,滚动条的位置不发生变化。
* 类型`String`
* 默认值`''`
* 可选值:
1. `start`
2. `end`
3. 除`1、2`的值之外,其他所有值都认为是`默认值`
* 用法:
> 当`resize=true`时,此配置才有效。
该属性表示当容器大小`变大`时,滚动条移动的方向
属性值与`smaller-move-h`原理一致。
* 类型`Boolean`
* 默认值`false`
* 用法:
表示设置`竖向`滚动条依靠在`左`边。默认竖向滚动条在右边。
* 类型`Boolean`
* 默认值`false`
* 用法:
表示设置`横向`滚动条依靠在`上`边。默认横向滚动条在下边。v
* 类型`Number`
* 默认值`14`
* 单位`毫秒`
* 说明:
设置鼠标拖动滚动条的节流时间,如果没有特殊的要求不建议修改此值。
* 参数`scrollLeft`
> 在`horizontal-start`事件下,`scrollLeft`始终为`0`。
* 说明
监听横向滚动条滚动到`头部`的事件。当`scroll-left = 0`时会触发该事件。
* 参数`scrollLeft`
* 说明
监听横向滚动条滚动到`尾部`的事件。
* 参数`scrollTop`
> 在`vertical-start`事件下,`scrollTop`始终为`0`
* 说明
监听竖向滚动条滚动到`头部`的事件。当`scroll-top = 0`时会触发该事件。
* 参数`scrollTop`
* 说明
监听竖向滚动条滚动到`尾部`的事件。