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

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

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

但是這個事件有些缺點:

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

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

回答
編輯回答
安淺陌

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

<tabbar></tabbar>
<scroll-view>
    <view class="top">釋放更新</view>
    <view>列表項</view>
</scroll-view>

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

僅供參考啦

2017年9月25日 16:03