小程序中的輪播圖很簡(jiǎn)單,官方都有例子的,但是唯一的缺陷就是swiper是固定死的150px高度,這樣如果傳入的圖片大于這個(gè)高度就會(huì)被隱藏。辣么,怎樣讓圖片自適應(yīng)不同分辨率捏。
我的思路是:獲取屏幕寬度,獲取圖片的寬高,然后等比設(shè)置當(dāng)前屏幕寬度下swiper的高度。
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”這個(gè)屬性哦,還有就是設(shè)置這個(gè)image 100%寬度喲 </swiper-item> </block> </swiper> |
swiper的各個(gè)屬性在官方文檔中都有,這里就不說(shuō)明了。最主要的是: style='height:{{Hei}}' //動(dòng)態(tài)設(shè)置swiper的高度
2.js代碼:
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要?jiǎng)討B(tài)設(shè)置的高度屬性 }, imgH:function(e){ var winWid = wx.getSystemInfoSync().windowWidth; //獲取當(dāng)前屏幕的寬度 var imgh=e.detail.height; //圖片高度 var imgw=e.detail.width; var swiperH=winWid*imgh/imgw + "px" //等比設(shè)置swiper的高度。 即 屏幕寬度 / swiper高度 = 圖片寬度 / 圖片高度 ==》swiper高度 = 屏幕寬度 * 圖片高度 / 圖片寬度 this.setData({ Hei:swiperH //設(shè)置高度 }) }, |
工作日 8:30-12:00 14:30-18:00
周六及部分節(jié)假日提供值班服務(wù)