我经常想要在另一个CSS盒子内垂直和水平地居中一个盒子。最简单的方法满足以下约束条件是什么?
你可以看到这个jsbin片段中的效果。然而,尽管可行,这种方法感觉像是极度过度设计,并且不适用于大于容器的内容。如何在CSS中居中物品?
- 盒子应该精确居中,而不是大致。
- 该技术应在现代浏览器和IE版本(返回到8)中起作用
- 该技术不应依赖于明确知道居中内容或包含框的宽度或高度。
- 我通常知道容器比内容大,但支持更大的内容(然后对称溢出)会很好...
- 容器的基础内容仍必须能够响应点击和悬停,除非被居中内容遮挡
我目前使用4个嵌套的div来实现这一点,css如下:
.centering-1 {
position:absolute;
top:0; left:0; right:0; bottom:0;
text-align:center;
visibility:hidden;
}
.centering-2 {
height:100%;
display:inline-table;
}
.centering-3 {
display:table-cell;
vertical-align:middle;
}
.centering-content {
visibility:visible;
}
你可以看到这个jsbin片段中的效果。然而,尽管可行,这种方法感觉像是极度过度设计,并且不适用于大于容器的内容。如何在CSS中居中物品?
display: table
和display: table-cell
+vertical-align: middle
是最简单和最无麻烦的纯 CSS 方法。您可以简化CSS/HTML标记,无需像5个嵌套的div那样。在处理未知尺寸时,这确实是不使用Javascript的主要方法。 - Ennui