更新记录

1.0.4(2024-12-26) 下载此版本

组件优化

1.0.3(2024-12-25) 下载此版本

优化组件

1.0.2(2024-12-25) 下载此版本

补充示例图片

查看更多

平台兼容性

Vue2 Vue3
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × ×

hbxw-waterfall 瀑布流组件

介绍

高度可配置,内容可定义瀑布流组件

使用示例

推荐先直接复制示例代码到工程中看效果了解下使用方法再投入项目使用。 示例中有使用到我的另一插件:hbxw-fixed,测试时下载使用吧


<template>
    <view class="text-hbxw-waterfall">
        <hbxw-waterfall :list="list" :columns="2" v-if="waterfall === 1">
    </hbxw-waterfall>
    <hbxw-waterfall 
      :list="list" 
      :columns="3" 
      v-if="waterfall === 2"
      :customItemStyle="{backgroundColor: 'green',borderRadius: '30rpx'}"
    >
    </hbxw-waterfall>
    <hbxw-waterfall 
      :list="list" 
      :columns="2"
      v-if="waterfall === 3"
    >
    <template #main="{item, next}">
      <view class="custom-waterfall-item">
        <view class="images-item">
          <image class="images-itemIn" @load="next" @error="next" mode="center" :src="item.src"></image>
        </view>
        <view>{{item.title}}</view>
        <view>{{item.subTitle}}</view>
        <view>{{item.price}}</view>
      </view>
    </template>
    </hbxw-waterfall>
    <hbxw-fixed :bottom="0" :left="0">
      <view class="waterfall-fixed">
        <button class="waterfall-fixed-item" @click="toggleWaterFall(1)">瀑布流1</button>
        <button class="waterfall-fixed-item" @click="toggleWaterFall(2)">瀑布流2</button>
        <button class="waterfall-fixed-item" @click="toggleWaterFall(3)">瀑布流3</button>
      </view>
    </hbxw-fixed>
    </view>
</template>

<script>
    export default {
        data() {
            return {
        waterfall: 1,
                list: []
            }
        },
    mounted() {
      this.init();
    },
    onReachBottom() {
      console.log('---- onReachBottom ----:');
      uni.showLoading({
        title: "数据加载中..."
      })
      setTimeout(() => {
        this.list.push(...[
          {
            src: 'https://placehold.jp/999999/ff4400/500x300.png?text=EXAMPLE4',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '106'
          },{
            src: 'https://placehold.jp/999999/ff4400/300x500.png?text=EXAMPLE4',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '556'
          },{
            src: 'https://placehold.jp/999999/ff4400/200x300.png?text=EXAMPLE4',
            title: '从前从前有个人爱你很久',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '56'
          },{
            src: 'https://placehold.jp/999999/ff4400/400x300.png?text=EXAMPLE4',
            title: '但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '16'
          },{
            src: 'https://placehold.jp/999999/ff4400/200x300.png?text=EXAMPLE4',
            title: '但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '196'
          }
        ])
        uni.hideLoading();
      }, 1500);
    },
        methods: {
      init() {
        this.list = [
          {
            src: 'https://placehold.jp/999999/ff4400/300x300.png?text=EXAMPLE0',
            title: '但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '256'
          },{
            src: 'https://placehold.jp/999999/ff4400/300x150.png?text=EXAMPLE1',
            title: '从前从前有个人爱你很久,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '96'
          },{
            src: 'https://placehold.jp/999999/ff4400/300x600.png?text=EXAMPLE2',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '656'
          },{
            src: 'https://placehold.jp/999999/ff4400/300x100.png?text=EXAMPLE3',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '856'
          },{
            src: 'https://placehold.jp/999999/ff4400/400x300.png?text=EXAMPLE4',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '506'
          },{
            src: 'https://placehold.jp/999999/ff4400/500x300.png?text=EXAMPLE4',
            title: '偏偏风渐渐把距离吹得好远',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '956'
          },{
            src: 'https://placehold.jp/999999/ff4400/200x300.png?text=EXAMPLE4',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '156'
          },{
            src: 'https://placehold.jp/999999/ff4400/600x400.png?text=EXAMPLE4',
            title: '故事的最后你好像还是说了拜拜',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '506'
          },{
            src: 'https://placehold.jp/999999/ff4400/300x300.png?text=EXAMPLE4',
            title: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远',
            subTitle: '从前从前有个人爱你很久,但偏偏风渐渐把距离吹得好远,好不容易又能再多爱一天,但故事的最后你好像还是说了拜拜',
            price: '15'
          }
        ]
      },
            toggleWaterFall(type) {
        this.waterfall = type;
        this.init();
      }
        }
    }
</script>

<style lang="scss">
.text-hbxw-waterfall{
  width: 100%;
  padding: 20rpx 10rpx;
  box-sizing: border-box;
  background-color: #F1F5F7;
}
.waterfall-fixed{
  width: 750rpx;
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: center;
  background-color: green;
  height: 100rpx;
  gap:10rpx 0;
}
.waterfall-fixed-item{
  flex:1;
  display: flex;
}
.custom-waterfall-item{
  display: flex;
  flex-direction: column;
  gap:10rpx;
}
.images-item{
  width: 100%;
  height: 240rpx;
  .images-itemIn{
    width: 100%;
    height: 100%;
  }
}
</style>

API

Props

属性名 类型 默认值 必填 说明
list Array null 当前瀑布流数据
columns Number 2 瀑布流列数 2/3
isReset Boolean false 重置瀑布流,取反一个值即可重置
gapx String 16rpx 瀑布项的左右间距
gapy String 16rpx 瀑布项的上下间距
nextType String load 瀑布流怎么加载下一项 load:基于图片加载事件 delay:基于指定延时
delay Number 100 基于指定延时加载下一项的延时时间配置
customItemStyle Object null 瀑布项容器自定义样式

插槽使用

  • 插件提供content插槽,可以自定义瀑布项图片下面的内容,具体看示例瀑布流2

  • 插件提供main插槽可以完全自定义瀑布流项,但是使用了main完全自定义,需要你手动调用插槽暴露的next方法,或者你配置nextType使用延时加载下一项,具体看示例瀑布流3

注:插件体积大因有示例图片,实际体积很小

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问