小程序瀑布流布局

2023-11-11

在这里插入图片描述

// list.wxml列表
<import src ="/template/cardList/cardList2.wxml"/>
<block>
  <view id="left">
    <view class="list-index list-index-{{plType}}" wx:for="{{ leftList }}" wx:key="key">
      <navigator url="/pages/Main/pages/details/index?id={{item.id}}" hover-class="none">
          <template data="{{ item }}" is="cardList2"/>
      </navigator>
    </view>
  </view>
  <view id="right">
    <view class="list-index list-index-{{plType}}" wx:for="{{ rightList }}" wx:key="key">
      <navigator url="/pages/Main/pages/details/index?id={{item.id}}" hover-class="none">
          <template data="{{ item }}" is="cardList2"/>
      </navigator>
    </view>
  </view>
</block>





// list.wxss部分样式

#left,#right{
  width: 340rpx;
  float: left;
}
#left{
  margin-right: 24rpx;
  margin-left:24rpx;
}



// list.js

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

Page({
	onLoad(){
		// 本示例实际项目 在列表操作中比较复杂,该环节省去了中间的数据接口
		// 单个列表有倒计时
		/*this.isLeft(this.data.datas,'djs')*/
		
		let resArr = [];
		for(let i in res.data.list){
			resArr.push(res.data.list[i])
		}
		this.isLeft(resArr, '')
	},
	
	async isLeft(goods,dataType) {
	    let list = goods,
	      leftList = this.data.leftList,
	      rightList = this.data.rightList;
	    query = wx.createSelectorQuery().in(this)
	    
	    // 倒计时更新数据列表状态
	    if (dataType == 'djs') {
	      await this.getBoxHeight(leftList, rightList);
	    }
	    else{
	      for (const 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').boundingClientRect();
        query.select('#right').boundingClientRect();
        query.exec((res) => {
          if (res[0] ){
            leftHeight = res[0].height; //获取左边列表的高度
            rightHeight = res[1].height; //获取右边列表的高度
          }
          resolve();
        });
      });
    })
  }
})

//cardList2.wxml组件

<template name="cardList2">  
  <view class="c-box rds _list cardList2">
    <view class="img-box" style="height:345rpx">
        <image class="imgLoad" mode="aspectFill" style="height:345rpx" src="{{ item.firstPic ? item.firstPic : '/images/imgLoad.png' }}" lazy-load="true" alt=""></image>
        <block wx:if="{{item.state!=4}}">
          <!-- 倒计时 -->
          <view wx:if="{{ item.state==4.5}}" class="goodStateTip goodStateTipDJS">
            <p class="fs13 num1 ai">
              <image class="fs12" style="width:28rpx;height:28rpx;margin-right:2rpx;display:inline-block;" src="/images/biao.png" alt="" />
              <i class="ing-end-time fs10">{{ item.time.h }}</i>
              <b>:</b>
              <i class="ing-end-time fs10">{{ item.time.m }}</i>
              <b>:</b>
              <i class="ing-end-time fs10">{{ item.time.s }}</i>
            </p>
          </view>
          <view wx:else class="goodStateTip goodStateTipOther">{{ item.nowState }}</view>
        </block>
    </view>
    
    <view class="text-box">
        <view class="fs14 num2" style="height:80rpx;margin-bottom:20rpx;">{{item.title}}</view>

        <view class="tips clear" 
        style="padding:0;margin-bottom:10rpx;" 
        wx:if="{{ item.rebate && item.state !=5 && item.state != 6 }}">
            <li class="left fan red fs10 hongbao" style="padding:2rpx 10rpx;opacity:{{item.state==5.55 ? '0' : '1' }}"><i class="fs10"></i><span class="n">{{ item.rebate }}</span></li>
        </view>

        <view class="ai" style="padding:6rpx 0;">
            <view class="fs11 old-price hui">原价<i class="fs10"></i><span class="n">{{ item.originalPrice || 0 }}</span></view>
        </view>

        <view class="clear price-box ai">
            <span class="left fs12 red now-price"><i class="fs16 bold"><span class="n">{{ item.sellingPrice || 0 }}</span></i></span>
            <span class="right fs12 volume hui">已售<span>{{ item.salesVolume > 0 ? item.salesVolume : 0 }}</span></span>
        </view>
    </view>
  </view>
</template>  


// cardList2.wxss样式
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小程序瀑布流布局 的相关文章

  • Vue实现Markdown

    前言 本文将介绍如何使用Vue和SpringBoot实现一个Markdown编辑器 其中Vue用于前端 SpringBoot用于后端 实现数据存储和接口调用 项目背景 Markdown是一种轻量级的标记语言 用于简化文本编辑 最初由John

随机推荐

  • 初等数学概论

    author hjjdebug date 2016年 01月 18日 星期一 21 36 50 CST article 初等数学概论 记得高中的哲学书上说的 真理是相对的 没有永恒 绝对的真理 而我们这里讨论的数学 却是永恒绝对的真理 放之
  • Unity中的Debug类调试使用

    UnityEngine Debug Class containing methods to ease debugging while developing a game 该类中包含了一些便于游戏开发时的调试方法 Class Variable
  • The content of element type “configuration“ must match “(properties?,settings?,typeAliases?,typeHand

    注意 每个标签必须按顺序写
  • 有源滤波器治理谐波好在哪

    减小谐波影响应对谐波源本身或在附近采取适当的措施 通常情况下 采用加装滤波器的方式治理谐波 滤波器一般分为无源滤波器和有源滤波器 下面领步 北京 根据多年的实践经验给出一个具体的解决方案 在有谐波问题是 什么样的选择才是最好的 谐波的危害
  • React---使用componentDidUpdate钩子函数判断路由地址是否发生变化

    在组件更新 例如组件的路由更新 后会执行componentDidUpdate钩子函数 componentDidUpdate方法会传入两个参数 prevProps prevState prevProps prevState可以拿到组件更新前的
  • Web3 入门手册:从认知到实践

    如果你也喜欢 Web3 希望在这做些有趣的 有意义的事情 那么我希望这篇文章可以帮助到你 送给想要进入 Web3 或者刚刚进入 Web3 的小伙伴 但是考虑到两点原因 我还是打算把这件事推迟一些时日 一是在各大媒体都鼓吹 All In We
  • 如何将pdf转换成txt?悄悄告诉你3个好用的转换方法

    pdf和txt文档都是我们经常会使用到的文档格式 这两种文档各有各的特点 pdf文档适合用于展示 而txt文档适合用于整理各种文字信息 在面对不同的情况时我们就要使用不同的文档 就比如将纯文字的资料进行搜集的时候 利用txt文档会更方便 而
  • 如何在vue中引入字体

    一 为什么要引入字体 在前端开发中 选用合适的字体往往会极大地提升网站的视觉体验 然而 网页中默认字体的种类和风格有限 且在不同的设备 浏览器上渲染效果不尽相同 因此 很多开发者会选择自定义字体来提升用户体验 二 如何引入字体 1 搜索下载
  • 2020华为杯数学建模总结

    2020研究生数学建模竞赛总结 题目 2020年中国研究生数学建模竞赛B题 降低汽油精制过程中的辛烷值损失模型 一 背景 汽油是小型车辆的主要燃料 汽油燃烧产生的尾气排放对大气环境有重要影响 为此 世界各国都制定了日益严格的汽油质量标准 见
  • linux 套接字文件类型,Linux下的文件类型

    Linux下的文件类型 1 开头 表示普通文件 2 d开头 表示目录文件 3 b开头 表示块设备 4 c开头 表示是字符设备 5 I开头 表示符号链接文件 6 p开头 表示管道文件pipe 7 s开头 表示套接字文件socket root
  • 浅谈BERT/Transformer模型的压缩与优化加速

    作者 姚益武 单位 阿里巴巴集团 研究方向 AI算法与工程架构 前言 BERT Transformer 结构及其变体 已成为自然语言处理 NLP 语音识别 ASR 等领域的主流序列建模结构 并且 相比于卷积操作的局部特征提取能力 以及平移不
  • 【Python】ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any

    一 问题描述 在使用Python的判断语句的时候 data2 data2 Month 11 and data2 Day 11 我的本意是想找出11月11日的数据 运用上面的代码 却得到了报错 报错信息 ValueError The trut
  • [QT编程系列-38]:数据存储 - SQLite数据库存储与操作

    目录 1 SQLite数据库概述 1 1 简介 1 2 SQLite不支持网络连接 1 3 SQLite不需要安装MySQL Server数据库 1 4 SQLite性能 1 5 SQLite支持的数据条目 2 SQLite操作示例 3 Q
  • 找不到插件 ‘org.springframework.boot:spring-boot-maven-plugin:‘问题

    出现pom文件找不到插件 org springframework boot spring boot maven plugin 问题 可能是因为版本没有绑定好 去一级父类依赖找对应的插件版本 在pom文件中加上 把父类的version加到po
  • 1小时学会CSS-下

    今天给大家分享的内容包含CSS 盒子模型 CSS 标准布局 CSS 浮动布局 并以案列进行详细说明 一 CSS 盒子模型 CSS 将所有元素都当成盒子 CSS布局其实就是如何堆放盒子 组成 content 内容 gt padding 内边距
  • 【c语言】小程序游戏——飞机游戏(二)

    在接下来 我们需要对飞机添加一些属性 1 利用键盘控制飞机的移动 2 按空格键可以发射激光 NO 1 利用键盘控制飞机的移动 首先我们需要了解的是 如果想要通过按键来控制飞机的移动 那么我们具体要怎么控制呢
  • Verilog(4)系统任务monitor,time,stop,random等,编译预处理语句

    调试用系统任务和常用编译预处理语句 用于调试和差错的系统任务 以及编写模块时的预处理语句 系统任务 monitor 提供了监控和输出参数列表中表达式或变量值的功能 参数列表中输出控制格式字符串和输出表列的规则和 d i s p l a
  • java基础之replace,replaceAll

    走在乡间的小路上 回首过往 以下代码结果都是显示在Console框中 所以 n会被解析成换行 n只显示 n 所以看到结果换行其实是输出了 n 看到输出 n 其实输出的是 n replace和replaceAll是编程中经常用到的替换函数 成
  • 求出1~N范围中所有的素数

    判断是否为素数 public static boolean isPrime int n int sqrt int Math sqrt n int i for i 2 i lt sqrt i if n i 0 break if i gt sq
  • 小程序瀑布流布局

    list wxml列表