当显示模态时,我将一个带overflow: hodden
的类添加到body标签中。因此模态背后的内容不是滚动。一切都很好。
BUT
如果原始页面足够大以具有滚动条,那么当我打开模态时,我可以看到页面向右移动。我找出了这种行为的原因。 Overflow: hidden
导致滚动条消失,这就是为什么它向右移动~10px。
我的问题是如何解决这个问题。实际上,我需要应用overflow:hidden
但仍然显示滚动条。
答案 0 :(得分:0)
(function() {
let _scrollPosition;
function preventScroll(e) {
e.preventDefault();
window.scroll(..._scrollPosition);
}
function lock() {
_scrollPosition = [window.pageXOffset, window.pageYOffset];
$(window).on('scroll touchmove', preventScroll);
}
function unlock() {
$(window).off('scroll touchmove', preventScroll);
}
return {
lock,
unlock
};
})();

只要使用此代码打开模态,就可以锁定滚动位置。