瀑布式布局又叫流式布局也叫百分比布局

分为三个列表

总列表list

leftList和rightList

wxml内的代码为

<view class="box">
    <view class="left">
        <view bindtap="toDeatil" data-id="{{item.postsId}}" class=" fly" wx:for="{{leftList}}" wx:key="index">
        <view>
            <image mode='widthFix' src="{{item.coverImgUrl}}"></image>
            <view class="van-ellipsis" style="text-align: center;">
            {{item.title}}<van-icon name="chat-o" />
            </view>
        </view>
    </view>
    </view>
    <view class="right">
        <view bindtap="toDeatil" data-id="{{item.postsId}}" class="fly" wx:for="{{rightList}}" wx:key="index">
        <image mode='widthFix' src="{{item.coverImgUrl}}"></image>
        <view class="van-ellipsis" style="text-align: center;">
        {{item.title}}<van-icon name="chat-o" />
        </view>
    </view>
    </view>
</view>

在wx.js中写入

Page({

data: {
        list:[],
        leftList:[],
        rightList:[],
        leftHeight: 0,
        rightHeight: 0,
    },
getlist(){//自定方法
        if(this.data.list.length == 0){
            // console.log(this.data.leftList);
            return
        }
        let item = this.data.list.shift()
        // console.log(item);
        wx.getImageInfo({//获取图片的高度对比
          src: item.coverImgUrl,
          success:(res)=>{
              if(this.data.leftHeight > this.data.rightHeight){
                  this.data.rightList.push(item)
                  this.data.rightHeight += res.height/res.width
              }else{
                    this.data.leftList.push(item)
                    this.data.leftHeight += res.height/res.width
              }
          },
          
          complete:()=>{
            //   console.log(this.data.leftList);
            //   console.log(this.data.rightList);
              this.setData({
                  leftList:this.data.leftList,
                  rightList:this.data.rightList
              })
          }
        })
        // console.log(this.data.leftList);
        this.getlist()
        
    },
 onLoad: function (options) {
        getPost(this.pageNum,10).then(res=>{//getPost为封装的请求接口
            console.log(res);
            this.setData({
                list:res.data.rows
            })
            this.data.list = res.data.rows
            // console.log(this.data.list);
            this.getlist()//在生命函数内调用getlist方法
        })
        
    },

})

就是给list列表分类如果left高度大于right高度则放在right列表内反之相同

在用wxss给两个盒子样式

posted on 2022-04-21 21:28  白夜皇帝  阅读(444)  评论(0)    收藏  举报