微信小程序动态设置图片大小的方法


Posted in Javascript onNovember 21, 2019

我们都知道微信小程序的组件image是用来显示图片的,它有一下几个属性:

1、src              图片资源地址

2、mode          图片裁剪、缩放的模式

3、binderror     当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: ‘something wrong'}

4、bindload     当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:'图片高度px', width:'图片宽度px'}

但是image有默认的固定的宽度和高度,这样我们在做图片自适应的时候,就不好做了,特别是我们在做一些商品详情页的时候,需要image自适应屏幕,按原图比例显示。那么如何让image自适应比例显示呢?可以有两种方法:

一、使用mode:widthFix

widthFix:宽度不变,高度自动变化,保持原图宽高比不变。

首先我们先设置image的mode为widthFix,然后给图片加一个固定rpx的宽度,比如:730rpx。

这样图片也可以自适应了。。因为小程序的rpx本身就是一个自适应显示的单位

二、使用bindload绑定函数动态自适应。

我们可以给image绑定一个函数,这个函数,如上面的bindload说明一样,我们可以获取到原图的宽度和高度。

然后计算他们的宽高比率。。然后设置一个宽度大小(rpx),最后通过style动态设置image的宽高。代码如下:

html代码:

<image src="{{ item }}" bindload="imageLoad" data-index="{{ index }}" 
style="width:{{ images[index].width }}rpx; height:{{ images[index].height }}rpx;"></image>

js代码:

Page({
 data: {
  images:{}
 },
 imageLoad: function(e) {
   var $width=e.detail.width,  //获取图片真实宽度
     $height=e.detail.height,
     ratio=$width/$height;  //图片的真实宽高比例
   var viewWidth=718,      //设置图片显示宽度,左右留有16rpx边距
     viewHeight=718/ratio;  //计算的高度值
   var image=this.data.images; 
   //将图片的datadata-index作为image对象的key,然后存储图片的宽高值
   image[e.target.dataset.index]={
     width:viewWidth,
     height:viewHeight
   }
   this.setData({
      images:image
   })
 }
})

最后,我们就可以可以通过images[index].width images[index].height给每一个图片设置宽高了。

效果如下图所示:

微信小程序动态设置图片大小的方法

总结

以上所述是小编给大家介绍的微信小程序动态设置图片大小的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
jquery实现图片滚动效果的简单实例
Nov 23 Javascript
JS弹出层单纯的绝对定位居中示例代码
Feb 18 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
Mar 04 Javascript
JavaScript如何实现在文本框(密码框)输入提示语
Dec 25 Javascript
jquery ajax局部加载方法详解(实现代码)
May 12 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
Dec 18 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
Mar 15 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
js中值引用和地址引用实例分析
Jun 21 Javascript
angular共享依赖的解决方案分享
Oct 15 Javascript
通过原生vue添加滚动加载更多功能
Nov 21 #Javascript
小程序api实现promise封装过程解析
Nov 21 #Javascript
如何基于原生javaScript生成带图片的二维码
Nov 21 #Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 #Javascript
vue element 中的table动态渲染实现(动态表头)
Nov 21 #Javascript
浅谈Vue SSR中的Bundle的具有使用
Nov 21 #Javascript
webpack常用构建优化策略小结
Nov 21 #Javascript
You might like
PHP和XSS跨站攻击的防范
2007/04/17 PHP
PHP面向对象分析设计的61条军规小结
2010/07/17 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
Laravel框架控制器的middleware中间件用法分析
2019/09/30 PHP
JS window.opener返回父页面的应用
2009/10/24 Javascript
关于COOKIE个数与大小的问题
2011/01/17 Javascript
浏览器页面区域大小的js获取方法
2013/09/21 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
详解webpack性能优化——DLL
2017/10/20 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
vue使用laydate时间插件的方法
2018/11/14 Javascript
个人小程序接入支付解决方案
2019/05/23 Javascript
layer.open弹层查看缩略图的原图,自适应大小的实例
2019/09/05 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
python 判断参数为Nonetype类型或空的实例
2018/10/30 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
Python selenium页面加载慢超时的解决方案
2020/03/18 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
python3 循环读取excel文件并写入json操作
2020/07/14 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
css3实现垂直下拉动画菜单示例
2014/04/22 HTML / CSS
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
求职信内容怎么写
2014/05/26 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
毕业设计致谢词
2015/05/14 职场文书
2015年人民调解工作总结
2015/05/18 职场文书
大学生十八大感想
2015/08/11 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS