咱們都知道微信小程序的組件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