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


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 相关文章推荐
js返回上一页并刷新代码整理
Dec 21 Javascript
jQuery中each()方法用法实例
Dec 27 Javascript
JavaScript简单修改窗口大小的方法
Aug 03 Javascript
JavaScript实现将数组数据添加到Select下拉框的方法
Aug 21 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
Jun 20 Javascript
ionic 3.0+ 项目搭建运行环境的教程
Aug 09 Javascript
微信小程序录音与播放录音功能
Dec 25 Javascript
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
微信小程序云开发如何使用云函数生成二维码
May 18 Javascript
vue+vant实现购物车全选和反选功能
Nov 17 Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
vue图片裁剪插件vue-cropper使用方法详解
Dec 16 Vue.js
通过原生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更新修改excel中的内容实例代码
2014/02/26 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
2015/03/10 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
2019/04/05 PHP
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
AngularJS数据源的多种获取方式汇总
2016/02/02 Javascript
Javascript基础知识盲点总结之函数
2016/05/15 Javascript
jQuery使用正则表达式限制文本框只能输入数字
2016/06/18 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
vue给对象动态添加属性和值的实例
2019/09/09 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
2019/11/07 jQuery
Python实现从URL地址提取文件名的方法
2015/05/15 Python
Python中方法链的使用方法
2016/02/23 Python
人机交互程序 python实现人机对话
2017/11/14 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
2020/12/17 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
澳大利亚电子产品购物网站:Dick Smith
2017/02/02 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
几道Java和数据库的面试题
2013/05/30 面试题
五一家具促销方案
2014/01/10 职场文书
面试后感谢信怎么写
2014/02/01 职场文书
幼儿园小班家长寄语
2014/04/02 职场文书
新闻发布会策划方案
2014/06/12 职场文书
2014学校领导四风问题对照检查材料思想汇报
2014/09/22 职场文书
谢师宴答谢词
2015/01/05 职场文书
特此通知格式
2015/04/27 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书
VMware虚拟机安装 Windows Server 2022的详细图文教程
2022/09/23 Servers