回覆列表
-
1 # ktpum4352
-
2 # 使用者3878603139388
監聽頁面觸控運動
var jinzhi=0;
document.addEventListener("touchmove",function(e){
if(jinzhi==0){
e.preventDefault();
e.stopPropagation();
}
},false);
後面隨便用個函式 把jinzhi的值改為不為0 就又可以滾動了。原理就是這樣 很簡單
不光是css3,gif動畫也是,不信你開啟一個gif滾動的時候看它還動不動。iOS最先響應螢幕反應。響應順序依次為Touch——Media——Service——Core架構,當用戶只要觸控接觸了螢幕之後,系統就會最優先去處理螢幕顯示也就是Touch這個層級,然後才是媒體(Media),服務(Service)以及Core架構。所以說,當系統接收到Touch事件之後會優先響應,此時會暫停螢幕上包括js、css的渲染。這個時候不光是css動畫不動了,哪怕頁面沒有載入完如果你手指頭還停留在螢幕上那麼頁面也不會繼續載入,直到你的手鬆開。解決辦法有兩個,各有瑕疵:不要使用scroll事件(此事件會被暫停),而是採用touchmove(此事件會在使用者觸屏滾動的時候不斷觸發)。瑕疵是,在結束觸屏後慣性滾動的時間裡,touchmove無法被觸發了(scroll當然也不行);基於上一種方法,在所有的touchmove事件中,強行preventDefault阻止掉事件,然後根據event.pageY來手工設定所滑動元素的scrollTop值。當然,這樣一來就沒有了慣性滾動。你也可以在touchend之後,手工模擬慣性滾動,計算速度以及速度衰減,可以參考各種各樣的滾動外掛。