微信小程序实现图片懒加载的示例代码


Posted in Javascript onDecember 13, 2017

本文主要介绍微信小程序的模拟图片懒加载,实现的原理是通过页面预加载图片(默认图),加载完成后再显示出来原图,而非真正意义上的懒加载(跟web的懒加载还有很大的差距),只是借此提高用户体验度。

多图片懒加载

1.xml页面

<block wx:for="{{list}}" wx:key="">
  <image class='relative width-100 mgb-20 fade_in' src='{{item.cover_url}}' mode='widthFix' style='display:none' bindload="_imgOnLoad" id='{{item.cover_url}}'></image>
   <view class='tag-bg {{item.checked?"tag-bg1":""}}'></view>
   <view class='tag-text fz-30 fwb'>{{item.type_name}}</view>
   <image class='relative width-100 mgb-20 fade_in {{item.loaded?"":"loading-img"}}' src='{{item.loaded?item.cover_url:item.url}}' mode='widthFix'></image>
 </block>

2.js页面

//ajax请求数据
onLoad: function () {
  var that = this
  var page = that.data.page
  wx.request({
   url: request_url,
   data: {
    'signature': signature,
    'page':1,
    'pageSize': 2
   },
   success: function (res) {
    let list = res.data.content
    for (var i = 0; i < list.length; i++) {
     list[i].url = "../../img/771.gif" //用json的格式创建url,作为加载过度图片
    }
    that.setData({
     list: list,
    })
   }
  })
 },

//监听图片加载页面
 _imgOnLoad: function (e) {
  // console.log(e)
  var loadedUrl = e.target.id
  let that = this
  let list = that.data.list
  for (var i = 0; i < list.length; i++) {
   if (list[i].cover_url == loadedUrl) {
    list[i].loaded = true
   }
   that.setData({
    list
   })
  }
 }

tips:上述数据加载的代码为get的方式,需要数据加密的则选择post的方式,有需要的可以留言。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery Ajax请求代码(2)
Jan 07 Javascript
JavaScript 图像动画的小demo
May 23 Javascript
JavaScipt中栈的实现方法
Feb 17 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
运用js教你轻松制作html音乐播放器
Apr 17 Javascript
详解JS中的快速排序与冒泡
Jan 10 Javascript
纯js实现的积木(div层)拖动功能示例
Jul 19 Javascript
axios拦截设置和错误处理方法
Mar 05 Javascript
讲解vue-router之什么是编程式路由
May 28 Javascript
node.js环境搭建图文详解
Sep 19 Javascript
详解微信小程序之一键复制到剪切板
Apr 24 Javascript
详解如何在JS代码中消灭for循环
Dec 11 Javascript
详解vue-cli 接口代理配置
Dec 13 #Javascript
vue项目总结之文件夹结构配置详解
Dec 13 #Javascript
vue.js简单配置axios的方法详解
Dec 13 #Javascript
关于Vue单页面骨架屏实践记录
Dec 13 #Javascript
JS实现利用两个队列表示一个栈的方法
Dec 13 #Javascript
node vue项目开发之前后端分离实战记录
Dec 13 #Javascript
详解vue-cli快速构建vue应用并实现webpack打包
Dec 13 #Javascript
You might like
php中替换字符串中的空格为逗号','的方法
2014/06/09 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
PHP7 新增常量
2021/03/09 PHP
JavaScript作用域链使用介绍
2013/08/29 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
JavaScript操作XML文件之XML读取方法
2015/06/09 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
JS按钮闪烁功能的实现代码
2017/07/21 Javascript
最基础的vue.js双向绑定操作
2017/08/23 Javascript
JavaScript实现三级级联特效
2017/11/05 Javascript
结合mint-ui移动端下拉加载实践方法总结
2017/11/08 Javascript
详解node Async/Await 更好的异步编程解决方案
2018/05/10 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
微信小程序实现授权登录
2019/05/15 Javascript
简单了解JavaScript中的执行上下文和堆栈
2019/06/24 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
HTML+JS实现“代码雨”效果源码(黑客帝国文字下落效果)
2020/03/17 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
2018/04/20 Python
Python利用heapq实现一个优先级队列的方法
2019/02/03 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
Canvas制作旋转的太极的示例
2018/03/09 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
先进党支部事迹材料
2014/01/13 职场文书
怎样写好创业计划书的内容
2014/02/06 职场文书
工作期间打牌检讨书范文
2014/11/20 职场文书
新兵入伍决心书
2015/09/22 职场文书
oracle DGMGRL ORA-16603报错的解决方法(DG Broker)
2021/04/06 Oracle
MySQL5.7并行复制原理及实现
2021/06/03 MySQL