0
点赞
收藏
分享

微信扫一扫

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

这确实是个挺好的方式,建议将代码收藏备用!

翻译日期: 2016年5月26日



举报

相关推荐

0 条评论