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


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 相关文章推荐
javascript动态添加表格数据行(ASP后台数据库保存例子)
May 08 Javascript
javascript中比较字符串是否相等的方法
Jul 23 Javascript
jquery 延迟执行实例介绍
Aug 20 Javascript
体验jQuery和AngularJS的不同点及AngularJS的迷人之处
Feb 02 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
jQuery元素属性操作实例(设置、获取及删除元素属性)
Sep 08 Javascript
基于Vue实现拖拽功能
Jul 29 Javascript
让你5分钟掌握9个JavaScript小技巧
Jun 09 Javascript
Vue框架里使用Swiper的方法示例
Sep 20 Javascript
vue开发环境配置跨域的方法步骤
Jan 16 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 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学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php批量上传的实现代码
2013/06/09 PHP
Yii入门教程之Yii安装及hello world
2014/11/25 PHP
php使用Jpgraph绘制饼状图的方法
2015/06/10 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
JavaScript DOM 学习总结(五)
2015/11/24 Javascript
Javascript编程中几种继承方式比较分析
2015/11/28 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
JavaScript的React框架中的JSX语法学习入门教程
2016/03/05 Javascript
jQuery层级选择器实例代码
2017/02/06 Javascript
JavaScript 异步调用
2017/10/25 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
nodejs各种姿势断点调试的方法
2020/06/18 NodeJs
[49:27]2018DOTA2亚洲邀请赛 4.4 淘汰赛 TNC vs VG 第一场
2018/04/05 DOTA
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
python爬虫常用的模块分析
2014/08/29 Python
flask + pymysql操作Mysql数据库的实例
2017/11/13 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
python中time.ctime()实例用法
2021/02/03 Python
Python爬虫UA伪装爬取的实例讲解
2021/02/19 Python
python利用xpath爬取网上数据并存储到django模型中
2021/02/26 Python
HTML5新表单元素_动力节点Java学院整理
2017/07/12 HTML / CSS
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
查摆问题自查报告范文
2014/10/13 职场文书
2014年体育工作总结
2014/11/24 职场文书
志愿者服务活动总结报告
2015/05/06 职场文书
详解Java实现设计模式之责任链模式
2021/06/23 Java/Android
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS