Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 防止lightbox打开时背景滚动_Jquery_Css_Featherlight.js - Fatal编程技术网

Jquery 防止lightbox打开时背景滚动

Jquery 防止lightbox打开时背景滚动,jquery,css,featherlight.js,Jquery,Css,Featherlight.js,我用它当灯箱。我遇到的一个问题是,当它打开时,背景仍然可以滚动。大多数灯箱需要的修复方法是向主体添加一个类,其中包含overflow:hidden在上面 如何在打开灯箱时执行此操作,然后在关闭时删除该类?您可以使用插件调用中的选项,方法是使用打开前的和关闭后的选项,如: $.featherlight({ beforeOpen: function() { document.body.style.overflow = 'hidden'; }, afterEnd

我用它当灯箱。我遇到的一个问题是,当它打开时,背景仍然可以滚动。大多数灯箱需要的修复方法是向主体添加一个类,其中包含
overflow:hidden在上面


如何在打开灯箱时执行此操作,然后在关闭时删除该类?

您可以使用插件调用中的选项,方法是使用打开前的
和关闭后的
选项,如:

$.featherlight({
    beforeOpen: function() {
        document.body.style.overflow = 'hidden';
    },
    afterEnd: function() {
        document.body.style.overflow = '';
    }
});

您可以尝试以下步骤:

1) 将新CSS类添加为:

.bodyNoOverflow{
    overflow:hidden;
}
2) 修改Featherlight小部件初始化配置,并将
beforeOpen
beforeClose
回调函数修改为:

beforeOpen: function(event){

    $("body").addClass("bodyNoOverflow");
    //existing code if any
},

beforeClose: function(event){

    $("body").removeClass("bodyNoOverflow");
    //existing code if any
},

-文档的这一部分揭示了为实现此目标而可以绑定的所有回调。。。你不想做溢出:隐藏,因为这隐藏了滚动条,并可能导致重新绘制(这是缓慢的)安德鲁!我看你对隐藏滚动条并导致重新绘制(因为你在这里的问题和下面的两个答案上发布了相同的东西3x),你有更好的解决方案吗?这也会隐藏滚动条并导致重新绘制这也会隐藏滚动条并导致重新绘制