微信小程序滾動tab的實現
1.目的:為了解決滾動版本的tab,以及實現虹吸效果。
2.方案:自己動手寫了一個Demo,用於測試實現如上的效果。其代碼有做參考,在這里先聲明。具體的參照如下:重慶大學二手書小程序。
3.效果:
A)初始化效果:
B)最終效果:
4.實現:
項目結構如下:
WXML代碼如下:
<view class="Hv">間隔高度,測試虹吸效果1</view> <view id="block0"></view> <!--分類導航--> <scrolltab tabdata="{{college}}" scrollTop="{{scrollTop}}" scrollH="{{scrollH}}" bindtabtap="tabtapopt"/> <view class="Hv">間隔高度,測試虹吸效果A</view> <view class="Hv">間隔高度,測試虹吸效果B</view> <view class="Hv">間隔高度,測試虹吸效果C</view> <view class="Hv">間隔高度,測試虹吸效果D</view>
JS代碼如下:
//index.js Page({ data: { college: [{ name: '分類A', id: -1 }, { name: '分類B', id: 0 }, { name: '分類C', id: 1 }, { name: '分類D', id: 2 }, { name: '分類E', id: 3 }, { name: '分類F', id: 4 }, { name: '分類G', id: 5 }, { name: '分類H', id: 6 }, { name: '分類I', id: 7 }, { name: '分類J', id: 8 }, { name: '分類K', id: 9 }, { name: '分類L', id: 10 }, { name: '分類M', id: 11 }, { name: '分類N', id: 12 }, { name: '分類O', id: 13 }, { name: '分類P', id: 14 }, ], scrollTop: 0, scrollH:0, }, onLoad: function() { var that=this; const query = wx.createSelectorQuery() query.select('#block0').boundingClientRect() query.selectViewport().scrollOffset() query.exec(function (res) { that.setData({ scrollH: res[0].top, }) }) }, //監測屏幕滾動 onPageScroll: function(e) { this.setData({ //scrollTop: parseInt((e.scrollTop) * wx.getSystemInfoSync().pixelRatio), scrollTop: parseInt(e.scrollTop) }) }, //操作獲取數據 tabtapopt(e) { var that = this; var colleges = that.data.college; var collegeCur = e.detail; if (collegeCur == -2) { wx.showToast({ title: '全部', }) } else { var names = ""; colleges.forEach(function(value, index) { if (collegeCur == value.id) { names = value.name; } }) wx.showToast({ title: names, }) } }, })
JSON文件如下:
{ "usingComponents": { "scrolltab":"../../components/scrolltab/index" } }
WXSS文件如下:
/**index.wxss**/ .Hv{ width: 100vw; height: 310px; } /*滾動Tab*/ ::-webkit-scrollbar { width: 0; height: 0; color: transparent; }
github地址如下:https://github.com/weiyunhelong/WxScrollTab,歡迎下載並使用!