小(xiao)程(cheng)序中的(de)輪播圖很簡(jian)單,官(guan)方都有例子的(de),但是唯一的(de)缺陷就是swiper是固定死的(de)150px高度,這樣如(ru)果傳入的(de)圖片大于(yu)這個高度就會被隱藏(zang)。辣(la)么,怎樣讓圖片自適應不同分辨率捏(nie)。
我的思(si)路是:獲(huo)取屏(ping)幕寬度(du)(du),獲(huo)取圖片(pian)的寬高,然后(hou)等比設置(zhi)當前屏(ping)幕寬度(du)(du)下swiper的高度(du)(du)。
1.wxml
<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的(de)各個(ge)屬性在官方文檔中都有,這(zhe)里(li)就(jiu)不說明了。最(zui)主(zhu)要的(de)是: style='height:{{Hei}}' //動態設置swiper的(de)高度
2.js代碼(ma):
data: {
imgUrls: [
'../../public/img/goodsDetail/goods.png',
'../../public/img/goodsDetail/goods.png',
'../../public/img/goodsDetail/goods.png'
],
indicatorDots: true,
autoplay: true,
interval: 5000,
duration: 1300,
bg: '#C79C77',
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 //設置高度
})
},
|