我应该如何将 div 在垂直和水平方向上准确居中?

How should i center exactly a div both vertically and horizontally?

我是 CSS 的新手,但我尝试了不同的方法,但就是无法让我的 div 垂直居中。

Parent :

#ModalScroll{
    position:absolute;
    top:0;
    left:0;
    z-index:1001; 
    height:1px;
    width:1px;
    overflow:hidden;
    display:none;
    font-size:100%;
    text-align:left;
}

Child :

.ModalDialog{
    border:1px solid #3C4749;
    background-color:#FFF;
    margin:0 auto 0 auto;
    display:none;
    font-size: 12px;
    box-sizing: border-box; 
    width: 280px;
    height: 160px; 
    position: absolute;
    left: 50%;
    top: 50%;
    margin: -80px 0 0 -140px;
}

我不知道 jQuery 中的解决方案是否应该更好,但我更喜欢 CSS 中的解决方案。

您是否使用了 firebug 以确保您的 css 得到充分利用? (也许另一个 CSS 重载了您项目的某些属性...)

position:absolute; /*it can be fixed too*/
left:0; right:0;
top:0; bottom:0;
margin:auto;

应该可以解决问题(如 Center a DIV horizontally and vertically 中所述) 也许尝试在每个属性中添加“!important”...

编辑:这是带有“!重要”标记的 css:

position:absolute !important;
left:0 !important;
right:0 !important;
top:0 !important;
bottom:0 !important;
margin:auto !important;

试试这个:

HTML

<div class="divContent">
    content goes here
</div>

Css

.divContent {
    width: 200px;
    height: 300px;
    border: 1px solid red;
    position:absolute;
    left:0;
    right:0;
    top:0;
    bottom:0;
    margin:auto;
}

这是您问题的代码,

HTML代码:


<div class="maindiv">
    <p class="hdiv">JSFIDDLE V</p>
</div>
<br>
<div class="maindivh">
    <p class="hdih">JSFIDDLE H</p>
</div>

CSS代码:

.maindiv {   position:relative; border:1px solid #cfcfcf; height:50px; width:200px; }

.hdiv {width:200px; text-align:center; height:50px;}

.maindivh { position:relative; border:1px solid #cfcfcf; height:150px; width:200px; }

.hdih { vertical-align:middle; display:table-cell; line-height:150px; text-align:center; width:200px; }

demo