《前端》vue滚动条 happy scroll--开发者readme--2020年7月10日

 









![欢迎PR](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)

Chrome 、Firefox、 Safari、 Edge 、  IE 9~11,都支持。但是目前不支持移动端              |

## Feature:

* [x] 保留原生滚动条功能

* [x] 支持动态设置滚动条颜色

* [x] 支持设置滚动条的位置。左右(竖向滚动条)、上下(横向滚动)方向

* [x] 支持隐藏滚动条

* [x] 支持动态设定滚动位置,并支持top与left值同步

* [x] 支持动态数据resize,滚动条自动隐藏与显示

* [x] 支持设置resize滚动条变化规则(e. 在chart应用中,来新消息时,滚动条始终在最底部)

* [ ] 支持设置滚动速度

* [ ] 支持设置隐藏滚动条,hover时显示

## Demo 地址

https://tangdaohai.github.io/vue-happy-scroll/

## 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

## 安装

1. npm

  推荐使用`npm`,这样可以跟随你的`webpack`配置去选择怎样打包。

   npm i -D vue-happy-scroll

2. CDN

   当前是使用的[https://unpkg.com](https://unpkg.com)托管CDN,unpkg会自动与`npm`中版本保持同步。

   通过以下方式引入即可:






> 可以访问[https://unpkg.com/vue-happy-scroll/](https://unpkg.com/vue-happy-scroll) 来选择不同版本

## 注册组件

### 全局注册

   ```vue

   

   

   ```

### 局部注册  

 

   

### 当`vue`是全局变量时

 //如果vue是全局变量,happyScroll自动全局安装。

   if (typeof window !== 'undefined' && window.Vue) {

     Vue.component('happy-scroll', HappyScroll)

   }

 

  

     

       

     

   

## 属性

### color:设置滚动条的颜色

* 类型`String`

* 默认值`rgba(51,51,51,0.2)`

* 用法:

 

    

  

    > 建议使用`rgba`,这样可以为滚动条设置透明度,当然,如果你需要设置透明度的话。

### size:设置滚动条的大小。

*  类型`Number|String`

* 默认值`4`

* 用法:

 

      

    

    > 对于竖向滚动条表示宽度,横向滚动条表示高度

### min-length-h (*new):设置` 横向`滚动条最小的长度

* 类型`Number`

* 默认值`40`

* 单位`px`

* 用法

 

    

  

**当元素无限长或者宽的时候,会导致滚动条无限小**,这种情况可以使用该属性。来设置最小的长度。

  

    

  

  也可以设置`百分比`来限制最小长度(可视区域 * min-length-h)。假设可视区域的宽度为`300px`,那么滚动条为`60px`。

  当`min-length-h`小于`1`的时候,会将其当作`百分比`来处理。

### min-length-v (*new):设置` 竖向`滚动条最小的长度

* 类型`NUmber`

* 默认值`40`

* 单位`px`

* 用法

  

    

  

**当元素无限长或者宽的时候,会导致滚动条无限小**,这种情况可以使用该属性。来设置最小的长度。

  

    

  

  也可以设置`百分比`来限制最小长度(可视区域 * min-length-v)。假设可视区域的高度为`200px`,那么滚动条为`40px`。

  当`min-length-h`小于`1`的时候,会将其当作`百分比`来处理。

### scroll-top:在组件`mounted`之后,设置`容器`距离顶部的距离。

* 类型`Number|String`

* 默认值`0`

* 修饰符`sync`

* 用法:

  

    

  

  

  

   > 相当于`element.scrollTop` 一致。

  `scroll-top`的值会自动转换为数字,所以当值为固定的数字时(使用`+`转换的),你无需增加`:(v-bind)`,直接写为`scroll-top="20"`即可。

### scroll-left:在组件`mounted`之后,设置`容器`距离左边的距离。

* 类型`Number|String`

* 默认值`0`

* 修饰符`sync`

* 用法:

  

    

  

  

  

    > 相当于`element.scrollLeft` 一致。

### hide-vertical:隐藏`竖向`滚动条

* 类型 `Boolean`

* 默认值 `false`

* 用法:

  

  

    

  

  

### hide-horizontal:隐藏`横向`滚动条

- 类型 `Boolean`

- 默认值 `false`

- 用法:
 

  

  

    

  

    >如果你不需要横向出现滚动条,可以设置hide-horizontal来提高性能。

### resize:开启对容器大小变化的监听

如果`你的容器`大小是变化的(`高度`或者`宽度`可能随时发生变化的情况),可使用`resize`来开启对容器大小变化的监听,当`容器`的`宽高`大于你设定的`宽高`时,会自动出现滚动条,反正会自动隐藏滚动条。

* 类型`Boolean`

* 默认值`false`

* 用法:

  

  

    

  

    > 此功能当前版本依赖 [element-resize-detector](https://github.com/wnr/element-resize-detector),目前正在寻找性能更高的办法,当然此插件的性能还是可以肯定的

### smaller-move-h、smaller-move-v

* 类型`String`

* 默认值`''`

* 可选值:

  1. `start`

  2. `end`

  3. 除`1、2`的值之外,其他所有值都认为是`默认值`

* 用法:
 

  

  

    

  

  > 当`resize=true`时,此配置才有效。

  该属性表示当容器`变小`时,滚动条移动的方向。

  * smaller-move-h 内容变小时,`横向`滚动条移动的方向

  * smaller-move-v 内容变小时,`竖向`滚动条移动的方向

  当设置为`start`时,表示变小之后,滚动条会移动到`头部`(对`竖向`滚动条来说是`最上边`,对`横向`滚动条来说是`最左边`)

  当设置为`end`时,表示变小之后,滚动条会移动到`尾部`(对`竖向`滚动条来说是`最下边`,对`横向`滚动条来说是`最右边`)

  当设置为`''`(默认值)时,表示在变小时,滚动条的位置不发生变化。

### bigger-move-h、bigger-move-v

* 类型`String`

* 默认值`''`

* 可选值:

  1. `start`

  2. `end`

  3. 除`1、2`的值之外,其他所有值都认为是`默认值`

* 用法:

  

    

  

  > 当`resize=true`时,此配置才有效。

  该属性表示当容器大小`变大`时,滚动条移动的方向

  属性值与`smaller-move-h`原理一致。

### left

* 类型`Boolean`

* 默认值`false`

* 用法:

  

    

  

  表示设置`竖向`滚动条依靠在`左`边。默认竖向滚动条在右边。

### top

* 类型`Boolean`

* 默认值`false`

* 用法:

  

    

  

  表示设置`横向`滚动条依靠在`上`边。默认横向滚动条在下边。v

### throttle

* 类型`Number`

* 默认值`14`

* 单位`毫秒`

* 说明:

  设置鼠标拖动滚动条的节流时间,如果没有特殊的要求不建议修改此值。

## 事件

### horizontal-start

* 参数`scrollLeft`

  > 在`horizontal-start`事件下,`scrollLeft`始终为`0`。

* 说明

  监听横向滚动条滚动到`头部`的事件。当`scroll-left = 0`时会触发该事件。

  

    

  

### horizontal-end

* 参数`scrollLeft`

* 说明

  监听横向滚动条滚动到`尾部`的事件。

  

    

  

## vertical-start

* 参数`scrollTop`

  > 在`vertical-start`事件下,`scrollTop`始终为`0`

* 说明

  监听竖向滚动条滚动到`头部`的事件。当`scroll-top = 0`时会触发该事件。

  

    

  

### vertical-end

* 参数`scrollTop`

* 说明

  监听竖向滚动条滚动到`尾部`的事件。
 

  

    

  

 

你可能感兴趣的:(VUE.JS)