最近写一个小程序的瀑布流布局,发现网上别人写的都是css加js的方法,页面分两列,加载数据通过JS分别载入到两列中。比较复杂,研究了一下,弄了一个比较简单的方法,分享给大家。
效果如下图:
wxml页面
<view class='case-page'>
<view class='list-masonry'>
<view class='item-masonry' wx:for="{{note}}">
<image src='{{item.url}}' mode='widthFix'></image>
<text>{{item.title}}</text>
</view>
</view>
</view>
wxss
page{
background-color: #eee;
}
.case-page{
padding:20rpx;
}
.list-masonry{
column-count: 2;
column-gap: 20rpx;
}
.item-masonry{
background-color: #fff;break-inside: avoid; box-sizing: border-box; padding: 20rpx;
}
.item-masonry image {
width: 100%;
}
js页面给一个初始数据
Page({
/**
* 页面的初始数据
*/
data: {
imgWidth:0,imgHeight:0,
note: [
{
title: '案例名称',
url: 'http://zq.jhcms.cn/attachs/photo/201711/20171130_176CFE51B6710715B1BBBEF2F86ACB0C.jpg',
},
{
title: '你所不知道的红酒知识',
url: 'http://img3.imgtn.bdimg.com/it/u=1417732605,3777474040&fm=26&gp=0.jpg',
},
{
title: '红酒知识',
url: 'http://f10.baidu.com/it/u=121654667,1482133440&fm=72',
},
{
title: '案例名称',
url: 'http://zq.jhcms.cn/attachs/photo/201711/20171130_9E39DA252E3946BE36218D85876C4AB4.jpg',
},
{
title: '案例名称',
url: 'http://img3.imgtn.bdimg.com/it/u=1417732605,3777474040&fm=26&gp=0.jpg'
},
{
title: '案例名称',
url: 'http://f10.baidu.com/it/u=121654667,1482133440&fm=72'
},
{
title: '案例名称',
url: 'http://img4.imgtn.bdimg.com/it/u=2748975304,2710656664&fm=26&gp=0.jpg'
},
{
title: '案例名称',
url: 'http://img2.imgtn.bdimg.com/it/u=1561660534,130168102&fm=26&gp=0.jpg'
},
{
title: '案例名称',
url: 'http://img3.imgtn.bdimg.com/it/u=1417732605,3777474040&fm=26&gp=0.jpg'
}
]
}
})
基本就是html+css3实现的瀑布流布局。上拉加载还没有写。