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


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 AJAX实现目录浏览与编辑的代码
Oct 21 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
js实现简单鼠标跟随效果的方法
Apr 10 Javascript
谈谈impress.js初步理解
Sep 09 Javascript
jQuery简单操作cookie的插件实例
Jan 13 Javascript
用原生js做单页应用
Jan 17 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
Jan 24 Javascript
前端主流框架vue学习笔记第一篇
Jul 26 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
Aug 30 Javascript
vue组件通信传值操作示例
Jan 08 Javascript
在vue中把含有html标签转为html渲染页面的实例
Oct 28 Javascript
详解vue 中 scoped 样式作用域的规则
Sep 14 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备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
浅析php如何实现爬取数据原理
2018/09/27 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
入门基础学习 ExtJS笔记(一)
2010/11/11 Javascript
事件委托与阻止冒泡阻止其父元素事件触发
2014/09/02 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
javascript 代码是如何被压缩的示例代码
2020/05/06 Javascript
Element Breadcrumb 面包屑的使用方法
2020/07/26 Javascript
[01:51]2014DOTA2国际邀请赛 这个赛场没有失败者VGTi5再见
2014/07/23 DOTA
Python解析树及树的遍历
2016/02/03 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
解读! Python在人工智能中的作用
2017/11/14 Python
简单了解Django模板的使用
2017/12/20 Python
python 从csv读数据到mysql的实例
2018/06/21 Python
python保存文件方法小结
2018/07/27 Python
Python实现的IP端口扫描工具类示例
2019/02/15 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
init进程的作用
2015/08/20 面试题
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
学术会议通知范文
2015/04/15 职场文书
《钢铁是怎样炼成的》高中读后感
2019/08/07 职场文书
Go 在 MongoDB 中常用查询与修改的操作
2021/05/07 Golang
讲解MySQL增删改操作
2022/05/06 MySQL