由于想做成瀑布流,故一开始使用如下的方式:

.waterfall-container {column-count: 2;column-gap: 30rpx;
}

但是,由于这种  column-count:2   ,是由上往下排的,所以再加载新的一页的时候,原来在页首的会被顶到底部,导致整个逻辑是错误的。

故,需要修改一下页面的实现思路

1. 在页首加入预加载的图片的不显示的块,加载图片时,会触发事件,

2. 在事件处理 function 中,进行图片的分发,根据当前的两列的实际高度,分发到两列中。

具体实现:

在页首加上 display: none 的块,用于预加载图片。

<view style="display:none"><image wx:for="{{prefetch_products.rows}}" data-id="{{item.id}}" data-image-src="{{item.cover}}" wx:for-item="item" src="{{item.cover}}"bindload="onImageLoad"></image>
</view>

JS:

onImageLoad: function (e) {var oriHeight = e.detail.height,oriWidth = e.detail.width,scale = oriHeight / oriWidth,destWidth = this.data.imageWidthRpx * rpxScale,     // 在不同机型中的具体图片宽度destHeight = scale * destWidth,id = e.currentTarget.dataset.id,src = e.currentTarget.dataset.imageSrc;// 分发到两边var col1 = this.data.col1,col2 = this.data.col2,loadingCount = this.data.loadingCount;// 比较两边的height// 哪个矮分发到哪个if (col1.height <= col2.height) {col1.images.push({id: id,src: src});col1.height += (destHeight + 39 * rpxScale); // 补偿 padding 的高度--loadingCount;} else {col2.images.push({id: id,src: src});col2.height += (destHeight + 39 * rpxScale); // 补偿 padding 的高度--loadingCount;}if (!loadingCount) {this.setData({prefetch_products: []});}this.setData({loadingCount: loadingCount,col1: col1,col2: col2});}

转载于:https://www.cnblogs.com/au_ww/p/7149645.html

小程序瀑布流无限加载相关推荐

  1. 利用ajax实现织梦dedecms瀑布流无限加载功能

    该功能主要用到AJAX技术! 一.首先找到并打开/plus/list.php文件,在里面找到如下代码: require_once(dirname(__FILE__)."/../include ...

  2. ajax瀑布流插件,jQuery瀑布流无限加载插件:jquery.falless.js

    慌慌张张,匆匆忙忙,为何生活总是这样? 难道说,我的理想,就是这样度过一生的时光?........... 真的是一年一年飞逝而去,而人的一生,又有几个一年? 第一个四年即将结束,得到了什么?又失去了什 ...

  3. 瀑布流无限加载的原理

    无限加载也叫上拉自动加载.瀑布流.滑动底部加载等,具体指的是页面刚开始不加载全部内容, 先加载首屏或者用户屏幕可见内容,当用户滑动页面到底部后,页面才自动加载更多内容. 通过window.scroll ...

  4. JS——瀑布流无限加载以及动态生成a标签

    如何实现瀑布流排列效果?看下面这张图 通过js去比较每张图片的高度,然后进行排列. 这是一个模拟的瀑布流的list列表项 <div id="main"><div ...

  5. 【微信技术-微信小程序】------- 骨架屏(加载流)配置(skeleton-config)及属性详解 (第三篇)

    本篇文章是骨架屏(skeleton)配置及属性详解(第三篇) 第一篇文章:[微信技术-微信小程序]-------骨架屏(加载流) 简单入门(第一篇) 第二篇文章:[微信技术-微信小程序]------- ...

  6. uview 瀑布流_微信小程序瀑布流最好最简单的解决方案

    网上能搜到的小程序瀑布流解决方案,要么代码复杂.逻辑混乱,要么实现不了业务功能,所以把我在项目中的实现方案给大家分享下. 最简单的实现方案,不适用有分页的场景. 这个方案简单的原因是因为仅仅使用了cs ...

  7. 分享下自己写的一个微信小程序请求远程数据加载到页面的代码

    分享下自己写的一个微信小程序请求远程数据加载到页面的代码 1  思路整理 就是页面加载完毕的时候  请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码  我是改的 onload ...

  8. 微信小程序-首屏视频加载

    项目场景: 微信小程序开发: 实现小程序首页视频预加载功能 1.获取设备的宽和高度 2.小程序video的使用 获取设备的宽和高度 // 获取设备的宽和高度getsize() {let that = ...

  9. 微信小程序开发动感十足的加载动画--都在这里!

    微信小程序开发动感十足的加载动画--都在这里.jpg 1. 概述 我们在学习微信小程序时,应该会遇到载入图片或者动画需要等待的情况,那么这个等待的画面我们应该怎么编写呢?今天我们就分享这样的小教程. ...

最新文章

  1. Qt中文手册 之 QTreeWidgetItem
  2. 参加UI培训后可以找什么工作
  3. sock 文件方式控制宿主机_nginx与php-fpm通信的两种方式
  4. 查看oracle当前消耗,查找Oracle高消耗语句的方法
  5. ubuntu vscode_如何在Ubuntu-18.04下用VSCode编译LibTorch
  6. 分贝dB与放大倍数的转换关系
  7. debian6之eclipse和jdk安装
  8. 计数排序之python 实现源码
  9. 切换器黑屏_景阳华泰科技高清无缝矩阵切换器高端视频会议运用
  10. Matlab clear, clc 和close函数
  11. 清华大学霸榜计算机学科第一!2022 USNews世界大学排名出炉,计算机前50中国占19个...
  12. Android彻底组件化方案实践
  13. 程序猿必须要知道的一个内容:客户端+服务端二(源码解析、建议收藏)
  14. Android客户端和服务器端数据交互的第四种方法
  15. 智能穿戴设备进入主动健康管理赛道
  16. 集合竞价如何买入_教你几招!什么是集合竞价?散户如何参与集合竞价?
  17. 计算机不支持win10 1809更新,Win10 1809更新失败解决方法
  18. Ubuntu 16.10 解决 DNS 解析失败
  19. linux php cpu,理解Linux CPU负载和 CPU使用率
  20. es入门 和 dsl语法部分讲解

热门文章

  1. php服务器无法上传图片,IIS+php服务器无法上传图片解决办法_PHP教程
  2. 鼠标右键转圈圈_win10系统右键一直转圈
  3. 服务器系统内存,服务器系统内存使用情况
  4. SageMaker使用托管容器训练本地网络模型
  5. python中的列表是采用链式结构实现的_Python数据结构与算法之列表(链表,linked list)简单实现...
  6. java intfunction_Java IntFunction類代碼示例
  7. yjv是电缆还是电线_BVV属于电线还是电缆?
  8. HTML边框为零,html – 保证金,填充,边框全部为零后仍有空格?
  9. c语言左移15位,关于c语言中左移右移运算符的问题
  10. VMware Fusion 静态ip