多种瀑布流实现方法总结

瀑布流实现三种方式和优缺点对比

1.css样式-column方式

  • 图片效果展示:
    在这里插入图片描述
  • 样式
	.content {
	  width: 100%;
	  column-count: 2;
	  column-gap: 20rpx;  
	}
	.content .item{
	  width: 100%;
	  break-inside: avoid;
	}
  • html
	<view class="content">
      <view class="item" style="height:100rpx;">
		1
	  </view>
	  <view class="item" style="height:200rpx;">
		2
	  </view>
	  <view class="item" style="height:300rpx;">
	  	3
	  </view>
	  <view class="item" style="height:200rpx;">
	  	4
	  </view>
	  <view class="item" style="height:500rpx;">
	  	5
	  </view>
	  <view class="item" style="height:400rpx;">
	  	6
	  </view>
	</view>
  • 特点:最简单实现瀑布流的方式,按列的顺序展示,先排左边列再排右边列。
  • 缺点:加载数据后顺序会发生改变,屏幕闪动,影响展示。

2.css样式-flex方式

  • 图片效果展示:
    在这里插入图片描述
  • css样式
.masonry {
    display: flex;
    flex-flow: column wrap;
    align-content: space-between;
    /* Your container needs a fixed height, and it 
   * needs to be taller than your tallest column. */
    
    height: 665px;
    background-color: #f7f7f7;
    border-radius: 3px;
    padding: 20px;
    width: 60%;
    margin: 40px auto;
    counter-reset: items;
}
.item {
    width: 32%;
    position: relative;
    margin-bottom: 2%;
    border-radius: 3px;
    background-color: #a1cbfa;
    border: 1px solid #4290e2;
    box-shadow: 0 2px 2px rgba(0, 90, 250, 0.05), 0 4px 4px rgba(0, 90, 250, 0.05), 0 8px 8px rgba(0, 90, 250, 0.05), 0 16px 16px rgba(0, 90, 250, 0.05);
    color: #fff;
    padding: 15px;
    box-sizing: border-box;
}
.item::before {
    counter-increment: items;
    content: counter(items);
}
/* Re-order items into 3 rows */
.item:nth-child(3n+1) {
    order: 1;
}
.item:nth-child(3n+2) {
    order: 2;
}
.item:nth-child(3n) {
    order: 3;
}
/* Force new columns */
.container::before,
.container::after {
    content: "";
    flex-basis: 100%;
    width: 0;
    order: 2;
}
body {
    font-family: sans-serif;
}
h3 {
    text-align: center;
}
  • html
	<div class="masonry">
	    <div class="item" style="height: 140px"></div>
	    <div class="item" style="height: 190px"></div>
	    <div class="item" style="height: 170px"></div>
	    <div class="item" style="height: 120px"></div>
	    <div class="item" style="height: 160px"></div>
	    <div class="item" style="height: 180px"></div>
	    <div class="item" style="height: 140px"></div>
	    <div class="item" style="height: 150px"></div>
	    <div class="item" style="height: 170px"></div>
	    <div class="item" style="height: 170px"></div>
	</div>
  • 特点:较简单实现瀑布流的方式,按行的顺序展示,左右左右依次排列。
  • 缺点:需要固定高度。

3.js方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值