真的炸了:让人头痛的小程序之『图片懒加载』终极解决方案

转载:请写明原文链接及作者名 ‘小小小’

小程序真的会取代一切?QQ群:139128168 ← 点击加群

微信小程序中,懒加载特效让人头疼不已,因为小程序完全没法操作dom,所以位置的操作在小程序中,变得极其的难~~

先看特效:

我们将其拆分为如下几个步骤进行讲解~~

1)如何获取图片的位置高度

先看一张图:

通过上图可以知道,图片位置高度其实可以通过img.height + margin值算出。

js代码:

arrHight[i] = Math.floor(i/2)*(img.height + margin-bottom);

为何是Math.floor(i/2)呢,因为同一排两张图片高度一样,比如i=0和i=1,通过Math.floor得出值都为0,所以可以保证同一排的两张图片位置高度是同一个值。

2)替换默认图片

先看效果图片:

wxml代码:

<image src="{{arr[index] ? productArr[index].Image : ‘default.jpg‘}}"></image>
  • 思路很明显,一开始arr[index]中都是false,所以默认都是default图片
  • 但是随着往下移动,有些arr[index]的值变为true,所以替换默认图片

js代码:

for (var i = 0; i < this.data.productArr.length; i++) {
  if (arrHight[i] < scrollTop) {
      if (arr[i] == false) {
          arr[i] = true;
      }
  }
}

思路相当清晰,无需多言~~

3)懒加载中渐显特效

先看效果:

wxss代码:

.product_image{
  opacity: 0;
  width: 100%;
  height: 70%;
  transition: opacity 1s linear 2s;
}
.loaded{
    opacity: 1;
}

其实就是opacity的一个过渡动画而已,so easy~~

源码下载

『咻咻咻咻duang,是不是又忘了关注~~』

时间: 2024-10-10 17:33:10

真的炸了:让人头痛的小程序之『图片懒加载』终极解决方案的相关文章

小程序云开发数据懒加载

一些页面需要的数据可能更多一些,诸如动态页面,新闻页面等.一次加载太多数据对于用户而言是极为不好的体验. db.collection("dynamic").orderBy("createTime", "desc").skip(pages).limit(5).get().then().catch() pages为起点,limit里面的5则为每次调取几条数据.因此可以在 onReachBottom里面进行调用,首先在page()外面let 声明pag

微信小程序中使用ECharts 异步加载数据 实现图表

<!--pages/bar/index.wxml--> <view class="container"> <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas> </view> import * as echarts from '../../ec-canvas

小程序的后台数据 前端加载时页面展示

onLoad: function (options) { // var secondId = options.id; var that = this; wx.request({ url: 'http://gank.io/api/xiandu/categories', method: "get", header: { 'content-type': 'application/json' // 默认值 }, success: function (res) { console.log(res

微信小程序 - (下拉)加载更多数据

注意和后端配合就行了,前端也只能把数据拼接起来! 无论是下拉加载还是加载更多,一样的道理! 注意首次加载传递参数 注意每次加载数据数 wxml <view class='table-rank'> <view class='tables center' wx:for="{{ranklist}}" wx:for-index="idx" wx:key="prototype"> <view class='stage-rank

微信小程序点击图片放大预览

微信小程序点击图片放大预览使用到 wx.previewImage 接口,可以放大.上/下一张 上代码 wxml代码 <view class='content-img' wx:if="{{images}}" > <view wx:for="{{images}}"> <image src="{{item}}" data-src="{{item}}" bindtap="previewImage

小程序图像处理:图片配色分析

背景 小程序的canvas是微信基于原生组件自行封装的,因此接口跟web的canvas有不少区别,早期更是没有支持像素级的处理能力.在18年初的小程序基础库1.9.0版本更新中,出现了wx.canvasGetImageData和wx.canvasPutImageData两个重要的API,补全了像素处理能力,因此,小程序在客户端进行图片处理成为了可能.具体可以参考:偷偷迭代的重磅功能---小程序的像素处理能力wx.canvasGetImageData 图片配色分析小程序:小色卡 为了尝试小程序的图

黑马程序员___OC类的加载和初始化

构造方法 完整的创建一个可用的对象需要两步 1.分配储存空间   +alloc 2.初始化   -init Person *p1 = [Person alloc] Person *p2 = [p1 init] 相当于:Person *p = [Person new] ,但是这个方法虽然可以快速创建一个新的对象,但是不能对新对象进行有选择的初始化 有时候我们想创建的对象都有一个初始值,这个时候就可以重写构造方法 - (id)init { //一定要调用回super的init方法,初始化父类中声明的

解决WP程序 重复打开出现 “正在加载...” 字样 解决方案

在开发winphone程序时候 我们经常遇到调试.在调试的时候 可能会重复打开 debug一下.可是有时候 经常遇到 "正在加载...."字样.而且很慢.效率很低. 测试发现 在 返回 程序的时候 条用一下App.Current.Terminate();  重复打开就没事了.各位 可以推测一下具体为啥这么搞就行... ps:没有这种情况的可忽略 protected virtual void BackKeyPress(CancelEventArgs e) {      App.Curre

mac版微信web开发者工具(小程序开发工具)无法显示二维码 解决方案

微信小程序概念的提出,绝对可以算得上中国IT界惊天动地的一件大事,这可能意味着一场新的开发热潮即将到来, 我也怀着激动的心情准备全身心投入其中,不过截止目前,在官方网站上下载的最新版本都无法使用,打开小程序 开发工具后,只见一块白板赫然映入眼帘,不向你问好,不向你抱怨,它就是在那里静静地待着,就是迟迟看不到 传说中的二维码.系统是最新的macOS Sierra,也装了node.js之类的东西,想了一切可能的原因,网络.环境, Google了若干小时,最终甚至有些想放弃了.之前安装过低版本的破解版