WARNING
最外层容器必须要给明宽度或高度,具体根据你时水平滚动还是竖直滚动而定,如果觉得给定具体的宽高太死板,可用fixed定位配合top,bottom,left,right来设置 容器的大小,或者通过js,css的calc动态来计算最外层容器的大小
属性 | 描述 | 类型 | 默认值 |
---|---|---|---|
options | scroll的配置 (options的详细配置,better-scroll文档) | object | {} |
list | 绑定的数据列表 | array | [] |
direction | 滚动方向,有vertical和horizontal可选 | string | vertical |
valueKey | list选项value的key值 | string | value |
labelKey | list选项label的key值 | string | label |
currentIndex | 初始选中的下标 | number | 0 |
padding | 每个选项的padding样式 | string | 15px 15px |
fontSize | 每个选项的fontSize样式 | number | 15 |
名称 | 描述 | 参数 |
---|---|---|
default | 滚动区域 | data: 当前项的信息, index: 当前项的下标 |
事件 | 说明 | 回调参数 |
---|---|---|
change | 选中下标改变时触发 | index |
click | 选项点击时触发 | { data: '当前选项的信息', index: '当前选项的下标'} |
input | 选中的下标改变时触发 | index |
<template>
<div>
<div class="items">
<p class="item_title">横向滚动插槽(数据量很多)</p>
<vill-scroll-nav-bar
v-model="index"
direction="horizontal"
:list="list"
@click="handleClick"
@change="handleChange"
>
<template #default="{data, index}">
<span>{{data + '_' + index}}</span>
</template>
</vill-scroll-nav-bar>
<p class="item_change">{{index}}</p>
</div>
<div class="items">
<p class="item_title">横向滚动(数据量很少)</p>
<vill-scroll-nav-bar
direction="horizontal"
:list="list.slice(0, 3)"
padding="10px 15px"
:fontSize="14"
/>
</div>
<div class="items">
<p class="item_title">纵向滚动</p>
<div class="v_w">
<vill-scroll-nav-bar
v-model="index"
direction="vertical"
:list="h_list"
labelKey="text"
valueKey="val"
/>
</div>
</div>
</div>
</template>
<script>
export default {
data () {
return {
list: [],
h_list: [],
index: 0
}
},
created() {
this.getList()
},
methods: {
handleClick(data) {
console.log('click', data)
},
handleChange(data) {
console.log('change', data)
},
getList() {
setTimeout(() => {
this.list = [
'苹果',
'天马流星拳',
'香蕉',
'大兄弟',
'yes',
'葡萄',
'西红柿',
'番茄',
'守护雅典娜',
'顶不住',
'阿波罗',
'kobe',
'james',
'java',
'javaScript',
'golang',
'python'
]
this.index = 1
this.h_list = this.list.map(item => ({
val: item,
text: `- ${item} -`
}))
}, 500)
}
}
}
</script>
<style lang="scss" scoped>
.v_w{
width: 100px;
height: 500px;
border-right: 1px solid #eeeeee;
}
</style>