zoukankan      html  css  js  c++  java
  • 微信小程序动态设置图片大小

    我们都知道微信小程序的组件image是用来显示图片的,它有一下几个属性:

    1、src              图片资源地址
    2、mode          图片裁剪、缩放的模式
    3、binderror     当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: ‘something wrong’}
    4、bindload     当图片载入完毕时,发布到 AppService 的事件名,事件对象event.detail = {height:’图片高度px’, ’图片宽度px’}

    但是image有默认的固定的宽度和高度,这样我们在做图片自适应的时候,就不好做了,特别是我们在做一些商品详情页的时候,需要image自适应屏幕,按原图比例显示。那么如何让image自适应比例显示呢?可以有两种方法:

    一、使用mode:widthFix

    widthFix:宽度不变,高度自动变化,保持原图宽高比不变。
    首先我们先设置image的mode为widthFix,然后给图片加一个固定rpx的宽度,比如:730rpx。
    这样图片也可以自适应了。。因为小程序的rpx本身就是一个自适应显示的单位

    二、使用bindload绑定函数动态自适应。

    我们可以给image绑定一个函数,这个函数,如上面的bindload说明一样,我们可以获取到原图的宽度和高度。
    然后计算他们的宽高比率。。然后设置一个宽度大小(rpx),最后通过style动态设置image的宽高。代码如下:

    广州设计公司https://www.houdianzi.com 我的007办公资源网站https://www.wode007.com

    html代码:

    <image src="{{ item }}" bindload="imageLoad" data-index="{{ index }}" 
    style="{{ 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]={
             viewWidth,
             height:viewHeight
          }
          this.setData({
               images:image
          })
      }
    })

    最后,我们就可以可以通过images[index].width 和 images[index].height给每一个图片设置宽高了。

  • 相关阅读:
    HttpWebRequest 改为 HttpClient 踩坑记-请求头设置
    [k8s]docker calico网络&docker cluster-store
    [k8s]jenkins部署在k8s集群
    [k8s]zookeeper集群在k8s的搭建(statefulset模式)-pod的调度
    [svc]cisco ipsec使用证书认证
    [svc]数字证书基础知识
    [svc]logstash和filebeat之间ssl加密
    [svc]cfssl模拟https站点-探究浏览器如何校验证书
    [svc] cisco router as ca server
    [svc]对称加密/非对称加密细枝末节-如何做到数据传输的authentication/data integrity/confidentiality(私密)
  • 原文地址:https://www.cnblogs.com/qianxiaox/p/13831013.html
Copyright © 2011-2022 走看看