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


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 相关文章推荐
动态加载js的几种方法
Oct 23 Javascript
js时间日期和毫秒的相互转换
Feb 22 Javascript
禁止IE用右键的JS代码
Dec 30 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
Jan 10 Javascript
js/jquery获取文本框输入焦点的方法
Mar 04 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
DEDECMS如何为文章添加HOT NEW标志图片
Aug 14 Javascript
vue一步步实现alert功能
Jul 05 Javascript
浅谈Vue响应式(数组变异方法)
May 07 Javascript
浅谈angular表单提交中ng-submit的默认使用方法
Sep 30 Javascript
vue2.0 实现富文本编辑器功能
May 26 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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
2016/01/19 PHP
使用jQuery简化Ajax开发 Ajax开发入门
2009/10/14 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
jquery等待效果示例
2014/05/01 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
Node.js文件操作方法汇总
2016/03/22 Javascript
BootStrap智能表单实战系列(九)表单图片上传的支持
2016/06/13 Javascript
plupload+artdialog实现多平台上传文件
2016/07/19 Javascript
bootstrap datepicker限定可选时间范围实现方法
2016/09/28 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
巧用canvas
2017/01/21 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
Javascript中弹窗confirm与prompt的区别
2018/10/26 Javascript
html+jQuery实现拖动滑块图片拼图验证码插件【移动端适用】
2019/09/10 jQuery
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
Tesserocr库的正确安装方式
2018/10/19 Python
Python中单线程、多线程和多进程的效率对比实验实例
2019/05/14 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
党的群众路线教育实践活动方案
2014/10/31 职场文书
给客户的检讨书
2014/12/21 职场文书
市级三好学生评语
2014/12/29 职场文书
给医院的感谢信
2015/01/21 职场文书
卫生院义诊活动总结
2015/05/07 职场文书
卖车协议书范文
2016/03/23 职场文书
同学会演讲稿
2019/04/02 职场文书