<分区>
<分区>
我想将一个位于另一个 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;
}
如您所见,我现在使用的方法取决于#innerDiv
的宽度和高度。如果宽度/高度发生变化,我将不得不修改 margin-top
和 margin-left
值。是否有任何通用解决方案可用于使 #innerDiv
居中而不依赖其大小?
我发现使用 margin: auto
可以将 #innerDiv
水平对齐到中间。但是垂直对齐呢?
最佳答案
垂直居中对齐可行,但您必须在父元素上使用 table-cell
并在子元素上使用 inline-block
。
此解决方案不适用于 IE6 和 7。
您的方法是更安全的方法。
但由于您使用 CSS3 和 HTML5 标记了您的问题,我认为您不介意使用现代解决方案。
经典方案(表格布局)
这是我原来的回答。它仍然可以正常工作,并且是获得最广泛支持的解决方案。表格布局将 impact your rendering performance所以我建议您使用一种更现代的解决方案。
测试于:
HTML
<div class="cn"><div class="inner">your content</div></div>
CSS
.cn {
display: table-cell;
width: 500px;
height: 500px;
vertical-align: middle;
text-align: center;
}
.inner {
display: inline-block;
width: 200px; height: 200px;
}
现代解决方案(转换)
因为变换是 fairly well supported now有一种更简单的方法。
CSS
.cn {
position: relative;
width: 500px;
height: 500px;
}
.inner {
position: absolute;
top: 50%; left: 50%;
transform: translate(-50%,-50%);
width: 200px;
height: 200px;
}
♥ 我最喜欢的现代解决方案 (flexbox)
我开始越来越多地使用flexbox its also well supported now这是迄今为止最简单的方法。
CSS
.cn {
display: flex;
justify-content: center;
align-items: center;
}
更多示例和可能性: Compare all the methods on one pages
关于html - 将一个 div 在另一个 div 中垂直居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40960426/