Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Javascript Jquery模式弹出导致页面滚动_Javascript_Jquery_Html_Css - Fatal编程技术网

Javascript Jquery模式弹出导致页面滚动

Javascript Jquery模式弹出导致页面滚动,javascript,jquery,html,css,Javascript,Jquery,Html,Css,因此,我有一个模式窗口,导致页面向下滚动。它在url中添加了#登录框,但该div id不是一个固定位置。我曾想过在html中添加一个div,但这不起作用,因为我的菜单很粘,这会导致他们滚动到该div所在的任何位置 然后单击导航菜单中的“登录”。你会明白我在说什么。然后向下滚动并再次单击,oyu将看到它向下滚动,无论您在页面上的何处 以下是模态窗口的相关JS: // Load the modal window $('a.login-window').click(function() {

因此,我有一个模式窗口,导致页面向下滚动。它在url中添加了#登录框,但该div id不是一个固定位置。我曾想过在html中添加一个div,但这不起作用,因为我的菜单很粘,这会导致他们滚动到该div所在的任何位置

然后单击导航菜单中的“登录”。你会明白我在说什么。然后向下滚动并再次单击,oyu将看到它向下滚动,无论您在页面上的何处

以下是模态窗口的相关JS:

// Load the modal window
$('a.login-window').click(function() {

    // Get the value in the href of our button.
    var login_id = $(this).attr('href');

    // Add our overlay to the body and fade it in.
    $('body').append('<div id="overlay"></div>');
    $('#overlay').fadeIn(300);

    // Fade in the modal window.
    $(login_id).fadeIn(300);

    // center our modal window with the browsers.
    var margin_left = ($(login_id).width() + 24) / 2;
    var margin_top = ($(login_id).height() + 24) / 2;

    $(login_id).css({
        'margin-left' : -margin_left,
        'margin-top' : -margin_top
    });

    return false;
});

要停止页面上的滚动,请创建此javascript函数(用纯javascript编写):

然后将此类添加到css中:

.stopScrolling{
  height: 100%;
  overflow:hidden;
}

如果要防止滚动,请调用toggleScrolling函数,如果要重新启动,请再次调用该函数。我知道您正在使用JQuery,但您应该能够将它与普通JS混合使用。

在片段链接上向下滚动窗口的插件导致了这种情况。如果您取消隐藏登录菜单,您可以看到窗口正在向下滚动到其原始位置。由于这不是默认的浏览器行为,
return false
event.preventDefault()
不会停止此行为。您需要查看是否有一个类可以添加到此链接,当单击此链接时,该类将阻止插件滚动

另一个选项是不要对登录窗口的id使用
href
属性。将其设置为
href=“javascript:void(0)”
或只是
href=“#”
。然后使用如下数据属性:
data target=“loginMenu”
并更新javascript以从该属性获取id:

var login_id = $(this).attr('data-target');

#overlay div是什么样式的?特别是身高。我不知道你的意思。你是说css是什么意思?或者?请参阅底部更新的帖子。:)谢谢#我想重叠会得到文档的高度。如果你可以尝试在你的js函数中给它加上高度,然后加上窗口高度。你有可能写出js吗?我不确定我是否完全明白。再次感谢!
.stopScrolling{
  height: 100%;
  overflow:hidden;
}
var login_id = $(this).attr('data-target');