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


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的可以控制左右滚动及自动滚动效果的代码
Jul 25 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
js实现网站首页图片滚动显示
Feb 04 Javascript
Jquery 实现checkbox全选方法
Jan 28 Javascript
js实现头像图片切割缩放及无刷新上传图片的方法
Jul 17 Javascript
为何JS操作的href都是javascript:void(0);呢
Nov 12 Javascript
Vue响应式添加、修改数组和对象的值
Mar 20 Javascript
利用NPM淘宝的node.js镜像加速nvm
Mar 27 Javascript
详解vue2 $watch要注意的问题
Sep 08 Javascript
React-Native左右联动List的示例代码
Sep 21 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
微信小程序实现滚动加载更多的代码
Dec 06 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
怎样在UNIX系统下安装php3
2006/10/09 PHP
PHP 解决utf-8和gb2312编码转换问题
2010/03/18 PHP
PHP将DateTime对象转化为友好时间显示的实现代码
2011/09/20 PHP
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
php简单计算页面加载时间的方法
2015/06/19 PHP
thinkphp5引入公共部分header、footer的方法详解
2018/09/14 PHP
详解CSS样式中的 !important * _ 符号
2021/03/09 HTML / CSS
基于Jquery与WebMethod投票功能实现代码
2011/01/19 Javascript
模拟用户点击弹出新页面不会被浏览器拦截
2014/04/08 Javascript
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
JQuery中使用on方法绑定hover事件实例
2014/12/09 Javascript
Python脚本后台运行的几种方式
2015/03/09 Javascript
JavaScript中的Math.sin()方法使用详解
2015/06/15 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
nvm、nrm、npm 安装和使用详解(小结)
2019/01/17 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
实现python版本的按任意键继续/退出
2016/09/26 Python
Python字符串格式化%s%d%f详解
2018/02/02 Python
在pycharm中关掉ipython console/PyDev操作
2020/06/09 Python
Canvas 文本填充线性渐变的使用详解
2020/06/22 HTML / CSS
轻松制作精彩视频:Animoto
2018/09/19 全球购物
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
同事吵架检讨书
2014/02/05 职场文书
英文升职感谢信
2015/01/23 职场文书
创新创业项目计划书该怎样写?
2019/08/13 职场文书
导游词之宁夏贺兰山岩画
2019/11/08 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
MySQL update set 和 and的区别
2021/05/08 MySQL
使用python向MongoDB插入时间字段的操作
2021/05/18 Python
python中opencv实现图片文本倾斜校正
2021/06/11 Python
MySQL 使用索引扫描进行排序
2021/06/20 MySQL
讲解Python实例练习逆序输出字符串
2022/05/06 Python
Go 内联优化让程序员爱不释手
2022/06/21 Golang