如何解決移動端滾動穿透問題
大家都知道,移動端當有fixed遮罩背景和彈出層時,在螢幕上滑動能夠滑動背景下面的內容,這就是著名的滾動穿透問題。
下面就介紹一下如何解決此問題:
css的overflow: hidden:
[CSS] 純文字檢視 複製程式碼.modal-open { &, body { overflow: hidden; height: 100%; } }
頁面彈出層上將 .modal-open 新增到 html 上,禁用 html 和 body 的滾動條
但是這個方案有兩個缺點:
(1).由於 html 和 body的滾動條都被禁用,彈出層後頁面的滾動位置會丟失,需要用 js 來還原。
(2).頁面的背景還是能夠有滾的動的效果。
js的touchmove + preventDefault:
[JavaScript] 純文字檢視 複製程式碼modal.addEventListener('touchmove', function(e) { e.preventDefault(); }, false);
這樣用 js 阻止滾動後看起來效果不錯了,但是也有一個缺點:
彈出層裡不能有其它需要滾動的內容(如大段文字需要固定高度,顯示滾動條也會被阻止)。
所以上面兩個方案都有缺點,今天用英文關鍵字 google 了一下,才發現原來還有更好的方案。
解決方案 position: fixed:
[CSS] 純文字檢視 複製程式碼body.modal-open { position: fixed; width: 100%; }
如果只是上面的 css,滾動條的位置同樣會丟失
所以如果需要保持滾動條的位置需要用 js 儲存滾動條位置關閉的時候還原滾動位置
這樣上面3個缺點都解決了,至此滾動穿透就完美解決了.
相關文章
- 移動端滾動穿透問題解決方案穿透
- 移動端滾動穿透問題完美解決方案穿透
- 解決移動端滾動穿透穿透
- 移動端滾動穿透解決方案穿透
- 移動端彈出層滾動穿透問題總結穿透
- 滾動穿透問題探索穿透
- 移動端滾動穿透是什麼原因?有哪些解決方案?穿透
- 解決小程式遮罩層滾動穿透問題遮罩穿透
- 【前端詞典】滾動穿透問題的解決方案前端穿透
- 記一個ios滾動穿透問題iOS穿透
- 移動端頁面滾動--解決方法
- 解決移動裝置上iframe滾動條的問題
- 如何解決移動端的安全區域為0的問題
- 移動端模擬滾動
- 解決移動端複製問題
- 移動端div跟隨滾動條滾動(自制
- 移動辦公的安全問題如何解決?
- 移動端事件穿透的原理與解決方案事件穿透
- 解決vue移動端適配問題Vue
- 移動端適配問題解決方案
- 移動端點透問題及其解決方案
- 【移動端開發】移動端開發基礎問題
- 移動端300ms點選延遲和點選穿透問題穿透
- 移動端web整理 移動端問題總結,移動web遇到的那些坑Web
- H5 滾動穿透H5穿透
- 移動端點透事件--阻止滾動事件事件
- 適配移動端的問題以及解決方案
- 移動端觸屏拖動頁面滾動效果
- Vue移動端問題記錄Vue
- 移動端瀏覽器問題瀏覽器
- web移動端常問面試題Web面試題
- 移動端彈窗滾動時window窗體也一起滾動的解決辦法
- 移動端常見相容性問題解決方案
- 移動端實現內滾動的4種方案
- 直播平臺製作,禁止頁面滾動 / 滾動事件穿透事件穿透
- -webkit-overflow-scrolling解決移動端iOS滾動卡頓現象WebKitiOS
- 移動端無限滾動載入 js實現原理JS
- h5移動端常見的問題及解決方案H5