微信小程序 swiper 輪播圖片顯示不全解決辦法
小程序中的輪播圖很簡單,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,這樣如果傳入的圖片大於這個高度就會被隱藏。那么,怎樣讓圖片自適應不同分辨率捏。
我的思路是:獲取屏幕寬度,獲取圖片的寬高,然后等比設置當前屏幕寬度下swiper的高度。
<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" indicator-active-color="{{bg}}"
style='height:{{Hei}}'> <block wx:for="{{imgUrls}}"> <swiper-item> <image src="{{item}}" class="slide-image" mode="widthFix" bindload='imgH'/>
//bindload是綁定圖片加載的事件,記得給image加上mode=“widthFix”這個屬性哦,還有就是設置這個image 100%寬度喲 </swiper-item> </block> </swiper>
swiper的各個屬性在官方文檔中都有,這里就不說明了。最主要的是: style='height:{{Hei}}' //動態設置swiper的高度
js修改部分
data: { Hei:"" //這是swiper要動態設置的高度屬性 }, imgH:function(e){ var winWid = wx.getSystemInfoSync().windowWidth; //獲取當前屏幕的寬度 var imgh=e.detail.height; //圖片高度 var imgw=e.detail.width; var swiperH=winWid*imgh/imgw + "px" //等比設置swiper的高度。 即 屏幕寬度 / swiper高度 = 圖片寬度 / 圖片高度 ==》swiper高度 = 屏幕寬度 * 圖片高度 / 圖片寬度 this.setData({ Hei:swiperH //設置高度 }) },
改之前輪播效果
改之后輪播圖效果
綜上所述,所改之處只有三點:
1.在 swiper 標簽上加屬性 style='height:{{Hei}}' 動態的通過圖片的高度來決定swiper的高度
2.給輪播圖的圖片加 屬性 mode="widthFix" bindload='imgH'
3.在js文件中:data中加 Hei:""
加方法:
imgH:function(e){ var winWid = wx.getSystemInfoSync().windowWidth; //獲取當前屏幕的寬度 var imgh=e.detail.height; //圖片高度 var imgw=e.detail.width; var swiperH=winWid*imgh/imgw + "px" //等比設置swiper的高度。 即 屏幕寬度 / swiper高度 = 圖片寬度 / 圖片高度 ==》swiper高度 = 屏幕寬度 * 圖片高度 / 圖片寬度 this.setData({ Hei:swiperH //設置高度 }) },
通過以上三步可以是輪播容器顯示完整圖片