1. 先來看一下未滑動的效果,(樣式隨便寫的,希望盡量簡單)
2.滑動到菜單欄之后的吸頂效果
3. 我的html布局,小程序我用的是mpvue寫的,使用了scss,可以自行下載demo后改為原生小程序標簽
吸頂效果的實現思路:
1.獲取菜單欄距離文檔頂部的距離,也就是頭部區域的高度headHeight,使用小程序的api,可以獲得指定節點的高度
2. 監聽頁面滾動距離scrollTop,小程序api, onPageScroll,監聽頁面滾動
3.當scrollTop > headHeight的時候,添加吸頂樣式的class,實現吸頂效果
這樣寫之后,測試了一下,吸頂的時候抖動會比較嚴重
優化方案
1. 菜單欄初始定位為相對menu-wrapper 絕對定位,這樣,可以給內容區增加padding-top,padding-top值為菜單欄的高度
2. 內容區用scroll-view包裹,未吸頂之前,禁用當前scroll-view的滾動,吸頂之后,才啟用滾動
加了兩個優化方案之后,吸頂效果抖動沒這么厲害,ios還是會有點點,安卓就很平滑了。
需要注意的是,使用小程序的api獲取頭部的高度時,頭部的高度需要明確指定了高度,否則獲取到的高度可能不准。
完整代碼,請上github查看,有注釋,推薦點擊鏈接看30秒,哈哈~,https://github.com/daisygogogo/my-demo/blob/master/index.vue