这是一个多层次的问题,不确定如果我全部询问它是否会成功,但我遇到的问题与 Lightbox 相关。
我试图让它工作,当我点击一个图像时,img 灯箱打开,但即使是 'disableScrolling': true,
它不起作用。 body
确实得到 overflow: hidden;
从该灯箱选项,但页面仍在滚动。
所以,我必须想出一个 hacky 修复程序。我试过这个 js 但它不工作:
$( ".smile-thumb-container" ).click(function() {
if($('body').hasClass('lb-disable-scrolling')) {
$('html').addClass('lb-overflow-fix');
} else {
$('html').removeClass('lb-overflow-fix');
}
});
当我点击 img
时,我基本上是想说, body 得到.lb-disable-scrolling
.这是来自 Lightbox 本身,现在,当我点击 div
时,我想说持有 img
检查是否<body>
有.lb-disable-scrolling
,它会有,因为灯箱会这样做。如果 body 有那个类,将类添加到 <html>
称为 .lb-overflow-fix
.当我关闭 img 时,<body>
失去 .lb-disable-scrolling
所以html
应该删除 .lb-overflow-fix
也是。
.lb-overflow-fix
在我的 CSS 中是 overflow: hidden;
我不确定为什么它适用于 <html>
而不是 <body>
.
我知道实际的网站并不理想,但我什至不能让它正常工作,所以我不得不假设我的 js 是不正确的。这是 site问题是。
最佳答案
因为你设置了这个 CSS:
html {
overflow-x: hidden;
}
这改变了默认情况下垂直滚动的处理方式,结果是你的 <html>
处理它的节点,而不是 <body>
节点。
删除overflow-x: hidden;
来自 <html>
,然后您的网站突然按预期运行。
无论如何隐藏水平溢出不是一个好主意,所以我建议不要尝试。
关于javascript - 如果另一个类已经存在,则尝试添加一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49083449/