前幾天分享了一個(gè)自己做的關(guān)于小程序組件擴(kuò)展的開源項(xiàng)目(傳送門)
然后就是監(jiān)聽 scroll-view 的 onscroll 事件,這里我將下拉刷新的狀態(tài)分為五種:
那么在事件監(jiān)聽中根據(jù)當(dāng)前的 scrollTop 來(lái)判斷應(yīng)該在哪一種狀態(tài):
問(wèn)題來(lái)了,什么時(shí)候刷新呢?小程序的 scroll-view 并沒(méi)有 onscrollend 這種事件,于是我想到了 ontouchend,畢竟在手機(jī)上也只能用觸摸來(lái)滑動(dòng)(點(diǎn)擊頭部返回頂部除外),所以只需要在 ontouchend 事件中監(jiān)聽如果當(dāng)前的下拉狀態(tài)是2(_pullDownStatusDic.release)即松開可刷新時(shí),就觸發(fā)刷新:
當(dāng)然這個(gè)時(shí)候還有個(gè)問(wèn)題,我們需要把刷新文字局域顯示出來(lái),我們是沒(méi)辦法吧一個(gè) scroll-view 的 scrollTop 設(shè)為負(fù)數(shù)的,所以只能將 scroll-view 的y軸偏移取消來(lái)解決(產(chǎn)生的問(wèn)題就是松手時(shí)會(huì)有一下彈動(dòng),后期會(huì)想辦法進(jìn)行優(yōu)化) 完成刷新后,再將 scroll-view 的y軸偏移通過(guò)css動(dòng)畫再變回 -40px(用 translate 而不用 margin 就是為了此處動(dòng)畫的流暢度),這樣就完成了一次下拉刷新。 是不是很簡(jiǎn)單:) 另外還有一些小細(xì)節(jié),還有加載更多,還有 xing-image 的一些實(shí)現(xiàn),就更簡(jiǎn)單了,有興趣的可以看看源碼 |