打开模态时阻止背景滚动



我一直在努力解决这个问题,我几乎像在谷歌上找到的所有东西一样努力,但没有找到解决方案。打开模态时,如何阻止背景滚动?我尝试过的在Desktop版本上有效,但当我在iOS和Android上测试本地主机时,它不起作用,而且一直在滚动。

我试图通过隐藏主体来用jquery添加块背景,但这不起作用。我尝试的另一个是添加body.modal open{overflow:hidden;}。欢迎任何帮助,谢谢。

$("#popUpWindow").on("show", function () {
$("body").addClass("noscroll");
}).on("hidden", function () {
$("body").removeClass("noscroll")
});
#popUpWindow{
background: lightblue; 
}
body.modal-open{
overflow: hidden;
}
.noscroll { overflow: hidden;}
<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="https://netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
<div class="container">
<h2>Simulacron 3 is the story of a virtual city (total environment simulator) for marketing research, developed by a scientist to reduce the need for opinion polls. The computer-generated city simulation is so well-programmed, that, although the inhabitants have their own consciousness, they are unaware, except for one, that they are only electronic impulses in a computer.
The simulator's lead scientist, Hannon Fuller, dies mysteriously, and a co-worker, Morton Lynch, vanishes. The protagonist, Douglas Hall, is with Lynch when he vanishes, and Hall subsequently struggles to suppress his inchoate madness. As time and events unwind, he progressively grasps that his own world is probably not "real" and might be only a computer-generated simulation.</h2>
<h2>Simulacron 3 is the story of a virtual city (total environment simulator) for marketing research, developed by a scientist to reduce the need for opinion polls. The computer-generated city simulation is so well-programmed, that, although the inhabitants have their own consciousness, they are unaware, except for one, that they are only electronic impulses in a computer.
The simulator's lead scientist, Hannon Fuller, dies mysteriously, and a co-worker, Morton Lynch, vanishes. The protagonist, Douglas Hall, is with Lynch when he vanishes, and Hall subsequently struggles to suppress his inchoate madness. As time and events unwind, he progressively grasps that his own world is probably not "real" and might be only a computer-generated simulation.</h2>
<h2>Simulacron 3 is the story of a virtual city (total environment simulator) for marketing research, developed by a scientist to reduce the need for opinion polls. The computer-generated city simulation is so well-programmed, that, although the inhabitants have their own consciousness, they are unaware, except for one, that they are only electronic impulses in a computer.
The simulator's lead scientist, Hannon Fuller, dies mysteriously, and a co-worker, Morton Lynch, vanishes. The protagonist, Douglas Hall, is with Lynch when he vanishes, and Hall subsequently struggles to suppress his inchoate madness. As time and events unwind, he progressively grasps that his Simulacron 3 is the story of a virtual city (total environment simulator) for marketing research, developed by a scientist to reduce the need for opinion polls. The computer-generated city simulation is so well-programmed, that, although the inhabitants have their own consciousness, they are unaware, except for one, that they are only electronic impulses in a computer.
The simulator's lead scientist, Hannon Fuller, dies mysteriously, and a co-worker, Morton Lynch, vanishes. The protagonist, Douglas Hall, is with Lynch when he vanishes, and Hall subsequently struggles to suppress his inchoate madness. As time and events unwind, he progressively grasps that his own world is probably not "real" and might be only a computer-generated simulation.own world is probably not "real" and might be only a computer-generated simulation.</h2>
<h2>Simulacron 3 is the story of a virtual city (total environment simulator) for marketing research, developed by a scientist to reduce the need for opinion polls. The computer-generated city simulation is so well-programmed, that, although the inhabitants have their own consciousness, they are unaware, except for one, that they are only electronic impulses in a computer.
The simulator's lead scientist, Hannon Fuller, dies mysteriously, and a co-worker, Morton Lynch, vanishes. The protagonist, Douglas Hall, is with Lynch when he vanishes, and Hall subsequently struggles to suppress his inchoate madness. As time and events unwind, he progressively grasps that his Simulacron 3 is the story of a virtual city (total environment simulator) for marketing research, developed by a scientist to reduce the need for opinion polls. The computer-generated city simulation is so well-programmed, that, although the inhabitants have their own consciousness, they are unaware, except for one, that they are only electronic impulses in a computer.
The simulator's lead scientist, Hannon Fuller, dies mysteriously, and a co-worker, Morton Lynch, vanishes. The protagonist, Douglas Hall, is with Lynch when he vanishes, and Hall subsequently struggles to suppress his inchoate madness. As time and events unwind, he progressively grasps that his own world is probably not "real" and might be only a computer-generated simulation.own world is probably not "real" and might be only a computer-generated simulation.</h2>
<button type='button' class="btn btn-success" data-toggle="modal" data-target="#popUpWindow">Open Log In Window</button>

<div class="modal fade" id="popUpWindow">
<div class="modal-dialog">
<div class="modal-content">
<!-- header -->
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h3 class="modal-title">Login Form</h3>
</div>
<!-- body -->
<div class="modal-header">
<form role="form">
<div class="form-group">
<input type="email" class="form-control" placeholder="Email"/>
<input type="password" class="form-control" placeholder="Password" />
</div>
</form>
</div>
<!-- footer -->
<div class="modal-footer">
<button class="btn btn-primary btn-block">Log In</button>
</div>

</div>
</div>
</div>

</div>

由于您使用的是jQuery,只需在整个body上使用CSSoverflow: hidden;属性,这样整个body就不会滚动而不是.noscroll类,然后将弹出模态的overflow属性设置为overflow: auto;,这样模态的滚动就不会被禁用。但您也需要使用position: fixed;,因为没有它,在移动设备上滚动仍然是可能的。在弹出窗口关闭后,只需重置原始CSS属性即可获得正确的功能:

$("#popUpWindow").on("show", function () {
$("body").css("overflow", "hidden");
$("body").css("position", "fixed");
$("#popUpWindow").css("overflow", "auto");
}).on("hidden", function () {
$("body").css("overflow", "auto");
$("body").css("position", "initial");
});

希望能有所帮助!

最新更新