简体   繁体   English

打开模式时阻止背景滚动

[英]Block background from scrolling when open a modal

I've been trying to solve this problem and I tried like almost everything I found on google but I did not find a solution. 我一直在尝试解决此问题,我尝试了几乎所有在google上找到的内容,但没有找到解决方案。 How can I block the background from scrolling when the modal is opened? 打开模式时如何阻止背景滚动? What I've tried works on Desktop version but when I do a localhost and test it on both iOS and Android does not work and it keeps scrolling. 我尝试过的内容在桌面版本上有效,但是当我在本地主机上进行测试并在iOS和Android上均无法正常运行时,它一直在滚动。

I tried to add block the background with jquery by hiding the body but this is not working.Another one that I tried is adding body.modal-open{overflow:hidden;}. 我试图通过隐藏主体来使用jquery添加背景块,但这不起作用。我尝试的另一种做法是添加body.modal-open {overflow:hidden;}。 Any help would be welcomed, thanks. 任何帮助都将受到欢迎,谢谢。

 $("#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> 

Since you are using jQuery, simply use the CSS overflow: hidden; 由于您使用的是jQuery,因此只需使用CSS overflow: hidden; property on the entire body , that way the whole body will not scroll instead of your .noscroll class, and then set the overflow property of your pop-up modal to overflow: auto; 整个body属性,这样整个body将不会滚动,而不是您的.noscroll类,然后将弹出模式的overflow属性设置为overflow: auto; , that way the modal's scrolling will not be disabled. ,这样就不会禁用模式的滚动。 But you will also need to use position: fixed; 但是您还需要使用position: fixed; because without it, scrolling is still possible on mobile devices. 因为没有它,在移动设备上仍然可以滚动。 And after the pop-up is closed, just reset the original CSS properties for proper functionality: 在关闭弹出窗口后,只需重置原始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");
});

Hope that helps! 希望有帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM