Bootstrap modal关闭后滚动条消失
Bootstrap modal makes scrollbar disappear after closing
我在 Whosebug 上阅读了很多关于此主题的解决方案/技巧,但 none 似乎对我有用。
我正在使用模式登录 Meteor(例如,使用 Facebook 登录服务)。并在登录成功时触发回调。
我把它放在我的回调中以关闭模式 -
$('#modalSignIn').modal('toggle');
一切正常,只是关闭后页面没有滚动条。
我得到的一个解决方案来自 here -
.modal-open {
overflow: scroll;
}
这部分起作用是因为即使模式关闭我也有滚动条。但是,右侧似乎有大约 15px 的填充(前一个滚动条应该在的位置)。在重复打开和关闭时,填充不断增加。
编辑:
这是我的导航模板 -
<template name="_navMenu">
{{#if isLoggedIn}}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">My Profile <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">My Profile</a></li>
<li><a href="#">Edit Profile</a></li>
<li class="divider"></li>
<li><a href="#" id="logout-button">Logout</a></li>
</ul>
</li>
{{else}}
<li><a href="#" data-toggle="modal" data-target="#modalSignUp">SIGN UP</a></li>
<li><a href="#" data-toggle="modal" data-target="#modalSignIn">LOG IN</a></li>
<li><button class="btn btn-primary nav-button visible-xs-inline-block">Text Here</button></li>
<!-- Modal -->
<div class="modal fade" style="overflow-y: scroll;" id="modalSignIn" tabindex="-1" role="dialog" aria-labelledby="SignInLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
{{> atFormModal state="signIn"}}
</div>
</div>
</div>
</div>
</div>
{{/if}}
</template>
你可以尝试这个修复
$(document).on('hidden.bs.modal', '.modal', function () {
$('.modal:visible').length && $(document.body).addClass('modal-open');
});
我发现了这个问题,如果有人犯了同样的错误,我想 post 它 - 我在 {{#if }}
语句中有模态,这导致它们在用户登录后被删除。我刚刚从 if 中取出模态,现在它工作正常 -
<template name="_navMenu">
{{#if isLoggedIn}}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">My Profile <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">My Profile</a></li>
<li><a href="#">Edit Profile</a></li>
<li class="divider"></li>
<li><a href="#" id="logout-button">Logout</a></li>
</ul>
</li>
{{else}}
<li><a href="#">HOW IT WORKS</a></li>
<li><a href="#" data-toggle="modal" data-target="#modalSignUp">SIGN UP</a></li>
<li><a href="#" data-toggle="modal" data-target="#modalSignIn">LOG IN</a></li>
<li><button class="btn btn-primary nav-button visible-xs-inline-block">Text Here</button></li>
{{/if}}
<!-- Modal -->
<div class="modal fade" style="overflow-y: scroll;" id="modalSignIn" tabindex="-1" role="dialog" aria-labelledby="SignInLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
{{> atFormModal state="signIn"}}
</div>
</div>
</div>
</div>
</div>
</template>
我遇到了同样的问题。
Bootstrap在body
中添加modal-open
class,但在模态框关闭时不移除。
我解决了只是添加回调:
$('body').removeClass('modal-open');
将此添加到您的正文标签
风格="overflow:auto;"
$('body').removeClass("modal-open");
// Bootstrap 在正文中添加modal-open class,但在模态框关闭时不会移除。
通过将以下内容添加到您的 CSS 规则中来解决滚动条问题。
我遇到了同样的问题,在阅读了上面的所有答案后,他们并没有解决我的问题,所以我决定思考并得出这样一个事实,即强制执行 CSS 规则将确保获得预期的结果。
body { padding-right: 0!important }
这是为我做的:
$("body").css("overflow", "auto");
我在 Whosebug 上阅读了很多关于此主题的解决方案/技巧,但 none 似乎对我有用。
我正在使用模式登录 Meteor(例如,使用 Facebook 登录服务)。并在登录成功时触发回调。
我把它放在我的回调中以关闭模式 -
$('#modalSignIn').modal('toggle');
一切正常,只是关闭后页面没有滚动条。
我得到的一个解决方案来自 here -
.modal-open {
overflow: scroll;
}
这部分起作用是因为即使模式关闭我也有滚动条。但是,右侧似乎有大约 15px 的填充(前一个滚动条应该在的位置)。在重复打开和关闭时,填充不断增加。
编辑:
这是我的导航模板 -
<template name="_navMenu">
{{#if isLoggedIn}}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">My Profile <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">My Profile</a></li>
<li><a href="#">Edit Profile</a></li>
<li class="divider"></li>
<li><a href="#" id="logout-button">Logout</a></li>
</ul>
</li>
{{else}}
<li><a href="#" data-toggle="modal" data-target="#modalSignUp">SIGN UP</a></li>
<li><a href="#" data-toggle="modal" data-target="#modalSignIn">LOG IN</a></li>
<li><button class="btn btn-primary nav-button visible-xs-inline-block">Text Here</button></li>
<!-- Modal -->
<div class="modal fade" style="overflow-y: scroll;" id="modalSignIn" tabindex="-1" role="dialog" aria-labelledby="SignInLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
{{> atFormModal state="signIn"}}
</div>
</div>
</div>
</div>
</div>
{{/if}}
</template>
你可以尝试这个修复
$(document).on('hidden.bs.modal', '.modal', function () {
$('.modal:visible').length && $(document.body).addClass('modal-open');
});
我发现了这个问题,如果有人犯了同样的错误,我想 post 它 - 我在 {{#if }}
语句中有模态,这导致它们在用户登录后被删除。我刚刚从 if 中取出模态,现在它工作正常 -
<template name="_navMenu">
{{#if isLoggedIn}}
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">My Profile <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">My Profile</a></li>
<li><a href="#">Edit Profile</a></li>
<li class="divider"></li>
<li><a href="#" id="logout-button">Logout</a></li>
</ul>
</li>
{{else}}
<li><a href="#">HOW IT WORKS</a></li>
<li><a href="#" data-toggle="modal" data-target="#modalSignUp">SIGN UP</a></li>
<li><a href="#" data-toggle="modal" data-target="#modalSignIn">LOG IN</a></li>
<li><button class="btn btn-primary nav-button visible-xs-inline-block">Text Here</button></li>
{{/if}}
<!-- Modal -->
<div class="modal fade" style="overflow-y: scroll;" id="modalSignIn" tabindex="-1" role="dialog" aria-labelledby="SignInLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="row">
<div class="col-xs-8 col-xs-offset-2">
{{> atFormModal state="signIn"}}
</div>
</div>
</div>
</div>
</div>
</template>
我遇到了同样的问题。
Bootstrap在body
中添加modal-open
class,但在模态框关闭时不移除。
我解决了只是添加回调:
$('body').removeClass('modal-open');
将此添加到您的正文标签 风格="overflow:auto;"
$('body').removeClass("modal-open");
// Bootstrap 在正文中添加modal-open class,但在模态框关闭时不会移除。
通过将以下内容添加到您的 CSS 规则中来解决滚动条问题。
我遇到了同样的问题,在阅读了上面的所有答案后,他们并没有解决我的问题,所以我决定思考并得出这样一个事实,即强制执行 CSS 规则将确保获得预期的结果。
body { padding-right: 0!important }
这是为我做的:
$("body").css("overflow", "auto");