Bootstrap 模式出现在背景下

IT技术 javascript css twitter-bootstrap modal-dialog
2021-02-04 17:53:08

我直接从 Bootstrap 示例中使用了我的模态代码,并且只包含了 bootstrap.js(而不是 bootstrap-modal.js)。但是,我的模态出现在灰色淡入淡出(背景)下方并且不可编辑。

这是它的样子:

隐藏在背景后面的模态

这拨弄一个重现此问题的一种方法。该代码的基本结构是这样的:

<body>
    <p>Lorem ipsum dolor sit amet.</p>    

    <div class="my-module">
        This container contains the modal code.
        <div class="modal fade">
            <div class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-body">Modal</div>
                </div>
            </div>
        </div>
    </div>
</body>
body {
    padding-top: 50px;
}

.my-module {
    position: fixed;
    top: 0;
    left: 0;
}

任何想法为什么会这样或我可以做些什么来解决这个问题?

6个回答

如果模态容器具有固定或相对位置,或者位于具有固定或相对位置的元素内,则会发生此行为。

确保以默认方式定位模态容器及其所有父元素以解决问题。

这里有几种方法可以做到这一点:

  1. 最简单的方法是移动模态 div,使其位于任何具有特殊定位的元素之外。一个好地方可能就在结束 body 标签之前</body>
  2. 或者,您可以position:从模态及其祖先中删除CSS 属性,直到问题消失。但是,这可能会改变页面的外观和功能。
@Muhd 你如何确保它及其所有父元素都以默认方式定位?
2021-03-19 17:53:08
我不明白这个答案。Bootstrap 示例显示了一个模态 div,其中包含沿“modal”、“modal-fade”等线的多个类。在 .modal 内部,它设置 position:fixed,在“modal-body”内部,它设置 position:relative。那么,当 .modal 设置 position:fixed 时,移动模态容器将如何改变任何东西?
2021-04-02 17:53:08
我仍然有这个问题。我在之前添加它</body>并且body没有任何position样式属性。还有其他想法吗?
2021-04-03 17:53:08
接得好。仅供参考,不仅仅是“固定”,父母的“亲戚”位置也会导致这个问题
2021-04-06 17:53:08
首选使用选项一:“只需移动模态 div,使其位于任何具有特殊定位的元素之外”。谢谢
2021-04-10 17:53:08

问题与父容器的定位有关。您可以轻松地将模态从这些容器中“移出”,然后再显示。如果您show使用 js 对模态进行操作,请执行以下操作

$('#myModal').appendTo("body").modal('show');

或者,如果您使用按钮启动模态,请删除.modal('show');并执行以下操作:

$('#myModal').appendTo("body") 

这将保留所有正常功能,允许您使用按钮显示模态。

使用该通用事件处理程序使@leandrotk 解决方案适用于您可以在页面中拥有的所有模式 $('.modal-dialog').parent().on('show.bs.modal', function(e){ $(e.relatedTarget.attributes['data-target'].value).appendTo('body'); })
2021-03-14 17:53:08
从 Leandrotk 的答案中,只需将 #myModal 更改为 .modal 即可看起来像这样:$('.modal').appendTo("body")。这将适用于所有模态,因为它们具有默认类模态。
2021-03-18 17:53:08
当您确实无法修复 CSS 定位时,这非常有效。谢谢 :)
2021-03-29 17:53:08
@EugenevanderMerwe - 它不再从 body 中的父元素继承任何 css。
2021-04-02 17:53:08
仍然与 bootstrap5 相关,谢谢!
2021-04-03 17:53:08

我尝试了上面提供的所有选项,但没有使用这些选项使其正常工作。

什么起作用了:将 .modal-backdrop 的 z-index 设置为 -1。

.modal-backdrop {
  z-index: -1;
}
谢谢!这是 BS3 上的错误吗?
2021-03-12 17:53:08
如果您使用的主题具有许多不同的 z 索引,这将不起作用。例如,将背景设置为-1会导致它出现页面上其他元素(如面板)的后面但是将其设置为3高于除模态弹出窗口之外的所有内容。
2021-03-24 17:53:08
也可以确认只有这个选项有效!谢谢!
2021-03-30 17:53:08
这非常有效,并且是迄今为止最简单的解决方案。我用了z-index: 0;
2021-04-09 17:53:08
在用尽上面评分较高的答案中的建议后,我发现这也是最快的方法。在我的情况下,将带有 modal-dialog 类的 div 设置为 1060 的 z-index 将其弹出到覆盖层的前面。如果您使用导航栏,您将希望将模态移动到叠加层上方而不是相反的方向,否则您的导航栏可能会弹出叠加层的顶部......混乱会导致......
2021-04-10 17:53:08

另外,请确保 BootStrap css 和 js 的版本是相同的。不同的版本也可以使模态出现在背景下:

例如:

坏的:

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>

好的:

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"></script>
谢谢!我从 3.3.5 升级到 3.3.7 并且有效。
2021-03-12 17:53:08
Malcor 没问题,我花了很多时间才弄清楚这个错误。正如我们在 14 年看到的,现在是 16 年,错误仍然存​​在。实际上这不是错误,但是在引导程序中作者应该将其添加到他们的文档或其他内容中。
2021-03-20 17:53:08
我的也是这个问题,不同版本
2021-03-27 17:53:08
刚刚遇到同样的问题,相同版本的样式表解决方案似乎对每个人都有帮助!谢谢
2021-03-29 17:53:08
同样的交易在这里,我们改为生成我们的 SASS 并完全忘记了 js 文件本身。
2021-04-02 17:53:08

我也遇到过这个问题,在我发现我实际上不需要背景之前,没有一个解决方案对我有用。您可以使用以下代码轻松删除背景。

<div class="modal fade" id="createModal" data-backdrop="false">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4>Create Project</h4>
            </div>
            <div class="modal-body">Not yet made</div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
        </div>
    </div>
</div>

注意:该data-backdrop属性需要设置为false其他选项statictrue)。

仔细阅读所有解决方案后,我发现这是当今版本的 bootstrap 和 jQuery 中最明智的解决方案。谢谢你。
2021-03-26 17:53:08
完美的 !!!挣扎了一天……你又救了我一天。再次感谢.. +1 和欢呼
2021-03-30 17:53:08
杰出的!我还需要使用 bootstrap - 不知道为什么我的所有其他 Bootstrap 功能都可以正常工作,但我需要 require 使模态工作。
2021-04-02 17:53:08
一个很好的解决方案!尽管背景有利于用户体验
2021-04-05 17:53:08
谢谢!这个问题有超过 140k 的浏览量,我不明白为什么 bootstrap 不能解决这个问题。哦,好吧,干杯。
2021-04-09 17:53:08