将div垂直居中放置在另一个div中

我想将添加到另一个div内的div居中

<div id="outerDiv">

<div id="innerDiv">

</div>

</div>

这是我当前正在使用的CSS。

    #outerDiv{

width: 500px;

height: 500px;

position:relative;

}

#innerDiv{

width: 284px;

height: 290px;

position:absolute;

top: 50%;

left:50%;

margin-top: -147px;

margin-left: -144px;

}

如您所见,我现在使用的方法取决于width和height的值innerDiv。如果width / height发生变化,我将不得不修改margin-

topand值。margin-left是否有任何通用解决方案可用于innerDiv始终将居中对齐它的大小?

我发现使用margin:auto可以将innerDiv水平分配到中间,但是垂直分配中间呢?

回答:

垂直对齐中间作品,但是您将不得不table-cell在父元素和inline-block子元素上使用。

此解决方案无法在IE6和7中使用。

您的解决方案是更安全的方法。

但是由于您使用CSS3和HTML5标记了问题,所以我一直认为您不介意使用现代解决方案。

这是我最初的答案。它仍然可以正常工作,并且是获得最广泛支持的解决方案。表布局将影响您的渲染性能,因此我建议您使用一种更现代的解决方案。


  • FF3.5 +
  • FF4 +
  • Safari 5+
  • Chrome 11+
  • IE9 +


<div class="cn"><div class="inner">your content</div></div>

.cn {

display: table-cell;

width: 500px;

height: 500px;

vertical-align: middle;

text-align: center;

}

.inner {

display: inline-block;

width: 200px; height: 200px;

}


由于现在已经很好地支持转换,因此有一种更简单的方法。

.cn {

position: relative;

width: 500px;

height: 500px;

}

.inner {

position: absolute;

top: 50%; left: 50%;

transform: translate(-50%,-50%);

width: 200px;

height: 200px;

}


我现在开始越来越多地使用flexbox,它也得到了很好的支持,这是迄今为止最简单的方法。

.cn {

display: flex;

justify-content: center;

align-items: center;

}

以上是 将div垂直居中放置在另一个div中 的全部内容, 来源链接: utcz.com/qa/425425.html

回到顶部