微信小程序image圖片自適應寬度比例顯示的方法


我們都知道微信小程序的組件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給每一個圖片設置寬高了。
以上是自己在玩小程序時,關於image自適應方法的簡單記錄。。

效果如下圖所示:

原文地址:http://www.qianduan8.com/1005.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM