咳咳,還是這個(gè)滑動(dòng)效果,這次呢,還是一個(gè)小問題。這個(gè)效果就是左右滑動(dòng)切換一周,然后下方會(huì)刷新一周的數(shù)據(jù),因?yàn)槭亲鲈谖⑿爬锩?,平時(shí)平滑是沒有關(guān)系的,但是??!,如果咱滑動(dòng)的時(shí)候往上面移動(dòng),對(duì),就是往上移動(dòng)到那個(gè)微信自帶的頭部上時(shí),就會(huì)卡在那?。?!。
這個(gè)就有點(diǎn)無語了,我完全懵逼,這算啥。然后我在我首頁那個(gè)用了別人插件的輪播圖上試了試,發(fā)現(xiàn)也會(huì)這樣,但是,輪播圖無所謂呀,它高度高呀,它大呀,它不會(huì)沒事就被人滑呀,然后就看不出來,但這個(gè)不行==(向邪惡勢(shì)力低頭)=_=。
我估計(jì)是因?yàn)樵谝苿?dòng)到上面的時(shí)候,touchmove事件并沒有結(jié)束,從而就沒有觸發(fā)touchend事件,我判斷是寫在touchend事件里面的,不這樣寫的話,在移動(dòng)超過我給定的那個(gè)數(shù)值之后就會(huì)自動(dòng)滑動(dòng)過去的==。
雖然是猜了原因,但是我還是不知道為啥會(huì)這樣,所以發(fā)個(gè)問題求助下,希望能幫幫忙,給個(gè)解決方法或思路。
感謝各位大佬
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
實(shí)際上不只是移動(dòng)到那個(gè)微信自帶的頭部上時(shí)
,只要拖動(dòng)時(shí),頁面發(fā)生滾動(dòng),都會(huì)導(dǎo)致丟幀,然后就詭異地失去了touchend事件。
我的解決方案時(shí)這樣的,不用touchend了,把判斷寫在touchmove里。
首先在事件監(jiān)聽外定義一個(gè)標(biāo)記變量,記錄是否在播放動(dòng)畫
let notMoveYet;
然后在touchstart
中
notMoveYet = true;
關(guān)鍵就是接下來的touchmove
事件
function touchmove(ev){
//如果正在播放滑動(dòng)動(dòng)畫,則阻止默認(rèn)事件,防止掉幀
if(!notMoveYet){
//防止掉幀
ev.preventDefault();
return;
}
//判斷是否滿足觸發(fā)距離
if(Math.abs(offset)>100){
//防止掉幀
ev.preventDefault();
//切換項(xiàng)目,播放滑動(dòng)動(dòng)畫
switchItem(currentItem);
//設(shè)置標(biāo)記,使得再觸發(fā)touchmove時(shí)
//不再走到這里了
notMoveYet = false;
}else{
//不滿足,無視吧
return;
}
}
iphone上就是這樣啦,2年前我也遇上了這個(gè)問題,想盡辦法想解決,但都無濟(jì)于事?;瑒?dòng)到頂部后,就是監(jiān)聽不到touchend事件。
如果兄弟還是解決不了,建議不要太鉆這個(gè)牛角尖了,換個(gè)思路,比如從交互上改變,滑動(dòng)整個(gè)頁面都可以切換日期之類的。