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

目录
相关文章
|
8天前
|
JavaScript 前端开发
HTML5-JS操作页面滚动条(禁止、隐藏、显示、不显示)
HTML5-JS操作页面滚动条(禁止、隐藏、显示、不显示)
15 0
|
1月前
layui的富文本编辑器layedit设置禁用状态
layui的富文本编辑器layedit设置禁用状态
|
4月前
|
前端开发 Java
前端——HTML或者JSP页面--执行完某事件后刷新页面,重置表单,清空数据
前端——HTML或者JSP页面--执行完某事件后刷新页面,重置表单,清空数据
|
4月前
|
缓存
uniapp的mescroll-body组件与页面切换冲突.mescroll-body组件下拉异常,mescroll-body组件页面跳转回来后下滑屏幕直接触发了下拉刷新.
uniapp的mescroll-body组件与页面切换冲突.mescroll-body组件下拉异常,mescroll-body组件页面跳转回来后下滑屏幕直接触发了下拉刷新.
|
4月前
uniapp动态禁用mescroll-body组件的下拉刷新,或者动态禁用mescroll-body组件的上拉加载
uniapp动态禁用mescroll-body组件的下拉刷新,或者动态禁用mescroll-body组件的上拉加载
|
4月前
uniapp禁止页面滚动
uniapp禁止页面滚动
285 0
|
5月前
element ui 上传图片之后跳转、刷新、保存,预览和删除丢失问题
这问题困惑了我好久,在官方的element ui 的组件库中,直接拿来使用的话,只有当前显示效果,一旦刷新页面或者保存之后,就会丢失,预览和删除功能。当保存后,保存到后端接口,再次查看,图片是能渲染出来,但是由于保存页面刷新,随之整个上传过程失败,而查看所拿到的图片只是一张静态图片,要想再次预览和查看,需要重新选中上传
52 0
|
6月前
|
Java
网页退出登录,清空session,设置登录页面的浏览器的返回按钮失效!
网页退出登录,清空session,设置登录页面的浏览器的返回按钮失效!
95 0
|
8月前
uniapp:禁止蒙版下的页面滚动
uniapp:禁止蒙版下的页面滚动
89 0
|
移动开发 编解码 小程序
(H5小程序页面html)页面跳转参数丢失
在 URL 参数字符串中用 key=value 这种键值对的形式进行传递参数,多个键值对中间用 & 连接。如果在 value 中也存在 & 这个符号的话,不对其进行编码,就会引起歧义,就会发生参数丢失问题。
相关产品
云迁移中心
推荐文章
更多