微信小程序之swiper輪播圖中的圖片自適應高度

小程序中的輪播圖很簡單,官方都有例子的,可是惟一的缺陷就是swiper是固定死的150px高度,這樣若是傳入的圖片大於這個高度就會被隱藏。辣麼,怎樣讓圖片自適應不一樣分辨率捏。css

個人思路是:獲取屏幕寬度,獲取圖片的寬高,而後等比設置當前屏幕寬度下swiper的高度。小程序

1.結構ide

<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的高度 this

2.在page裏面:spa

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        //設置高度
    })
},

在未設置高度前:code

動態設置高度以後:blog

總結:獲取當前屏幕寬度: wx.getSystemInfoSync().windowWidth 事件

    在小程序裏動態設置屬性,只有經過setData({ })來設置,和js中直接操做css樣式有一點相似圖片

 

注意:image若是外層有個容器裝,而後image設置width爲100%以後,距離裝它的容器底部有一點距離,那是由於image是默認設置的display:inline-block屬性,這個屬性會產生間隙。若是要撐滿容器,設置爲display:block就能夠了。ip

 例如:

<view class='img'>
    <image src='../../public/img/order/order-img.png' mode='widthFix'/>
</view>

image設置width100%以後:

設置display:block以後:

就沒問題了

相關文章
相關標籤/搜索