微信小程序瀑布流布局

wxml文件

<view class="container">
  <view class="left-item">
    <view class="item"></view>
  </view>
   <view class="right-item">
    <view class="item"></view>
  </view>
</view>

js文件

let leftHeight = 0, rightHeight = 0; //分别定义左右两边的高度
let query;

page({
   data:{
      list: [],    //通过接口获取的数组
      leftList:[],     //左边数组
      rightList:[],    //右边数组
   },

   //瀑布流布局
  async waterfallFlow(){      //在获取list后调用
    const {list,leftList,rightList} =this.data;
    query = wx.createSelectorQuery();
    for (let item of list) {
      leftHeight <= rightHeight ? leftList.push(item) : rightList.push(item); //判断两边高度,来觉得添加到那边
      await this.getBoxHeight(leftList, rightList);
     }

  },
  getBoxHeight(leftList,rightList){
    return new Promise((resolve,reject)=>{
      this.setData({ leftList, rightList });
      query.select('.left-item').boundingClientRect();
      query.select('.right-item').boundingClientRect();
      query.exec((res) => {
       leftHeight = res[0].height; //获取左边列表的高度
       rightHeight = res[1].height; //获取右边列表的高度
       resolve();
      });
    })
  },

})

样式文件根据自己项目的样式来,主要分为两列。

总结,将样式分为两列,循化数据,获取两列的高度,根据判断条件将两个数组中的每个数据放入左右数组之中

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值