禁止頁面Body在後臺滾動
我最討厭的一種情況, 是在滾動彈出框的時候, 後臺的 <body>
也跟著一起滾了。你可能也碰到過這種情況: 想滾動一下對話方塊, 卻看到底層的頁面也跟著一起滾動? 這真是種糟糕的使用者體驗, 很杯具、呵呵。
那麼怎樣才算是比較好的處理方式? 監聽 scroll
事件並且執行 preventDefault
和/或 stopPropagation
, 但卻沒什麼用。 最簡單的方式是使用CSS:
/* ...或者其他類名,如: body.dialogShowing */
body.noScroll,html.noScroll {
overflow: hidden;
height:100%;
}
感謝 “陳奇” 評論提供的修正
要給body和html同時設定overflow:hidden,並且height:100%才會相容到大部分的安卓機。
對整個 <body>
禁止溢位, 可以保證只有獲取焦點的元素會滾動, 其他的元素不會連帶著滾動。這是一種簡單卻實用的方法, 當然,你需要JS程式碼來配合,動態的增加/移除body
元素上相應的CSS類。
這確實是個挺好的方式,建議將程式碼收藏備用!
本文最先釋出於: http://zcfy.cc/article/334
原文連結: https://davidwalsh.name/prevent-body-scrolling
翻譯日期: 2016年5月26日
相關文章
- 直播平臺製作,禁止頁面滾動 / 滾動事件穿透事件穿透
- 遮罩層禁止頁面滾動遮罩
- 禁止頁面滾動的方法
- vue頁面有彈層,禁止頁面滾動Vue
- 禁止蒙層底部頁面跟隨滾動
- 頁面圖片自動滾動
- 頁面滾動偵聽器
- vue 監聽頁面滾動事件Vue事件
- Flutter SingleChildScrollView 滾動頁面FlutterView
- 前端頁面自定義滾動條前端
- js頁面全屏垂直滾動效果JS
- 移動端頁面滾動--解決方法
- WebForm 頁面ajax 請求後臺頁面 方法WebORM
- 禁止頁面後退JS(相容各瀏覽器)JS瀏覽器
- 頁面開啟很正常,後臺return後頁面偏左了
- 關於頁面無限滾動思路
- angular 監聽 Windows 滾動事件 實現頁面滾動載入AngularWindows事件
- 移動端觸屏拖動頁面滾動效果
- 禁止網頁出現滾動條 scroll iframe overflow-x網頁
- js/jquery禁止頁面回退JSjQuery
- jQuery 頁面滾動 吸頂 和 吸底jQuery
- jquery禁止在頁面使用滑鼠右鍵程式碼示例jQuery
- 滑鼠雙擊頁面實現自動滾動效果
- 後臺向vue頁面傳值Vue
- Vue.js輕鬆實現頁面後退時,還原滾動位置Vue.js
- 如何實現頁面重新整理後不定位到之前的滾動位置?
- 直播平臺原始碼,vue+vue-fullpage實現整屏滾動頁面原始碼Vue
- H5頁面滾動阻尼效果實現H5
- Flutter 頁面滾動吸頂詳解(NestedScrollView)FlutterView
- 頁面全屏垂直平滑滾動程式碼例項
- 使用 jQuery Ajax 在頁面滾動時從伺服器載入資料jQuery伺服器
- PbootCMS後臺頁面顯示亂碼boot
- 禁止使用框架引用網站頁面框架網站
- 10行程式碼實現頁面無限滾動行程
- 分享一款jQuery全屏滾動頁面特性案例jQuery
- 高效能滾動 scroll 及頁面渲染優化優化
- js:返回到頁面時滾動到上次瀏覽位置JS
- css:touch-action導致安卓無法滾動頁面CSS安卓