微信小程序?qū)崿F(xiàn)吸頂效果的方法實(shí)例
背景是做一個(gè)日期title隨著用戶滑動(dòng),當(dāng)滑到當(dāng)前日期list數(shù)據(jù)時(shí),有一個(gè)吸頂效果,并且該效果與原來(lái)樣式不一樣
1. 實(shí)現(xiàn)方式
- scroll-view為小程序原生組件
- handleScroll為滑動(dòng)時(shí)觸發(fā)的事件
- scroll-y表示在垂直方向上允許滑動(dòng)
- class為fixed的元素在這做固定定位在scroll-view容器的頂部用于顯示當(dāng)前滑動(dòng)到的日期
- 利用動(dòng)態(tài)綁定class的方法去控制visibility的顯示與否
- class為scheduleDay的元素為每一個(gè)日期title
- data-value的值綁定為該日期
- 該函數(shù)為處理每一個(gè)scheduleDay元素距離scroll-view頂部與當(dāng)前日期的數(shù)據(jù)
- 集合成一個(gè)數(shù)據(jù)如下所示以此類推
- wx.createSelectorQuery()使用方法具體參考(一般用于獲取某個(gè)元素節(jié)點(diǎn)的位置信息)
- 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組件中滑動(dòng)的距離
- 當(dāng) 滑動(dòng)高度 >= 某個(gè)元素節(jié)點(diǎn)距離scrollview頂部的距離 時(shí) 設(shè)置當(dāng)前滑動(dòng)到的日期
- 然后控制固定定位的元素出現(xiàn)或隱藏即可實(shí)現(xiàn)
本文對(duì)于css就不做過(guò)多展示,邏輯思路對(duì)了即可實(shí)現(xiàn)功能效果
2. 存在的問(wèn)題
- 由于handleScroll滑動(dòng)事件觸發(fā)的頻率有誤差,導(dǎo)致在滑到最上方時(shí)并沒(méi)有隱藏fixed的元素
- 上拉時(shí)fixed元素與原本該位置的日期title會(huì)有不好的ui體驗(yàn)效果
- 參考下圖
該圖為默認(rèn)情況下的ui顯示
用戶滑動(dòng)至該日期下的list位置時(shí)的ui顯示,或者是⬆️存在的問(wèn)題的第一點(diǎn)會(huì)出現(xiàn)的情況
然后會(huì)影響⬆️存在的問(wèn)題的第二點(diǎn)的情況
3. 考慮是否有更好的實(shí)現(xiàn)方式
最開(kāi)始考慮是動(dòng)態(tài)給每一個(gè)元素節(jié)點(diǎn)的日期title加上相應(yīng)的class去控制單獨(dú)樣式的改變情況,但是每一個(gè)元素的class都相同,無(wú)法使用該方式去解。
通過(guò)控制每一個(gè)單獨(dú)元素節(jié)點(diǎn)的樣式去修改,但是小程序不像瀏覽器中存在DOM可以去通過(guò)dom.style.xxx去改變每一個(gè)單獨(dú)元素的樣式。
IntersectionObserver,該方法也嘗試過(guò),但沒(méi)有成功,有機(jī)會(huì)再嘗試一下。
總結(jié)
到此這篇關(guān)于微信小程序?qū)崿F(xiàn)吸頂效果的文章就介紹到這了,更多相關(guān)小程序吸頂效果內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Extjs顯示從數(shù)據(jù)庫(kù)取出時(shí)間轉(zhuǎn)換JSON后的出現(xiàn)問(wèn)題
后臺(tái)從數(shù)據(jù)庫(kù)取出時(shí)間,JSON格式化后再傳到gridpanel,這時(shí)時(shí)間變成了:/Date(32331121223)/這樣的格式,本文將詳細(xì)介紹解決Extjs顯示從數(shù)據(jù)庫(kù)取出時(shí)間轉(zhuǎn)換JSON后的出現(xiàn)問(wèn)題2012-11-11原生JavaScript實(shí)現(xiàn)滾動(dòng)條效果
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)滾動(dòng)條效果的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-01-01js實(shí)現(xiàn)一個(gè)省市區(qū)三級(jí)聯(lián)動(dòng)選擇框代碼分享
省市區(qū)三級(jí)聯(lián)動(dòng)在填寫表單時(shí)有關(guān)地址這一塊顯得尤為重要,直接提高了用戶的填寫速度與準(zhǔn)確度,接下來(lái)本文使用js代碼實(shí)現(xiàn)一個(gè),感興趣的你可以參考下希望可以幫助到你2013-03-03JavaScript模擬可展開(kāi)、拖動(dòng)與關(guān)閉的聊天窗口實(shí)例
這篇文章主要介紹了JavaScript模擬可展開(kāi)、拖動(dòng)與關(guān)閉的聊天窗口,實(shí)例分析了javascript實(shí)現(xiàn)可拖動(dòng)的div層相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-05-05JavaScript中展開(kāi)運(yùn)算符及應(yīng)用的實(shí)例代碼
這篇文章主要介紹了JavaScript中展開(kāi)運(yùn)算符及應(yīng)用的實(shí)例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01學(xué)習(xí)RxJS之JavaScript框架Cycle.js
這篇文章主要介紹了學(xué)習(xí)RxJS之JavaScript框架Cycle.js ,它是一個(gè)極簡(jiǎn)的JavaScript框架(核心部分加上注釋125行),提供了一種函數(shù)式,響應(yīng)式的人機(jī)交互接口,需要的朋友可以參考下2019-06-06JavaScript 保護(hù)變量不被隨意修改的實(shí)現(xiàn)代碼
本文通過(guò)實(shí)例代碼給大家分享JavaScript 保護(hù)變量不被隨意修改的實(shí)現(xiàn)方法,需要的朋友參考下吧2017-09-09