鍍金池/ 問答/HTML5  HTML/ 微信小程序如何實(shí)現(xiàn)這種不一樣的下拉刷新?

微信小程序如何實(shí)現(xiàn)這種不一樣的下拉刷新?

我這里的布局實(shí)現(xiàn)是手寫的tab導(dǎo)航(全部、精華那一行),微信小程序自帶的下拉刷新必須是拉動整個(gè)Page頁面,這樣會把導(dǎo)航欄也往下拉,因此用的是<scroll-view>的scrolltoupper事件

但是這個(gè)事件有些缺點(diǎn):

  1. 沒有那種彈動的效果
  2. 當(dāng)觸頂或觸底時(shí),均不會觸發(fā),必須從未到頂端或低端時(shí)把距離拉到0時(shí)才觸發(fā)
  3. 用戶容易誤觸,導(dǎo)致刷新,相反的是標(biāo)準(zhǔn)的上拉刷新和下拉刷新不可能會誤觸的,必須由手勢滑動

請問大家有什么好的實(shí)踐經(jīng)驗(yàn)分享嗎?
clipboard.png

回答
編輯回答
安淺陌

如果是我。會自己手寫一個(gè)仿下拉刷新。
頁面結(jié)構(gòu)可能是這樣

<tabbar></tabbar>
<scroll-view>
    <view class="top">釋放更新</view>
    <view>列表項(xiàng)</view>
</scroll-view>

思路可能大概是這樣的
首先使用transform將top高度設(shè)為0
監(jiān)聽scroll-view的touch事件,當(dāng)拖動到頂部任然繼續(xù)下拖。則計(jì)算拖動距離,增加top的高度,到達(dá)一定高度則不再增加,并釋放更新
注意這里的距離計(jì)算應(yīng)該給一個(gè)彈簧的效果。即拖動的距離越大,top的高度增加越小,嗯,寫個(gè)簡單的例子的話大概可能是這樣
top的高度為: h1
拖動距離為: x(此為touchmove與上次touchmove的y左邊之差)
假設(shè)top最后高度為100
則:
h1 += (100 - h1) * x / 100);
h1 = h1 > 100 ? 100 : h1;
然后就會有一個(gè)簡單的彈簧效果。當(dāng)h1的高度達(dá)到100則不再增加,當(dāng)釋放的時(shí)候h1重置回0,并且刷新列表

僅供參考啦

2017年9月25日 16:03