小順序中的輪播圖很簡單,官方都有例子的,然則唯一的缺點就是swiper是固定死的150px高度,如許假如傳入的圖片大於這個高度就會被隱蔽。辣么,如何讓圖片自適應差別分辨率捏。
我的思緒是:獵取屏幕寬度,獵取圖片的寬高,然後等比設置當前屏幕寬度下swiper的高度。
1.構造
<swiper indicator-dots="{{indicatorDots}}" autoplay="{{autoplay}}" interval="{{interval}}" duration="{{duration}}" indicator-active-color="{{bg}}" style='height:{{Height}}'>
<block wx:for="{{imgUrls}}">
<swiper-item>
<image src="{{item}}" class="slide-image" mode="widthFix" bindload='imgHeight'/> //bindload是綁定圖片加載的事宜,記得給image加上mode=“widthFix”這個屬性哦,另有就是設置這個image 100%寬度喲
</swiper-item>
</block>
</swiper>
swiper的各個屬性在官方文檔中都有,這裏就不說清楚明了。最主要的是: style=’height:{{Height}}’ //動態設置swiper的高度
2.在page內里:
data: {
imgUrls: [
'../img/goodsDetail/goods.png',
'../img/goodsDetail/goods.png',
'../img/goodsDetail/goods.png'
],
indicatorDots: true,
autoplay: true,
interval: 5000,
duration: 1300,
bg: '#C79C77',
Height:"" //這是swiper要動態設置的高度屬性
},
imgHeight: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({
Height:swiperH//設置高度
})
},
總結:獵取當前屏幕寬度: wx.getSystemInfoSync().windowWidth
在小順序里動態設置屬性,只要經由過程setData({ })來設置,和js中直接操縱css款式有一點相似
注重:image假如外層有個容器裝,然後image設置width為100%以後,間隔裝它的容器底部有一點間隔,那是由於image是默認設置的display:inline-block屬性,這個屬性會發生間隙。假如要撐滿容器,設置為display:block就能夠了。