微信小程序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 相关文章推荐
jquery与google map api结合使用 控件,监听器
Mar 04 Javascript
javascript的数组和常用函数详解
May 09 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
JavaScript遍历求解数独问题的主要思路小结
Jun 12 Javascript
js实现html table 行,列锁定的简单实例
Oct 13 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
Apr 17 Javascript
Angular实现svg和png图片下载实现
May 05 Javascript
手把手教您实现react异步加载高阶组件
Apr 07 Javascript
React冒泡和阻止冒泡的应用详解
Aug 18 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
深入解析PHP中foreach语句控制数组循环的用法
2015/11/30 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
jQuery技巧总结
2011/01/01 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
Angular 组件之间的交互的示例代码
2018/03/24 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
对angularjs框架下controller间的传值方法详解
2018/10/08 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
Python简单计算文件夹大小的方法
2015/07/14 Python
Python的Django框架中的Context使用
2015/07/15 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
python实现公司年会抽奖程序
2019/01/22 Python
Python实现的读取文件内容并写入其他文件操作示例
2019/04/09 Python
python实现nao机器人手臂动作控制
2019/04/29 Python
基于python if 判断选择结构的实例详解
2019/05/06 Python
通过python连接Linux命令行代码实例
2020/02/18 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
CSS3新属性transition-property transform box-shadow实例学习
2013/06/06 HTML / CSS
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
伦敦剧院及景点门票:Encore Tickets
2018/07/01 全球购物
会计大学生职业生涯规划书范文
2014/01/13 职场文书
省优秀教师事迹材料
2014/01/30 职场文书
《难忘的泼水节》教学反思
2014/02/27 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
2014年旅游局法制宣传日活动总结
2014/11/01 职场文书
优秀教师事迹材料
2014/12/15 职场文书
2015年销售人员工作总结
2015/04/07 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书
MySQL 中如何归档数据的实现方法
2022/03/16 SQL Server