微信小程序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 相关文章推荐
jqeury eval将字符串转换json的方法
Jan 20 Javascript
Javascript实现动态菜单添加的实例代码
Jul 05 Javascript
jquery对象和DOM对象的区别介绍
Aug 09 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
Feb 19 Javascript
原生JavaScript+LESS实现瀑布流
Dec 12 Javascript
微信中一些常用的js方法汇总
Mar 12 Javascript
javascript顺序加载图片的方法
Jul 18 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
Oct 31 Javascript
基于JS实现带动画效果的流程进度条
Jun 01 Javascript
利用不到200行代码写一款属于你自己的js类库
Jul 08 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/12/30 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
PHP统计数值数组中出现频率最多的10个数字的方法
2015/04/20 PHP
PNG背景在不同浏览器下的应用
2009/06/22 Javascript
Js中获取frames中的元素示例代码
2013/07/30 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
jquery实现弹出层登录和全屏层注册特效
2015/08/28 Javascript
学习JavaScript设计模式(单例模式)
2015/11/26 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
jQuery鼠标移动图片上实现放大效果
2017/06/25 jQuery
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
layer弹出层取消遮罩的方法
2019/09/25 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python使用多进程的实例详解
2018/09/19 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python 代码运行时间获取方式详解
2020/09/18 Python
利用HTML5 Canvas制作键盘及鼠标动画的实例分享
2016/03/15 HTML / CSS
Melijoe时尚童装德国官网:Melijoe德国
2016/09/03 全球购物
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
英国袜子店:Sock Shop
2017/01/11 全球购物
瑞典手机壳品牌:Richmond & Finch
2018/04/28 全球购物
武汉英思工程科技有限公司&ndash;ORACLE面试测试题目
2012/04/30 面试题
拉歌口号大全
2014/06/13 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
人事行政助理岗位职责
2015/04/11 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Python基本数据类型之字符串str
2021/07/21 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP