vue-weixin
vue-weixin copied to clipboard
通讯录页面点索引‘z’后无法滚动
点z后滚动到最底部,再往上滚动时会回到最底部,希望大神给个解决办法,不胜感激!
哎,大神不理我,自问自答
原因:首先,animation会根据调用者传入的期望值来完成动画,而点击 z 时,因为到达页面底部而永远无法达到期望值,animation就用一直执行尝试到达预期值,也就是一直往下滚动。
原因找到了,问题也就解决了一半,我是个小白,只能简单粗暴的解决,希望可以抛砖引玉:
1.改animation方法 :设置一个阈值,当执行次数超过阈值时,停止timer。
2.改变传入值:判断预期动画,如果期望的网页卷去高度scrollTop+屏幕可见区域高度>网页总高度时,传入动画值:网页总高度-屏幕高度。也就是滚到页面底部就可以了。
部分代码:
let [timerTimes,threshold] = [0,50]; // 如果执行超过规定次数(50),停止定时器
element.timer = setInterval(() => {
Object.keys(target).forEach(attr => {
let iSpeed = 0; //步长
//... 省略 ...
if(threshold){
timerTimes++
if(timerTimes>threshold){
clearInterval(element.timer)
return
}
}
}, 20);