禁止页面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日

目录
相关文章
|
9月前
|
小程序 JavaScript
小程序自定义弹窗禁止底部内容滚动(滚动穿透问题)
小程序自定义弹窗禁止底部内容滚动(滚动穿透问题)
1093 0
|
移动开发 编解码 小程序
(H5小程序页面html)页面跳转参数丢失
在 URL 参数字符串中用 key=value 这种键值对的形式进行传递参数,多个键值对中间用 & 连接。如果在 value 中也存在 & 这个符号的话,不对其进行编码,就会引起歧义,就会发生参数丢失问题。
473 0
|
4月前
|
UED
判断iframe链接页面 服务器状态
【10月更文挑战第6天】
46 1
|
8月前
|
缓存
html input 如何设置禁止缓存历史记录
html input 如何设置禁止缓存历史记录
196 0
|
9月前
|
JavaScript UED
js得禁止页面滚动
js得禁止页面滚动
81 1
|
9月前
|
开发者
在用户关闭页面时,提示用户有内容未保存-论onbeforeunload事件的用法
在用户关闭页面时,提示用户有内容未保存-论onbeforeunload事件的用法
157 0
|
JavaScript 前端开发
HTML5-JS操作页面滚动条(禁止、隐藏、显示、不显示)
HTML5-JS操作页面滚动条(禁止、隐藏、显示、不显示)
188 0
|
前端开发 Java
前端——HTML或者JSP页面--执行完某事件后刷新页面,重置表单,清空数据
前端——HTML或者JSP页面--执行完某事件后刷新页面,重置表单,清空数据
|
缓存
uniapp的mescroll-body组件与页面切换冲突.mescroll-body组件下拉异常,mescroll-body组件页面跳转回来后下滑屏幕直接触发了下拉刷新.
uniapp的mescroll-body组件与页面切换冲突.mescroll-body组件下拉异常,mescroll-body组件页面跳转回来后下滑屏幕直接触发了下拉刷新.
370 0
uniapp禁止页面滚动
uniapp禁止页面滚动
641 0

热门文章

最新文章