我正在使用带有jQuery的$.blockUI来显示一个模式对话框。HTML如下所示:
<div id="progressDialogue" class="mp_modalpopup">
<div class="mp_container">
<div class="mp_header">
<span id="pd_header_text" class="mp_msg">Please wait..</span>
</div>
<div class="mp_body">
<img src="ajax-loader.gif" style="text-align:center" alt="loading" />
</div>
</div>
</div>CSS看起来像这样:
.mp_modalpopup
{
font-family: arial,helvetica,clean,sans-serif;
font-size: small;
padding: 2px 3px;
bottom: 50%;
right: 50%;
position: absolute;
width: 400px;
z-index:999;
}
.mp_container
{
width: 400px;
border: solid 1px #808080;
border-width: 1px 1px;
left: 50%;
position: relative;
top: 50%;
}
/* removed mp_header, mp_body, mp_msg CSS for brevity */这将很好地在页面的中心呈现在其他HTML的顶部。
然而,如果我在.mp_modalpopup CSS类中设置了display:none,然后使用$.blockUI使其可见,在IE8中对话框垂直居中,但在页面外的对话框左半部分对齐,而在Google Chrome和Firefox中对话框根本看不到(但blockUI可以工作,因为页面变灰了)。
这是blockUI javascript:
$.blockUI.defaults.css = {};
$.blockUI({
message: $('#progressDialogue'),
overlayCSS: { backgroundColor: '#000', opacity: 0.1 },
css: {backgroundColor: '#00f', color: '#100'}
});为什么会发生这种情况?
发布于 2010-03-26 02:57:31
之所以会发生这种情况,是因为blockUI也试图将你的<div>居中。如果你从你的CSS中移除所有的定位,它应该可以工作。
删除此命令:
bottom: 50%;
right: 50%;
position: absolute;还有这个
left: 50%;
position: relative;
top: 50%;或者,您可以禁用blockUI居中,如下所示:
$.blockUI({
centerX: false,
centerY: false,
message: $('#progressDialogue'),
overlayCSS: { backgroundColor: '#000', opacity: 0.1 },
css: {backgroundColor: '#00f', color: '#100'}
});发布于 2011-05-01 06:50:33
实际上,我刚刚找到了一个非常简单的解决方案。
如果阻止了一个元素而不是整个页面,blockUI会提供使用centerX和centerY的选项。
我阻塞了html元素,仅此而已。我的div是水平和垂直居中的。我不希望它垂直居中,所以我将centerY设置为false,并在CSS中将其设置为top:'5%',如下所示。还要确保在blockUI css中设置了元素的宽度。
$('html').block({ message: $('#layOver'),
centerX: true,
centerY: false,
css: {
top: '5%',
width: '720px',
height: 'auto',
cursor: 'null',
border: 'none',
textalign: 'center',
backgroundColor: 'auto',
},
overlayCSS: {
opacity: 0.4 ,
cursor: 'null',
}
});https://stackoverflow.com/questions/2518465
复制相似问题