当我在页面中触发模态视图时,它会导致滚动条消失。 这是一个令人讨厌的效果,因为当模态视图移动/消失时,背景页面开始移动。 有没有办法解决这个问题?
当我在页面中触发模态视图时,它会导致滚动条消失。 这是一个令人讨厌的效果,因为当模态视图移动/消失时,背景页面开始移动。 有没有办法解决这个问题?
这是一个特性,当你展示模态框时,类modal-open
会添加到HTML的body
中,并在隐藏时移除。
这使得滚动条消失,因为Bootstrap CSS如下所示:
.modal-open {
overflow: hidden;
}
您可以通过指定来覆盖此设置。.modal-open {
overflow: scroll;
}
在你自己的 CSS 中。
templateUrl
内的<style></style>
中简单地包含上述CSS,以便不会影响应用程序中的其他模态框。 - davidkonrad我认为使用inherit比scroll更好,因为当您打开模态框时,它将始终带有滚动条,但是当您没有滚动条时,将会出现同样的问题。所以我只是这样做:
.modal-open {
overflow: inherit;
}
最好使用overflow-y:scroll并从body中去除padding,Bootstrap模态框会在页面body上添加padding。
.modal-open {
overflow:hidden;
overflow-y:scroll;
padding-right:0 !important;
}
兼容IE浏览器:IE浏览器默认情况下会执行相同的操作。
padding-right: 0 !important;
确实非常重要。在我的情况下,即使滚动条启用,它仍会在模态框后面的原始页面上留下一个不可见的滚动条,并且仍然将页面向左移动,这正是我想要消除的。非常感谢您的答案! - Yongpadding-right: 0
修复了它。 - Ibrahim Farooq我使用了
.modal-open {
overflow-y: scroll;
}
在这种情况下,您避免显示水平滚动条。
谢天谢地我看到了这篇文章!在使用自己的关闭链接关闭窗口时,我一直在苦苦寻找如何恢复滚动条。我尝试了CSS的建议,但它并没有正常工作。阅读后,我发现当你显示模态框时,HTML body会添加class modal-open,并在隐藏它时移除该class。(引用@flup)
我想出了一个使用jquery的解决方案,所以如果其他人遇到同样的问题,上面的建议不起作用,可以参考我的方法--
<script>
jQuery(document).ready(function () {
jQuery('.closeit').click(function () {
jQuery('body').removeClass('modal-open');
});
});
</script>
data-dismiss="modal"
属性,而不需要像这样自定义任何内容。当单击该链接时,Bootstrap将执行所有适当的关闭操作。 - nollidge我刚刚在使用 Bootstrap 模态框的“特性”。看起来 .modal
类有 overflow-y:auto;
属性。当模态框本身变得太高时,模态框包装器就会有自己的滚动条。
如果你总想要一个滚动条(设计师经常这样做)。首先设置 body:
body {
overflow-y:scroll;
}
然后处理 .modal-open
.modal-open .modal {
overflow-y:scroll; /* Force a navbar on .modal */
}
.modal-open .topnavbar-wrapper {
padding-right:17px; /* Noticed that right aligned navbar content got overlapped by the .modal scrollbar */
}
在这种情况下,请勿触摸主体上的滚动条禁用
本页面上的所有其他答案都会使我的内容跳动。
注意!
尽管此解决方案一直适用于我,但昨天当模态框可拖动且太大以至于无法垂直适合屏幕时,我使用此修复程序遇到了问题。这可能与我添加的 position:sticky
元素有关?
.modal-open {
padding-right: 0 !important;
}
html {
overflow-y: scroll !important;
}
.modal-body {
max-height: calc(100vh - 210px);
overflow-y: auto;
}
.modal-open {
overflow: hidden;
overflow-y: scroll;
padding-right: 0 !important;
}
.modal-open {
overflow: scroll;
}
只是反过来而已...
.modal-open {
overflow: hidden;
}
Bootstrap模态框在打开时会添加填充,因此您可以在自己的CSS中尝试此代码
.modal-open {
padding: 0 !important;
}