移動端H5 的滑動穿透問題 很是讓人頭疼 網上找了各種解決方案 都不是很完美,
於是自己 想了各種辦法 終於決解了 (暫時未發現BUG)
首先滑動 穿透的分類
一 給body加 超出隱藏
這種情況的小夥伴 簡單的將 body 來個 overflow: hidden; 即可解決,
弊端:當你 往下滑動了 很多後 overflow: hidden 將會把頁面 返回頂部;
二 阻止滑動事件
當彈出層出來的 時候 禁止掉 默認的滑動事件
document.querySelector('body').addEventListener('touchmove', function (event) {
event.preventDefault();
});
弊端:當你彈出層 也需要滑動時 將無法滑動;
三 完美解決 方案
1,不要用系統默認的超出滑動 也就是說 你要自己寫個 DIV 讓其 overflow: scroll;(避免系統默認的 滑動事件)
2,整個 html 要用 position: fixed; 禁止用戶用的(不禁止 會影響體驗);
3,如此設計後 你會發現 滑動穿透 已經好了 因爲你根本沒有用系統的 滑動,所以不會穿透,可是萬惡的 IOS 來搞事情了,滑動會 沒有慣性,用起來很不爽,於是在網上找到
-webkit-overflow-scrolling : touch;
這個代碼 是加慣性的 ,加上後慣性是好了,但是穿透問題又出來了,所以我們要在 彈出層出來的時候 去掉這個屬性,就不會穿透 彈出層消失的 時候在增加這個屬性 就可以有慣性了,至此 完美解決
4 有任何問題 隨時留言 大家共同學習