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


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 相关文章推荐
javascript cookies操作集合
Apr 12 Javascript
js模仿hover的具体实现代码
Dec 30 Javascript
javascript遍历控件实例详细解析
Jan 10 Javascript
JS实现文件动态顺序载入的方法
Mar 07 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
Apr 03 Javascript
Javascript 调用 ActionScript 的简单方法
Sep 22 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
AngularJS入门教程一:路由用法初探
May 27 Javascript
Vue多系统切换实现方案
Jun 05 Javascript
Vue渲染过程浅析
Mar 14 Javascript
JS实现拖拽元素时与另一元素碰撞检测
Aug 27 Javascript
Javascript执行上下文顺序的深入讲解
Nov 04 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
论坛头像随机变换代码
2006/10/09 PHP
php完全过滤HTML,JS,CSS等标签
2009/01/16 PHP
php读取mysql的简单实例
2014/01/15 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js中array的sort()方法使用介绍
2014/02/20 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
JS数据类型STRING使用实例解析
2019/12/18 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
js 闭包深入理解与实例分析
2020/03/19 Javascript
js实现缓动动画
2020/11/25 Javascript
Python实现获取某天是某个月中的第几周
2015/02/11 Python
python实现读取命令行参数的方法
2015/05/22 Python
python中list列表的高级函数
2016/05/17 Python
python+mongodb数据抓取详细介绍
2017/10/25 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Django MEDIA的配置及用法详解
2019/07/25 Python
Python数据存储之 h5py详解
2019/12/26 Python
python实现五子棋游戏(pygame版)
2020/01/19 Python
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
公司股东出资证明书
2014/11/01 职场文书
法制工作总结2015
2015/07/23 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python