微信小程序?qū)崿F(xiàn)吸頂效果的方法實例
背景是做一個日期title隨著用戶滑動,當滑到當前日期list數(shù)據(jù)時,有一個吸頂效果,并且該效果與原來樣式不一樣
1. 實現(xiàn)方式

- scroll-view為小程序原生組件
- handleScroll為滑動時觸發(fā)的事件
- scroll-y表示在垂直方向上允許滑動
- class為fixed的元素在這做固定定位在scroll-view容器的頂部用于顯示當前滑動到的日期
- 利用動態(tài)綁定class的方法去控制visibility的顯示與否
- class為scheduleDay的元素為每一個日期title
- data-value的值綁定為該日期

- 該函數(shù)為處理每一個scheduleDay元素距離scroll-view頂部與當前日期的數(shù)據(jù)
- 集合成一個數(shù)據(jù)如下所示以此類推
- wx.createSelectorQuery()使用方法具體參考(一般用于獲取某個元素節(jié)點的位置信息)
- developers.weixin.qq.com/miniprogram…
scheduleInfo:[
{
top: 8,
currentDay: '2021-08-15'
},
{
top: 213,
currentDay: '2021-08-14'
},
{
top: 555,
currentDay: '2021-08-13'
},
...
]

- e.detail.scrollTop為在scroll-view組件中滑動的距離
- 當 滑動高度 >= 某個元素節(jié)點距離scrollview頂部的距離 時 設(shè)置當前滑動到的日期
- 然后控制固定定位的元素出現(xiàn)或隱藏即可實現(xiàn)
本文對于css就不做過多展示,邏輯思路對了即可實現(xiàn)功能效果
2. 存在的問題
- 由于handleScroll滑動事件觸發(fā)的頻率有誤差,導(dǎo)致在滑到最上方時并沒有隱藏fixed的元素
- 上拉時fixed元素與原本該位置的日期title會有不好的ui體驗效果
- 參考下圖
該圖為默認情況下的ui顯示

用戶滑動至該日期下的list位置時的ui顯示,或者是⬆️存在的問題的第一點會出現(xiàn)的情況

然后會影響⬆️存在的問題的第二點的情況

3. 考慮是否有更好的實現(xiàn)方式
最開始考慮是動態(tài)給每一個元素節(jié)點的日期title加上相應(yīng)的class去控制單獨樣式的改變情況,但是每一個元素的class都相同,無法使用該方式去解。
通過控制每一個單獨元素節(jié)點的樣式去修改,但是小程序不像瀏覽器中存在DOM可以去通過dom.style.xxx去改變每一個單獨元素的樣式。
IntersectionObserver,該方法也嘗試過,但沒有成功,有機會再嘗試一下。
總結(jié)
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)吸頂效果的文章就介紹到這了,更多相關(guān)小程序吸頂效果內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Extjs顯示從數(shù)據(jù)庫取出時間轉(zhuǎn)換JSON后的出現(xiàn)問題
后臺從數(shù)據(jù)庫取出時間,JSON格式化后再傳到gridpanel,這時時間變成了:/Date(32331121223)/這樣的格式,本文將詳細介紹解決Extjs顯示從數(shù)據(jù)庫取出時間轉(zhuǎn)換JSON后的出現(xiàn)問題2012-11-11
js實現(xiàn)一個省市區(qū)三級聯(lián)動選擇框代碼分享
省市區(qū)三級聯(lián)動在填寫表單時有關(guān)地址這一塊顯得尤為重要,直接提高了用戶的填寫速度與準確度,接下來本文使用js代碼實現(xiàn)一個,感興趣的你可以參考下希望可以幫助到你2013-03-03
JavaScript模擬可展開、拖動與關(guān)閉的聊天窗口實例
這篇文章主要介紹了JavaScript模擬可展開、拖動與關(guān)閉的聊天窗口,實例分析了javascript實現(xiàn)可拖動的div層相關(guān)技巧,非常具有實用價值,需要的朋友可以參考下2015-05-05
JavaScript中展開運算符及應(yīng)用的實例代碼
這篇文章主要介紹了JavaScript中展開運算符及應(yīng)用的實例代碼,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
學(xué)習(xí)RxJS之JavaScript框架Cycle.js
這篇文章主要介紹了學(xué)習(xí)RxJS之JavaScript框架Cycle.js ,它是一個極簡的JavaScript框架(核心部分加上注釋125行),提供了一種函數(shù)式,響應(yīng)式的人機交互接口,需要的朋友可以參考下2019-06-06
JavaScript 保護變量不被隨意修改的實現(xiàn)代碼
本文通過實例代碼給大家分享JavaScript 保護變量不被隨意修改的實現(xiàn)方法,需要的朋友參考下吧2017-09-09

