使用 CSS 转换
CSS 变换基于元素的大小,因此如果你不知道元素的高度或宽度,可以将它从相对容器的顶部和左侧绝对定位 50%并将其向左和向上平移 50%使其垂直和水平居中。
请记住,使用此技术,元素可能会在非整数像素边界处渲染,使其看起来模糊。请参阅 SO 中的此答案以获取解决方法。
HTML
<div class="container">
<div class="element"></div>
</div>
CSS
.container {
position: relative;
}
.element {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
交叉浏览器的兼容性
transform 属性需要旧版浏览器支持的前缀。Chrome <= 35,Safari <= 8,Opera <= 22,Android Browser <= 4.4.4 和 IE9 需要前缀。IE8 和旧版本不支持 CSS 转换。
以下是上一个示例的常见转换声明:
-webkit-transform: translate(-50%, -50%); /* Chrome, Safari, Opera, Android */
-ms-transform: translate(-50%, -50%); /* IE 9 */
transform: translate(-50%, -50%);
有关更多信息,请参阅 canIuse 。