Bootstrap 4 - 打开模式时的背景移动

Posted

技术标签:

【中文标题】Bootstrap 4 - 打开模式时的背景移动【英文标题】:Bootstrap 4 - Background move when I open a modal 【发布时间】:2018-12-27 16:31:17 【问题描述】:

你能看到这里吗:

https://live-example.bss.design/ (live example)

当我打开一个模态(单击顶部菜单上的注册,然后单击按钮)时,背景移动,因为模态隐藏了正文溢出。

我怎样才能避免这种情况?

【问题讨论】:

它正在移动,因为在打开模式时滚动条正在被移除。 是的,我知道...这就是我所说的“模态将正文溢出隐藏”的意思 css: html 溢出-y: 滚动; 不适用于 html 标签,实际上这发生在 body 标签上。所以使用这个 body.modal-open overflow: auto; 【参考方案1】:

实际上那个背景没有移动。当 Modal 打开时,它会应用样式

bodyoverflow:hidden;

所以滚动条被禁用。所以窗口扩大了,不仅仅是背景 正在移动。

如果您不喜欢,请使用以下代码,

body.modal-open 
    overflow: auto;
 

【讨论】:

如果刷新示例,当模态很长时会导致双滚动条:live-example.bss.design 第二个滚动条出现是因为您的弹出内容。太长了 是的...当您在表单上放置长模式时,这是一种正常的行为。 您可以将“modal-lg”与“modal-dialog”一起使用,这样您就可以获得很大的弹出窗口。 是的,我知道,但仍然需要滚动条【参考方案2】:

您可以使用以下代码移除背景移动

.modal-open, body overflow: inherit !important;

【讨论】:

当模态很长时会导致双滚动条【参考方案3】:

"modal-open" 类被添加到 body

您需要更改添加 modal-open 的 js。我知道这是一种奇怪的行为,但你必须这样做:)

拦截模态点击以显示并删除类到正文添加到另一个元素:

我。 Modal首先添加到Body中,然后删除并添加到另一个元素中

$('#signUpModal').on('shown.bs.modal', function (e) 
    $(body).removeClass('modal-open');
    $('#otherElement').addClass('modal-open');
);

二。然后还拦截模式的关闭并添加第二次删除的执行:

$('#signUpModal').on('hidden.bs.modal', function (e) 
   $('#otherElement').removeClass('modal-open');
);

你会没事的:)

【讨论】:

有点骇人听闻,但我试过了,但仍然不像我期望的那样移动。 live-example.bss.design 你错过了另一件事,伙计! padding-right: 17px; 也在body标签内的样式中添加。处理它;)

以上是关于Bootstrap 4 - 打开模式时的背景移动的主要内容,如果未能解决你的问题,请参考以下文章

打开 Bootstrap 模式弹出窗口时启用背景

如何在小于 600 像素的屏幕上“打开”页面加载时的 Bootstrap 下拉菜单

如何设置Dev c++ 编写代码时的背景界面为黑色?

什么 CSS 属性会禁用 Bootstrap 4 模式背景中的活动?

Bootstrap 3下拉菜单在子菜单焦点上更改背景

可拖动的 ngx-bootstrap 模态只有身体移动和背景固定