更新记录
1.0.2(2024-11-20)
下载此版本
- 优化dom问题判断
1.0.1(2024-11-18)
下载此版本
- 优化
属性 |
说明 |
类型 |
默认值 |
可选值 |
backTopShow |
返回顶部 |
Boolean |
true |
true/false |
scrollwithanimation |
scroll-view (scroll-with-animation) |
Boolean |
true |
true/false |
isnextpage |
是否已是最后一页 |
Boolean |
false |
true/false |
imgSrc |
列表中图片字段 |
String |
src (与列表中图片字段对应) |
--- |
方法 |
说明 |
接收值 |
backTop |
返回顶部 (使用ref方式调用) |
val (true 初始化数据) |
Init |
数据处理渲染(使用ref方式调用) |
arr (列表包含图片) |
scroll |
滚动事件 |
scrollTop (当前滚动的距离) |
scrolltolower |
触底事件 |
--- |
插槽 |
说明 |
接收值 |
top |
列表上方的内容 |
--- |
bottom |
列表下方的内容 |
--- |
Backtotop |
自定义返回顶部样式 |
--- |
left |
列表左侧循环渲染的内容 |
item |
right |
列表右侧循环渲染的内容 |
item |
1.0.0(2024-11-13)
下载此版本
瀑布流
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 4.24 |
× |
√ |
× |
× |
× |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
× |
× |
× |
× |
× |
实现思路
- 布局采用左右风格的方式,图片采用宽度固定自适应高度
- 接收到显示的数组循环获取左右的高度对比下一个插入左或右
- 提供左右插槽可自定义布局,传出当前循环的值与下标
- 提供触底事件与返回顶部事件
- 在滚动过程中隐藏不需要显示的数据以减少微信小程序dom的消耗
- 优化
示例
属性 |
说明 |
类型 |
默认值 |
可选值 |
backTopShow |
返回顶部 |
Boolean |
true |
true/false |
scrollwithanimation |
scroll-view (scroll-with-animation) |
Boolean |
true |
true/false |
isnextpage |
是否已是最后一页 |
Boolean |
false |
true/false |
imgSrc |
列表中图片字段 |
String |
src (与列表中图片字段对应) |
--- |
方法 |
说明 |
接收值 |
backTop |
返回顶部 (使用ref方式调用) |
val (true 初始化数据) |
Init |
数据处理渲染(使用ref方式调用) |
arr (列表包含图片) |
scroll |
滚动事件 |
scrollTop (当前滚动的距离) |
scrolltolower |
触底事件 |
--- |
插槽 |
说明 |
接收值 |
top |
列表上方的内容 |
--- |
bottom |
列表下方的内容 |
--- |
Backtotop |
自定义返回顶部样式 |
--- |
left |
列表左侧循环渲染的内容 |
item |
right |
列表右侧循环渲染的内容 |
item |
<template>
<view style="width: 100vw;height: 100vh;background-color: #ccc;">
<newCompentVue :isnextpage="true" imgSrc="productDisplayImg" @scrolltolower="scrolltolower" ref="leftright">
<template v-slot:left="{item,index}">
<view style="margin: 0 12rpx 24rpx 24rpx;background-color: white;">
<image style="width: 100%;display: block;" :src="item.productDisplayImg" mode="widthFix"></image>
<view>{{item.productName}}</view>
</view>
</template>
<template v-slot:right="{item,index}">
<view style="margin: 0 24rpx 24rpx 12rpx;background-color: white;">
<image style="width: 100%;display: block;" :src="item.productDisplayImg" mode="widthFix"></image>
<view>{{item.productName}}</view>
</view>
</template>
<template v-slot:top>
top
</template>
<template v-slot:bottom>
bottom
</template>
</newCompentVue>
</view>
</template>
<script>
import newCompentVue from '../Component/newCompent.vue'
export default {
components: {
newCompentVue
},
data() {
return {
arrList: [{
productDisplayImg: "../../static/1.jpg",
productName: '啊实打实大苏打实打实的'
},
{
productDisplayImg: "../../static/2.jpg",
productName: '123'
},
{
productDisplayImg: "../../static/logo.png",
productName: 'vvvvv'
}
],
tempList: []
}
},
async onLoad() {
var d = [...this.arrList];
for (let i = 0; i < 3; i++) {
this.arrList = [...this.arrList, ...d]
}
this.arrList = [...this.arrList, {
productDisplayImg: "../../static/1.jpg",
productName: 'kasdkas'
}]
this.arrList = [...this.arrList, {
productDisplayImg: "../../static/1.jpg",
productName: '阿三大苏打啥话都说'
}]
this.tempList = [...this.arrList]
this.$nextTick(() => {
this.$refs.leftright.Init(this.arrList)
})
},
methods: {
// isnextpage true 不触发
scrolltolower() {
this.$nextTick(() => {
// this.$refs.leftright.Init(this.tempList)
})
}
}
}
</script>
<style>
</style>
源代码
微信小程序瀑布流组件