微信小程序的图片懒加载

摘要:
在普通的网页中,我们都知道延迟加载图像可以提高浏览器的加载速度。在小程序方面,老板最近让我们看看微信小程序的优化。图片是一个资源匮乏的项目,所以我指的是延迟加载。首先,我们必须在编写代码之前理清思路。我的思想基础是懒惰。首先,我们将数组设置为false,以将图像的高度与屏幕滚动的高度进行比较。当我们到达这一点时,数组中相应的false变为true。

在普通的web页面当中,我们都知道图片懒加载可以提升浏览器的加载速度。原理是图片用空或者占位图片进行显示,当屏幕移动到图片位置的时候,再把图片的地址换成它的地址。那么,在小程序当中呢,最近老大让看一下微信小程序的优化方面,图片是很吃资源的一项,所以我把矛头指向了懒加载:

首先写代码之前一定要理清楚思路,我想的基础是懒加载的思路,首先设立一个数组都为false,让图片的高度和屏幕滚动的高度进行比较,当到达这个点的时候,数组里面对应的false变成true。当数组的false变成true的时候,我们让图片进行显示就可以啦。当然,首先我们需要判断一下首屏能容纳多少个图片,然后把他们显示出来。好,上代码:

.wxml:

<!--pages/test/test.wxml-->
<view>
   <image wx:for="{{imgUrls}}" wx:key="item" src="http://t.zoukankan.com/{{arry[index] ? imgUrls[index].url: './../../img/index.gif'}}" class="{{arry[index] ?'Action':''}}"></image> 
</view>

 .wxss:

 

/* pages/test/test.wxss */

image {
  opacity: 0;
   100%;
  height: 300px;
  transition: opacity 0.4s linear 0.4s;
}

.Action {
  opacity: 1;
}

  .js:

Page({
  data: {
    damoHeight: '150',//demo高度
    imgUrls: [//图片地址
      {
        url: 'http://g.ydbcdn.com/site/imgs/1.png'
      }, {
        url: 'http://g.ydbcdn.com/site/imgs/2.png'
      },
      {
        url: 'http://g.ydbcdn.com/site/imgs/3.png'
      }, {
        url: 'http://g.ydbcdn.com/site/imgs/4.png'
      }
    ],
    arry: [false, false, false, false],

  },
  onPageScroll: function (res) {
    var _this = this;
    var str = parseInt(res.scrollTop / _this.data.damoHeight);
    _this.data.arry[str] = true;
    _this.setData({
      arry: _this.data.arry
    })
  },
  onLoad: function () {
    let _this = this;
    let num = Math.ceil(wx.getSystemInfoSync().windowHeight / 300);
    for (let i = 0; i < num; i++) {
      _this.data.arry[i] = true;
    };
    this.setData({
      arry: _this.data.arry
    })
  }
})

  不会的可以加博主进行一起探究

免责声明:文章转载自《微信小程序的图片懒加载》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用ksar解析sar监控日志全国精确到乡镇的行政边界、路网水系建筑poi等矢量shp免费下载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在docker中安装宝塔

docker安装宝塔 docker rm -f baota76 mkdir -p /home/baota76/bt.cn/backup mkdir -p /home/baota76/bt.cn/server/cron mkdir -p /home/baota76/bt.cn/server/data mkdir -p /home/baota76/bt.cn...

react dva发送请求详解(转)

1,在jsx页面派发任务,可以在componentWillMount的生命周期内,使用this.props.dispatch方法派发,需要先引用connect模块,不引用会报错 import { connect } from 'dva'; 在类中操作: class 类名 extends React.Component { constructor(pro...

Vue数据更新但页面没有更新的多种情况

Vue数据更新但页面没有更新的多种情况 1、Vue 无法检测实例被创建时不存在于 data 中的 变量 原因:由于 Vue 会在初始化实例时对 data中的数据执行 getter/setter 转化,所以 变量必须在 data 对象上存在才能让 Vue 将它转换为响应式的。 例如: new Vue({ data:{}, template: '&l...

jquery ajax请求后台 的简单例子

jQuery.ajax(url,[settings]) 概述 通过 HTTP 请求加载远程数据。 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。 最简单的情况下...

pandas DataFrame.where() 检查一个或多个条件的数据帧,并相应地返回结果

    Python是进行数据分析的一种出色语言,主要是因为以数据为中心的python软件包具有奇妙的生态系统。Pandas是其中的一种,使导入和分析数据更加容易。 where()方法用于检查一个或多个条件的数据帧,并相应地返回结果。默认情况下,不满足条件的行将填充为NaN值。 Syntax:DataFrame.where(cond,other = na...

ES:在线迁移集群索引,数据不丢失

一、背景 生产环境由于某些原因需要跨机房迁移ES集群,或者同机房原有集群中所有节点全部更换,期间ES索引要求完整,客户端请求中断不超过五分钟。 二、应用场景 1、同机房不同集群之间数据迁移; 2、跨机房不同集群之间数据迁移。 三、迁移方案A机房ES集群 --> B机房ES集群 1、迁移任务:假设A机房ES集群(3master、3data共三台物理...