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


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 相关文章推荐
几个高效,简洁的字符处理函数
Apr 12 Javascript
利用js实现在浏览器状态栏显示访问者在本页停留的时间
Dec 29 Javascript
Javscript调用iframe框架页面中函数的方法
Nov 01 Javascript
jQuery中animate()方法用法实例
Dec 24 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 Javascript
Javascript 一些需要注意的细节(必看篇)
Jul 08 Javascript
AngularJS实现的简单拖拽功能示例
Jan 02 Javascript
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
微信小程序日期选择器实例代码
Jul 18 Javascript
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 jQuery
JS如何实现动态添加的元素绑定事件
Nov 12 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
php 结果集的分页实现代码
2009/03/10 PHP
PHP使用CURL获取302跳转后的地址实例
2014/05/04 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
什么是PHP文件?如何打开PHP文件?
2017/06/27 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
表单元素事件 (Form Element Events)
2009/07/17 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
js截取中英文字符串、标点符号无乱码示例解读
2014/04/17 Javascript
js中各种类型的变量在if条件中是true还是false
2014/07/16 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
Bootstrap导航条的使用和理解3
2016/12/14 Javascript
Vue.js鼠标悬浮更换图片功能
2017/05/17 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
vue.js模仿京东省市区三级联动的选择组件实例代码
2017/11/22 Javascript
vue项目中锚点定位替代方式
2019/11/13 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
python实现集中式的病毒扫描功能详解
2019/07/09 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
Python Web框架之Django框架Model基础详解
2019/08/16 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
Pycharm自动添加文件头注释和函数注释参数的方法
2020/10/23 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
CSS3中background-clip和background-origin的区别示例介绍
2014/03/10 HTML / CSS
思想汇报范文
2013/11/04 职场文书
食品采购员岗位职责
2014/04/14 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
尼克胡哲观后感
2015/06/08 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
如何用python清洗文件中的数据
2021/06/18 Python