nat*_*nes 554 javascript css modal-dialog twitter-bootstrap
我直接从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>
Run Code Online (Sandbox Code Playgroud)
body {
padding-top: 50px;
}
.my-module {
position: fixed;
top: 0;
left: 0;
}
Run Code Online (Sandbox Code Playgroud)
任何想法为什么这是或我可以做些什么来解决这个问题?
Muh*_*uhd 602
如果模态容器具有固定或相对位置或位于具有固定或相对位置的元素内,则会发生此行为.
确保将模态容器及其所有父元素定位为修复问题的默认方式.
以下是几种方法:
</body>.position:从模态及其祖先中删除CSS属性,直到问题消失.但是,这可能会改变页面的外观和功能.小智 361
问题与父容器的定位有关.在显示之前,您可以轻松地从这些容器中"移动"模态.如果你show使用js使用你的模态,这里是怎么做的:
$('#myModal').appendTo("body").modal('show');
Run Code Online (Sandbox Code Playgroud)
或者,如果您使用按钮启动模态,请删除.modal('show');并执行以下操作:
$('#myModal').appendTo("body")
Run Code Online (Sandbox Code Playgroud)
这将保留所有正常功能,允许您使用按钮显示模态.
小智 163
我尝试了上面提供的所有选项,但没有使用它们.
做了什么:将.modal-backdrop的z-index设置为-1.
.modal-backdrop {
z-index: -1;
}
Run Code Online (Sandbox Code Playgroud)
Sid*_*Sid 152
另外,请确保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>
Run Code Online (Sandbox Code Playgroud)
好:
<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>
Run Code Online (Sandbox Code Playgroud)
Pie*_*rVK 112
我也遇到过这个问题,直到我发现我实际上不需要背景时,没有一个解决方案适合我.您可以使用以下代码轻松删除背景.
<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>
Run Code Online (Sandbox Code Playgroud)
注意:该data-backdrop属性需要设置为false(其他选项:static或true).
And*_*ter 57
我打开它后,通过给模态窗口提供一个高z-index值来实现它.例如:
$("#myModal").modal("show");
$("#myModal").css("z-index", "1500");
Run Code Online (Sandbox Code Playgroud)
Kri*_*ndu 31
@Muhd提供的解决方案是最好的方法.但是如果您遇到无法选择更改页面结构的情况,请使用此技巧:
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-backdrop="false" style="background-color: rgba(0, 0, 0, 0.5);">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"
aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">...</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
这里的诀窍是data-backdrop="false" style="background-color: rgba(0, 0, 0, 0.5);" 删除默认背景并通过设置对话框本身的背景颜色和一些alpha来创建一个虚拟背景.
更新1: 正如@Gustyn指出的那样,单击背景并不会按预期关闭对话框.所以要实现这一点,你必须添加一些java脚本代码.以下是如何实现这一目标的一些示例.
$('.modal').click(function(event){
$(event.target).modal('hide');
});
Run Code Online (Sandbox Code Playgroud)
Roh*_*han 15
但是这很晚但是这里是一个通用的解决方案 -
var checkeventcount = 1,prevTarget;
$('.modal').on('show.bs.modal', function (e) {
if(typeof prevTarget == 'undefined' || (checkeventcount==1 && e.target!=prevTarget))
{
prevTarget = e.target;
checkeventcount++;
e.preventDefault();
$(e.target).appendTo('body').modal('show');
}
else if(e.target==prevTarget && checkeventcount==2)
{
checkeventcount--;
}
});
Run Code Online (Sandbox Code Playgroud)
访问此链接 - Bootstrap 3 - 使用固定侧边栏获取详细信息时,模态消失在背景下方.
小智 10
另一种方法是从.modal-backdropbootstrap.css中删除z-index .这将导致背景与身体的其他部分处于同一水平(它仍会褪色),并且您的模态将位于顶部.
.modal-backdrop 看起来像这样
.modal-backdrop {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: #000000;
}
Run Code Online (Sandbox Code Playgroud)
小智 10
只需添加两行CSS:
.modal-backdrop{z-index: 1050;}
.modal{z-index: 1060;}
Run Code Online (Sandbox Code Playgroud)
.modal-backdrop应该有1050的值来设置它在导航栏上.
小智 10
我找到的最简单的解决方案,适用于我的所有案例,是类似帖子中的答案:
这里是:
.modal {
background: rgba(0, 0, 0, 0.5);
}
.modal-backdrop {
display: none;
}
Run Code Online (Sandbox Code Playgroud)
基本上,不使用原始背景。相反,您使用模态作为背景。结果是它的外观和行为与原版完全一样。它避免了 z-indexes 的所有问题(对我来说,将 z-index 更改为 0 解决了这个问题,但是我的导航菜单在模式和背景之间产生了一个新问题)并且很简单。
感谢@Jevin O. Sewaruth 发布了原始答案。
最简单的解决方案是将模式对话框移到任何容器之外,然后在<body>元素下声明它:
<body>
<div>
...
<div>
<div class="modal">
... modal dialog here
</div>
</body>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过这个解决方案并且它对我有用。
我只是设置:
#myModal {
z-index: 1500;
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理....
对于原始问题:
.my-module {
z-index: 1500;
}
Run Code Online (Sandbox Code Playgroud)
当在背景甚至手风琴标题之类的东西中使用CSS中的渐变之类的东西时,通常会遇到这个问题.
不幸的是,修改或覆盖核心Bootstrap CSS是不可取的,并且可能导致不必要的副作用.最不具侵入性的方法是添加,data-backdrop="false"但您可能会注意到淡入淡出效果不再按预期工作.
在最近发布的Bootstrap之后,版本3.3.5似乎解决了这个问题,没有不必要的副作用.
下载:https://github.com/twbs/bootstrap/releases/download/v3.3.5/bootstrap-3.3.5-dist.zip
请务必包含3.3.5中的CSS文件和JavaScript文件.
嗨,我有同样的问题,然后我意识到,当你使用bootsrap 3.1与旧版本的bootsrap(2.3.2)不同,模式的html结构已更改!
你必须用模态对话框和模态内容包装模态标题的主体和页脚
<div class="modal hide fade">
<div class="modal-dialog">
<div class="modal-content">
**here goes the modal header body and footer**
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
我有这个问题,修复它的最简单方法是在模态对话框div上添加大于1040的z-index:
<div class="modal-dialog" style="z-index: 1100;">
Run Code Online (Sandbox Code Playgroud)
我相信bootstrap会创建一个div模式背景淡入淡出,在我的情况下有z-index 1040,所以如果你把模态对话框放在这个上面,它就不应该变灰了.
这将覆盖所有模态,而不会弄乱任何动画或预期行为。
$(document).on('show.bs.modal', '.modal', function () {
$(this).appendTo('body');
});
Run Code Online (Sandbox Code Playgroud)
我通过添加data-backdrop="false"到 div解决了我的问题:
<div class="modal fade" id="exampleModalCenter" data-backdrop="false" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle" aria-hidden="true">
.....
Run Code Online (Sandbox Code Playgroud)
在您的导航栏navbar-fixed-top需要z-index = 1041
以及如果您使用bootstarp-combined.min.css也更改 .navbar-fixed-top, .navbar-fixed-bottom z-index to 1041
小智 5
以上建议的解决方案都没有为我工作,但这种技术解决了这个问题:
$('#myModal').on('shown.bs.modal', function() {
//To relate the z-index make sure backdrop and modal are siblings
$(this).before($('.modal-backdrop'));
//Now set z-index of modal greater than backdrop
$(this).css("z-index", parseInt($('.modal-backdrop').css('z-index')) + 1);
});
Run Code Online (Sandbox Code Playgroud)
小智 5
将z-index .modal设置为最高值
例如,.sidebarwrapper的z-index为1100,因此将.modal的z-index设置为1101
.modal {
z-index: 1101;
}
Run Code Online (Sandbox Code Playgroud)
小智 5
我有一个更轻,更好的解决方案..
它可以通过一些额外的CSS样式轻松解决..
隐藏类.modal-backdrop(从Bootstrap.js自动生成)
.modal-backdrop
{
display:none;
visibility:hidden;
position:relative
}
Run Code Online (Sandbox Code Playgroud)将背景设置.modal为半透明的黑色背景图像.
.modal
{
background:url("http://bin.smwcentral.net/u/11361/BlackTransparentBackground.png")
// translucent image from google images
z-index:1100;
}
Run Code Online (Sandbox Code Playgroud)如果您的要求需要模态位于元素内而不是</body>标记附近,这将最有效.
在我的情况下解决它,在我的样式表中添加:
.modal-backdrop{
z-index:0;
}Run Code Online (Sandbox Code Playgroud)
使用google调试器,可以检查元素BACKDROP并修改属性.祝你好运.
| 归档时间: |
|
| 查看次数: |
357048 次 |
| 最近记录: |