微信小程序image图片加载完成监听


Posted in Javascript onAugust 31, 2019

需求

在应用中显示的图片很多情况不满足业务需求,我们需要动态根据图片的宽高进行缩放或加载中显示的缺省图片,这是我没就需要监听图片加载完成回调,来看看微信小程序怎么实现图片加载完成回调。

实现

1. 绑定回调

通过image标签的bindload属性绑定图片加载完成回调函数,src根据图片加载是否完成绑定是否显示缺省图:

<image src='{{loadComplete?srcImagePath:defaultImagePath}}' bindload="imageLoad"/>

2. 回调监听

在js文件中定一个imageLoad函数,我们就可以通过参数拿到图片加载完成宽高信息:

imgOnLoad(ev) {
  let src = ev.currentTarget.dataset.src,
   width = ev.detail.width,
   height = ev.detail.height
 }

3. 缩放图片

我们写一个工具类,然后调用imageUtil方法对原始图片根据屏幕宽高进行等比例缩放。

function imageUtil(e) {
 var imageSize = {};
 var originalWidth = e.detail.width;//图片原始宽 
 var originalHeight = e.detail.height;//图片原始高 
 var originalScale = originalHeight / originalWidth;//图片高宽比 
 console.log('originalWidth: ' + originalWidth)
 console.log('originalHeight: ' + originalHeight)
 imageSize.imageWidth = originalWidth;
 imageSize.imageHeight = originalHeight;
 //获取屏幕宽高 
 wx.getSystemInfo({
  success: function (res) {
   var windowWidth = res.windowWidth;
   var windowHeight = res.windowHeight;
   var windowscale = windowHeight / windowWidth;//屏幕高宽比 
   if (originalScale < windowscale) {//图片高宽比小于屏幕高宽比 
    //图片缩放后的宽为屏幕宽 
    imageSize.imageWidth = windowWidth;
    imageSize.imageHeight = (windowWidth * originalHeight) / originalWidth;
   } else {//图片高宽比大于屏幕高宽比 
    //图片缩放后的高为屏幕高 
    imageSize.imageHeight = windowHeight;
    imageSize.imageWidth = (windowHeight * originalWidth) / originalHeight;
   }
   imageSize.imageWidth = windowWidth;
   imageSize.imageHeight = windowHeight;
  }
 })
 console.log('缩放后的宽: ' + imageSize.imageWidth)
 console.log('缩放后的高: ' + imageSize.imageHeight)
 return imageSize;
}

4. 修改image宽高

通过imageUtil获取到目标宽高后,this.setData({width:imageUtil(e).width, height:imageUtil(e).height}) 即可以动态修改图片宽高了(e是imageLoad方法中的参数):

<image src='{{loadComplete?srcImagePath:defaultImagePath}}' bindload="imageLoad" style='width:width;height:height'/>

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

Javascript 相关文章推荐
JavaScript游戏之优化篇
Nov 08 Javascript
JQuery与JSon实现的无刷新分页代码
Sep 13 Javascript
JS异常处理的一个想法(sofish)
Mar 14 Javascript
jquery $(this).attr $(this).val方法使用介绍
Oct 08 Javascript
jQuery中DOM树操作之使用反向插入方法实例分析
Jan 23 Javascript
javascript实现2016新年版日历
Jan 25 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
JS实现的简单图片切换功能示例【测试可用】
Feb 14 Javascript
js定时器实现倒计时效果
Nov 05 Javascript
10分钟彻底搞懂Http的强制缓存和协商缓存(小结)
Aug 30 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 Javascript
js实现简单抽奖功能
Nov 24 Javascript
JS实现使用POST方式发送请求
Aug 30 #Javascript
node.js处理前端提交的GET请求
Aug 30 #Javascript
Node.js系列之连接DB的方法(3)
Aug 30 #Javascript
Node.js系列之发起get/post请求(2)
Aug 30 #Javascript
Node.js系列之安装配置与基本使用(1)
Aug 30 #Javascript
微信小程序实现写入读取缓存详解
Aug 30 #Javascript
VUE 自定义组件模板的方法详解
Aug 30 #Javascript
You might like
php中批量修改文件后缀名的函数代码
2011/10/23 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
ECSHOP在PHP5.5及高版本上报错的解决方法
2015/08/31 PHP
PHP Static延迟静态绑定用法分析
2016/03/16 PHP
php版微信公众平台入门教程之开发者认证的方法
2016/09/26 PHP
解决js数据包含加号+通过ajax传到后台时出现连接错误
2013/08/01 Javascript
jquery提取元素里的纯文本不包含span等里的内容
2013/09/30 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
javascript 数组操作详解
2015/01/29 Javascript
JavaScript DOM基础
2015/04/13 Javascript
简单介绍jsonp 使用小结
2016/01/27 Javascript
详谈javascript异步编程
2016/02/21 Javascript
基于js中的原型、继承的一些想法
2016/08/10 Javascript
一个炫酷的Bootstrap导航菜单
2016/12/28 Javascript
node跨域转发 express+http-proxy-middleware的使用
2018/05/31 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
Auto.JS实现抖音刷宝等刷视频app,自动点赞,自动滑屏,自动切换视频功能
2020/05/08 Javascript
JavaScript实现简单日历效果
2020/09/11 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
2款Python内存检测工具介绍和使用方法
2014/06/01 Python
Python 实现的 Google 批量翻译功能
2019/08/26 Python
浅谈Python线程的同步互斥与死锁
2020/03/22 Python
基于Python计算圆周率pi代码实例
2020/03/25 Python
浅谈Python 函数式编程
2020/06/20 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
旅游管理专业学生求职信
2013/09/28 职场文书
业务部门经理岗位职责
2014/02/23 职场文书
股东合作协议书范本
2014/04/14 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
职务任命书范本
2014/06/05 职场文书
社区法制宣传月活动总结
2015/05/07 职场文书
2015重阳节敬老活动总结
2015/07/29 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书