VictorS对接受的答案的评论应该是它自己的答案,因为它是一个确实有效的非常优雅的解决方案。而且我会添加一点点实用性。
维克多(Victor)注意到正在添加position:fixed
作品。
body.modal-open {
overflow: hidden;
position: fixed;
}
确实如此。但是,它也具有基本滚动到顶部的轻微副作用。position:absolute
解决了此问题,但重新引入了在移动设备上滚动的功能。
如果您知道您的视口(我的插件将视口添加到<body>
),您只需添加一个CSS切换器position
。
body.modal-open {
// block scroll for mobile;
// causes underlying page to jump to top;
// prevents scrolling on all screens
overflow: hidden;
position: fixed;
}
body.viewport-lg {
// block scroll for desktop;
// will not jump to top;
// will not prevent scroll on mobile
position: absolute;
}
我还添加了此选项,以防止显示/隐藏模式时基础页面向左/向右跳转。
body {
// STOP MOVING AROUND!
overflow-x: hidden;
overflow-y: scroll !important;
}