我們都知道微信小程式的組件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 }) } })View Code
最后,我們就可以可以通過images[index].width 和 images[index].height給每一個圖片設定寬高了,
效果如下圖所示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/169944.html
標籤:JavaScript
下一篇:現代WEB前端的性能優化
