一、安装
npm install vue-seamless-scroll --save
//或者
yarn add vue-seamless-scroll
二、注册
// 全局注册 main.js中
import Vue from 'vue'
import scroll from 'vue-seamless-scroll'
Vue.use(scroll)
// 局部使用 在需要用到的组件中
import vueSeamless from 'vue-seamless-scroll'
export default {
components: {
vueSeamless
}
}
三、使用
<vue-seamless-scroll ref="vueSeamlessRef" :data="listData" class="warp" :class-option="vueSeamlessOptions">
<ul class="item">
<li v-for="(item, index) in listData" :key="index">
<span class="title" v-text="item.title"></span>
<span class="date" v-text="item.date"></span>
</li>
</ul>
</vue-seamless-scroll>
<style lang="scss" scoped>
.warp {
height: 270px; // 必须否则滚动可视区会撑开!!!!!!!!!
width: 360px;
margin: 0 auto;
overflow: hidden; // 必须否则滚动可视区会撑开!!!!!!!!!!
ul {
list-style: none;
padding: 0;
margin: 0 auto;
li,
a {
display: block;
height: 30px;
line-height: 30px;
display: flex;
justify-content: space-between;
font-size: 15px;
}
}
}
</style>
四、配置项
|
描述 |
默认值default |
类型type |
step |
数值越大速度滚动越快(step 值不建议太小,不然会有卡顿效果。如果设置了单步滚动,step 需是单步大小的约数) |
1 |
Number |
limitMoveNum |
开启无缝滚动的数据量 |
1 |
Number |
hoverStop |
是否启用鼠标hover控制 |
true |
Boolean |
direction |
方向 0 往下 1 往上 2向左 3向右 |
1 |
Number |
openTouch |
移动端开启touch滑动 |
true |
Boolean |
singleHeight |
单步运动停止的高度(默认值0是无缝不停止的滚动) direction 为 0/1 时生效。 |
0 |
Number |
singleWidth |
单步运动停止的宽度(默认值0是无缝不停止的滚动) direction 为 2/3 时生效。 |
0 |
Number |
waitTime |
单步停止等待时间(默认值1000ms) |
1000 |
Number |
switchOffset |
左右切换按钮距离左右边界的边距(px) |
30 |
Number |
autoPlay |
需要实现手动切换左右滚动的时候,必须设置autoPlay:false(1.1.17 版本开始,只需要设置navigation:false),目前不支持环路 |
true |
Boolean |
switchSingleStep |
手动单步切换step值(px) |
134 |
Number |
switchDelay |
单步切换的动画时间(ms) |
400 |
Number |
switchDisabledClass |
不可以点击状态的switch按钮父元素的类名 |
disabled |
String |
五、回调事件
<vue-seamless-scroll :data="listData" @ScrollEnd="ScrollEnd" class="warp">
ScrollEnd: function(){
console.log("ScrollEnd")
}
四、注意事项
- :data=“listData” 无缝滚动 list 数据,必须要有。
- vueSeamlessOptions最好放在计算属性中
- vue-seamless-scroll需要手动设置width、height、overflow:hidden
- 左右的无缝滚动需要给主内容区域(即默认slot插槽提供)设定合适的css width属性(否则无法正确计算实际宽度)。 也可以通过给他设置为display:flex;无需设置css width属性
- step值不建议太小,不然会有卡顿效果(如果设置了单步滚动,step需是单步大小的约数,否则无法保证单步滚动结束的位置是否准确。~~~~~,比如单步设置的30,step不能为4)
- 需要实现手动切换左右滚动的时候,必须设置autoPlay:false(1.1.17版本开始,只需要设置navigation:false),目前不支持环路
- 提供了slot left-switch || right-switch可以自由定义需要的按钮样式 外层有div已经定位了位置居中,距离两边侧的距离可以通过switchOffset参数调整
- 当按钮到达边界位置,会自动为无法点击状态按钮加上定义的switchDisabledClass: ‘disabled’,可以按需配置实践中的一些问题点