一尘不染

打开模式时防止BODY滚动

javascript

当我的网站上的Modal打开时,我希望我的身体在使用鼠标滚轮时停止滚动。

我试图在模式打开时调用下面的一段javascript,但没有成功

$(window).scroll(function() { return false; });

$(window).live('scroll', function() { return false; });

请注意,我们的网站已放弃了对IE6的支持,不过IE7 +需要兼容。


阅读 273

收藏
2020-05-01

共1个答案

一尘不染

在显示模式对话框时,Bootstrap会modal自动将类添加modal- open到主体,而在对话框隐藏时将其删除。因此,您可以将以下内容添加到CSS中:

body.modal-open {
    overflow: hidden;
}

您可能会争辩说,上面的代码属于Bootstrap CSS代码库,但这是将其添加到您的站点的简单解决方案。

该程序现已在Twitter Bootstrap 2.3.0版中停止工作-他们不再将此类添加modal-open到正文中。

一种解决方法是在要显示模式时将类添加到主体,并在关闭模式时将其删除:

$("#myModal").on("show", function () {
  $("body").addClass("modal-open");
}).on("hidden", function () {
  $("body").removeClass("modal-open")
});

看起来modal-open该类将在Bootstrap 3.0中返回,明确地是为了防止滚动:

在主体上重新引入.modal-open(因此我们可以在此处滚动滚动条)

2020-05-01