我正在使用Jquery对话框在页面顶部打开一个弹出窗口。
当我打开对话框时,我想要禁用一般页面滚动。
为了做到这一点,我在做:
当我打开对话框时,我想要禁用一般页面滚动。
为了做到这一点,我在做:
$('body').css({overflow:'hidden'});
当对话框打开时,和:
$('body').css({overflow:'auto'});
当对话框关闭时。
这是有效的,但是当滚动条被删除时,后面的内容向右移动,结果不太好。
我尝试了另一种方法,通过创建一个css类“noscroll”,如下所示:
body.noscroll { position: fixed; overflow-y: scroll; width: 100%; }
那么,而不是以前的js代码,我正在添加和删除这个类到对话框打开/关闭的身体。
现在这对滚动条有效,后面的内容不会向右移动,但是使用这种方法,后面的内容可以回到顶端。
解决方法
我已经做了一个非常简单的我的解决方案的例子。
你的弹出窗口应该在一个框中
<div id="shadow"> <div id="popup"> <a id='close' href="#">Close</a> </div>
然后把这些CSS放在根div上
#shadow{ display: none; position: fixed; top:0; bottom: 0; width: 100%; height:100%; background-color: rgba(0,0.6); }
固定位置是非常重要的,因为你不想看到白色的边框,它将采取完整的窗口宽度而不是身体。
那么有一点小诀窍
$('#open').click(function(e){ e.preventDefault() $('body').width($('body').width()); $('body').css('overflow','hidden'); $('#shadow').css('display','block'); }) $('#close').click(function(e){ e.preventDefault() $('body,#shadow').removeAttr('style') })
这里的目标是在取出滚动条之前取下身体宽度。您的内容将不会移动。
希望它有帮助!
对不起我的英语,不是我的本地语言。