小程序scroll-view嵌套swiper高度不能完全展示

前兩天寫商品詳情頁功能時(shí),遇到這個(gè)問題,在最上面的swiper輪播圖設(shè)置固定高度,沒有問題,下面遇到圖文詳情,規(guī)格參數(shù)等需要用到swiper時(shí)不能完全展示數(shù)據(jù),只能顯示swiper默認(rèn)高度的數(shù)據(jù),因?yàn)槭莿?dòng)態(tài)加載數(shù)據(jù),所以也不能將高度寫死。于是想到了動(dòng)態(tài)計(jì)算高度的方法。
展示我要做的頁面:

展示.jpg

下面展示代碼:

<scroll-view class="detail" scroll-y bindscroll="onScrollChane" scroll-top="{{topNum}}">
  <!-- 輪播圖 -->
  ...
  <!-- 介紹 -->
  ...
  <!-- 評價(jià) -->
  ...
  <!-- 詳情專區(qū) -->
  <view class="LocationTitle" id="detailImgs" />
  <w-tab-control titles="{{detailTitles}}" bind:tabclick="tabClick" />
  <swiper style="height:{{swiperItemH}}px" current="{{detailTab}}">
    <!-- 商品介紹 -->
    <swiper-item>
      <block wx:for="{{detailImgsList}}" wx:key="index">
        <image class="detailPicter" wx:if='{{item}}' src="{{item}}" bindload="onImageLoad" mode="widthFix" />
      </block>
    </swiper-item>
    <!-- 規(guī)格參數(shù) -->
    <swiper-item>
      <w-spe-param id="w-spe-param" speParam="{{speParam}}" />
    </swiper-item>
    <!-- 商品咨詢 -->
    <swiper-item>
      <w-consult id="w-consult" consultData="{{consultData}}" haveData="{{consultData.length>0?true:false}}" />
    </swiper-item>
  </swiper>
  <!-- 分享按鈕 -->
  ...
  <!-- 頭部標(biāo)題 -->
  ...
</scroll-view>
<!-- 底部按鈕 -->
...

主要計(jì)算高度js代碼

//加載完圖片,將圖片同比例縮放后計(jì)算高度
onImageLoad(e) { //計(jì)算圖文詳情高度
    let winWid = wx.getSystemInfoSync().windowWidth;
    let imgW = e.detail.width;
    let imgH = e.detail.height;
    let swiperHight = winWid * imgH / imgW;
    let oldH = this.data.swiperH;
    this.setData({
      swiperH: oldH + swiperHight,
      swiperItemH: oldH + swiperHight
    })
  },
tabClick(e) { //切換圖文詳情tab事件
    var itemH = 0;
    //創(chuàng)建節(jié)點(diǎn)選擇器,獲取此view的高度
    var query = wx.createSelectorQuery();
    var that = this;
    switch (e.detail.index) {
      case 0://圖文詳情高度
        itemH = that.data.swiperH;
        that.setData({
          swiperItemH: itemH
        })
        break;
      case 1://規(guī)格參數(shù)高度
        query.select('#w-spe-param').boundingClientRect()
        query.exec(function(res) {
          itemH = res[0].height;
          that.setData({
            swiperItemH: itemH
          })
        })
        break;
      case 2://商品咨詢高度
        query.select('#w-consult').boundingClientRect()
        query.exec(function(res) {
          itemH = res[0].height;
          that.setData({
            swiperItemH: itemH
          })
        })
        break;
    }
    this.setData({
      detailTab: e.detail.index
    })
  },

因?yàn)槲乙彩切率謱W(xué)習(xí),可能辦法不是很好,歡迎各路高手指教。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容