# 滚动区域
自定义下拉刷新,回到顶部,多列切换
# 平台差异
App | H5 | 微信小程序 | 支付宝小程序 | 头条小程序 |
---|---|---|---|---|
√ | √ | √ | √ | √ |
# Props
参数 | 说明 | 类型 | 可选值 | 默认值 |
---|---|---|---|---|
top | 距离顶部多少 px 触发 | number | 80 | |
bottom | 距离底部多少 px 触发 | number | 100 | |
loading-text | 正在刷新文案 | string | 正在刷新 | |
pulling-text | 下拉刷新文案 | string | 下拉刷新 | |
release-text | 释放刷新文案 | string | 释放刷新 | |
scroll-top | 滚动条距离顶部位置 | number | ||
scroll-into-view | 滚动到对应元素 id | string | ||
scroll-with-animation | 在设置滚动条位置时使用动画过渡 | boolean | ||
enable-back-to-top | 滚动条返回顶部 | boolean | ||
show-back-top-button | 是否显示回到顶部按钮 | boolean | true | |
show-scrollbar | 控制是否出现滚动条 | boolean | ||
enable-flex | 启用 flexbox 布局 | boolean | ||
refresher-enabled | 是否开启下拉刷新 | boolean | true |
# Methods
事件名称 | 说明 | 参数 |
---|---|---|
end | 结束(收起)下拉刷新 | function() |
scrollTo | 滚动到 | function(top) |
backTop | 回到顶部 | function() |
# Slots
插槽 | 说明 | 参数 |
---|---|---|
loading | 下拉加载区域 | {text, status, move} |
default | 内容区域 |
status:
pulling
下拉中loading
加载中end
结束
# 示例
基本用法
<template>
<view class="demo-scroller">
<cl-scroller ref="scroller" @up="onUp" @down="onDown">
<view class="item" v-for="(item, index) in list" :key="index">
<cl-list-item :label="`${index + 1}`"></cl-list-item>
</view>
<cl-loadmore v-if="list.length > 0" :loading="loading"></cl-loadmore>
</cl-scroller>
</view>
</template>
<script>
export default {
data() {
return {
list: [],
loading: false
};
},
created() {
this.onDown();
},
methods: {
onUp() {
this.loading = true;
setTimeout(() => {
this.list.push(...new Array(20).fill(1));
this.loading = false;
}, 1000);
},
onDown() {
setTimeout(() => {
this.list = new Array(20).fill(1);
this.$refs["scroller"].end();
}, 1000);
}
}
};
</script>
<style lang="scss">
page,
.demo-scroller {
height: 100%;
overflow: hidden;
.item {
margin: 20rpx;
}
}
</style>