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


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 Mobile 导航栏代码
Nov 01 Javascript
jquery mobile页面跳转后样式丢失js失效的解决方法
Sep 06 Javascript
jQuery.form插件的使用及跨域异步上传文件
Apr 27 Javascript
Javascript 6里的4个新语法
Aug 25 Javascript
jQuery替换节点用法示例(使用replaceWith方法)
Sep 08 Javascript
AngularJS入门教程之表单校验用法示例
Nov 02 Javascript
微信小程序实现获取自己所处位置的经纬度坐标功能示例
Nov 30 Javascript
vue router嵌套路由在history模式下刷新无法渲染页面问题的解决方法
Jan 25 Javascript
小程序点击图片实现自动播放视频
May 29 Javascript
Mint UI组件库CheckList使用及踩坑总结
Dec 20 Javascript
javascript实现移动端触屏拖拽功能
Jul 29 Javascript
一百多行代码实现react拖拽hooks
Mar 23 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
ftp类(myftp.php)
2006/10/09 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
PHP中危险的file_put_contents函数详解
2017/11/04 PHP
PHP实现普通hash分布式算法简单示例
2018/08/06 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
JS取模、取商及取整运算方法示例
2016/10/13 Javascript
详解微信小程序开发之下拉刷新 上拉加载
2016/11/24 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
浅谈express.js框架中间件(middleware)
2019/04/07 Javascript
[00:30]塑造者的传承礼包-戴泽“暗影之焰”套装展示视频
2014/04/04 DOTA
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
详解python调度框架APScheduler使用
2017/03/28 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
2017/06/01 Python
python tensorflow学习之识别单张图片的实现的示例
2018/02/09 Python
在pycharm中python切换解释器失败的解决方法
2018/10/29 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
Django restframework 框架认证、权限、限流用法示例
2019/12/21 Python
python scatter函数用法实例详解
2020/02/11 Python
python操作链表的示例代码
2020/09/27 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
影视艺术学院毕业生自荐信
2013/11/13 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
给老婆大人的检讨书
2014/02/24 职场文书
社区元宵节活动总结
2015/02/06 职场文书
结婚保证书(卖身契)
2015/02/26 职场文书