您好,登錄后才能下訂單哦!
小編給大家分享一下微信小程序中選項卡的實現方法,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
之前寫過基于swiper的選項卡,在小程序中有swiper組件,毫無疑問這里要用到swiper組件
小程序中的swiper組件有個問題就是不能根據內容自適應高度,所以要通過wx.getSystemInfoSync獲取設備高度設置swiper高度
小程序中的swiper組件中swiper-item內容超出可視區后無法滾動顯示,所以這里要用到另一個組件scroll-view。
小程序中的swiper組件功能還是比較有限的,有待優化。
data: { tabs: ['菜單一', '菜單二'],// 導航菜單欄 curIdx:0,// 當前導航索引 scrollHeight:0, //滾動高度 = 設備可視區高度 - 導航欄高度 list:[],// 內容區列表 },
在onLoad函數中填充數據
/** * 生命周期函數--監聽頁面加載 */ onLoad: function (options) { let list=[]; for (let i=1;i<=30;i++){ list.push(i) } this.setData({ list: list }); },
<!-- 導航欄開始 --> <view class="swiper-tab"> <view wx:for="{{tabs}}" wx:key class="swiper-tab-item {{curIdx==index?'swiper-active':''}}" data-current="{{index}}" catchtap="clickTab"> <text>{{item}}</text> </view> </view>
/*初始化樣式*/ view, text, picker, input, button, image{ display: flex; box-sizing: border-box; } /* 導航樣式*/ .swiper-tab { position: relative; width: 100%; height: 100rpx; justify-content: center; align-items: center; } .swiper-tab-item { background-color: #f3f3f3; width: 50%; height: 80rpx; justify-content: center; align-items: center; } .swiper-active{ background-color: rgb(129, 190, 247); color: #fff; }
內容顯示區使用swiper組件,swiper-item個數要與tabs數組長度 一致
<!-- 內容開始 --> <swiper class="swiper_content" current="{{curIdx}}" bindchange="swiperTab" style='height:{{scrollHeight}}px'> <swiper-item> <scroll-view class="scroll-y" scroll-y style='height:{{scrollHeight}}px' bindscrolltolower="onReachBottom"> <view wx:for="{{list}}" wx:key> <text> 內容一{{item}}</text> </view> </scroll-view> </swiper-item> <swiper-item> 內容二 </swiper-item> </swiper>
小程序中的swiper組件有個問題就是不能根據內容自適應高度,所以要通過[wx.getSystemInfoSync][4]獲取設備高度設置swiper高度
小程序中的swiper組件中swiper-item內容超出可視區后無法滾動顯示,所以這里要用到另一個組件[scroll-view][5]。
我們在onShow函數中通過getSystemInfoSync獲取設備的寬高來設置swiper組件高度以及scroll-view高度
onShow: function () { // 100為導航欄swiper-tab 的高度 this.setData({ scrollHeight: wx.getSystemInfoSync().windowHeight - (wx.getSystemInfoSync().windowWidth / 750 * 100), }) },
//點擊切換 clickTab: function (e) { this.setData({ curIdx: e.currentTarget.dataset.current }) },
//滑動切換 swiperTab: function (e) { this.setData({ curIdx: e.detail.current }); },
/** * 頁面上拉觸底事件的處理函數 */ onReachBottom: function () { // 更新列表 let list = this.data.list; console.log(list) let lens = list.length for (let i = lens; i < lens+30; i++) { list.push(i) } this.setData({ list: list }); },
看完了這篇文章,相信你對“微信小程序中選項卡的實現方法”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。