首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我的div不能正确地居中?

问为什么我的div不能正确地居中?
EN

Stack Overflow用户
提问于 2010-03-26 02:52:59
回答 2查看 7K关注 0票数 3

我正在使用带有jQuery的$.blockUI来显示一个模式对话框。HTML如下所示:

代码语言:javascript
复制
<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看起来像这样:

代码语言:javascript
复制
.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:

代码语言:javascript
复制
$.blockUI.defaults.css = {};

$.blockUI({ 
    message: $('#progressDialogue'), 
    overlayCSS: { backgroundColor: '#000', opacity: 0.1 },
    css: {backgroundColor: '#00f', color: '#100'} 
});

为什么会发生这种情况?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-26 02:57:31

之所以会发生这种情况,是因为blockUI也试图将你的<div>居中。如果你从你的CSS中移除所有的定位,它应该可以工作。

删除此命令:

代码语言:javascript
复制
bottom: 50%;
right: 50%;
position: absolute;

还有这个

代码语言:javascript
复制
left: 50%;
position: relative;
top: 50%;

或者,您可以禁用blockUI居中,如下所示:

代码语言:javascript
复制
$.blockUI({ 
    centerX: false, 
    centerY: false, 
    message: $('#progressDialogue'), 
    overlayCSS: { backgroundColor: '#000', opacity: 0.1 },
    css: {backgroundColor: '#00f', color: '#100'} 
});
票数 5
EN

Stack Overflow用户

发布于 2011-05-01 06:50:33

实际上,我刚刚找到了一个非常简单的解决方案。

如果阻止了一个元素而不是整个页面,blockUI会提供使用centerX和centerY的选项。

我阻塞了html元素,仅此而已。我的div是水平和垂直居中的。我不希望它垂直居中,所以我将centerY设置为false,并在CSS中将其设置为top:'5%',如下所示。还要确保在blockUI css中设置了元素的宽度。

代码语言:javascript
复制
$('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',
    } 
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2518465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档