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

咱們都知道微信小程序的組件image是用來顯示圖片的,它有一下幾個屬性:
一、src              圖片資源地址
二、mode          圖片裁剪、縮放的模式
三、binderror     當錯誤發生時,發佈到 AppService 的事件名,事件對象event.detail = {errMsg: ‘something wrong’}
四、bindload     當圖片載入完畢時,發佈到 AppService 的事件名,事件對象event.detail = {height:’圖片高度px’, width:’圖片寬度px’}
可是image有默認的固定的寬度和高度,這樣咱們在作圖片自適應的時候,就很差作了,特別是咱們在作一些商品詳情頁的時候,須要image自適應屏幕,按原圖比例顯示。那麼如何讓image自適應比例顯示呢?能夠有兩種方法:html

1、使用mode:widthFix
widthFix:寬度不變,高度自動變化,保持原圖寬高比不變。
首先咱們先設置image的mode爲widthFix,而後給圖片加一個固定rpx的寬度,好比:730rpx。
這樣圖片也能夠自適應了。。由於小程序的rpx自己就是一個自適應顯示的單位
2、使用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自適應方法的簡單記錄。。函數

效果以下圖所示:this

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

相關文章
相關標籤/搜索