html瀑布流

1 篇文章 0 订阅

 flex

<template>
	<view class="waterfall_left">
		<view class="waterfall_list" v-for="(item,index) in goodsLeftList" :key="index" >
		<view class=" waterfall_list_img">
			<image :src="item.goods_main_pic" mode="widthFix" @load="considerPush"></image>
		</view>
		<view class="msg-box">
			<view class="name single-omit">{{item.goods_name}}</view>
			<view class="price-box flex-align-center">
				<view class="unit"><text>¥</text>{{item.goods_sku.sku_sale_price}}</view>
			</view>
		</view>
	</view>
	</view>
	<view class="waterfall_right">
		<view class="waterfall_list" v-for="(item,index) in goodsRightList" :key="index">
			<view class="waterfall_list_img">
				<image :src="item.goods_main_pic" mode="widthFix" @load="considerPush"></image>
			</view>
			<view class="msg-box">
				<view class="name single-omit">{{item.goods_name}}</view>
				<view class="price-box flex-align-center">
					<view class="unit"><text>¥</text>{{item.goods_sku.sku_sale_price}}</view>
				</view>
			</view>
		</view>
	</view>
</template>
<script>
	export default {
		props: {
			list: { type: Array, required: true },
		},
		data() {
			return {
				// 左侧商品列表
				goodsLeftList: [],
				// 右侧商品列表
				goodsRightList: [],
				// 组件数据备份
				newList: [],
			}
		},
		created() {
			this.touchOff(); // 触发排列
		},
		mounted() {},
		watch: {
			list(newValue, oldValue) {
				this.touchOff()
			},
		},
		computed: {},
		methods: {
			// 触发重新排列
			touchOff() {
				this.newList = [...this.list];
				this.goodsLeftList = [];
				this.goodsRightList = [];
				if (this.newList.length != 0) {
					this.goodsLeftList.push(this.newList.shift()); //触发排列
				}

			},
			// 计算排列
			considerPush() {
				if (this.newList.length == 0) return; //没有数据了
				let leftH = 0,
					rightH = 0; //左右高度
				var query = uni.createSelectorQuery().in(this);
				query.selectAll('.waterfall_left').boundingClientRect()
				query.selectAll('.waterfall_right').boundingClientRect()
				query.exec(res => {
					leftH = res[0].length != 0 ? res[0][0].height : 0; //防止查询不到做个处理
					rightH = res[1].length != 0 ? res[1][0].height : 0;
					if (leftH == rightH || leftH < rightH) {
						// 相等 || 左边小  
						this.goodsLeftList.push(this.newList.shift());
					} else {
						// 右边小
						this.goodsRightList.push(this.newList.shift());
					}
				});
			},
		}
	}
</script>

grid


<template>
  <div class="box">
    <div class="item">
      <img  src="/src/assets/image/cktx_01.jpg" alt="1" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_02.jpg" alt="2" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_03.jpg" alt="3" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_04.jpg" alt="1" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_05.jpg" alt="2" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_06.jpg" alt="3" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_07.jpg" alt="1" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_08.jpg" alt="2" />
    </div>
    <div class="item">
      <img  src="/src/assets/image/cktx_09.jpg" alt="3" />
    </div>
  </div>
</template>
<style scoped lang="scss">  
.box {
  margin: 10px;
  column-count: 3;
  column-gap: 10px;
}
.item {
  margin-bottom: 10px;
}
.item img{
  width: 100%;
  height:100%;
}

</style>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呱嗨喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值