小程序中的輪播圖很簡單,官方都有例子的,但是唯一的缺陷就是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就可以了。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。
新聞熱點
疑難解答