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

发布了112 篇原创文章 · 获赞 1688 · 访问量 530万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览