在不知道CSS高度的情况下垂直对齐?

时间:2010-11-09 17:47:18

标签: html css

我通常会使用绝对定位并将顶部设置为50%,并使用负边距 - 顶部(儿童身高的一半)垂直居中。在这种情况下,由于子元素的高度会有所不同,因此无效。

那么有没有办法在div中垂直居中div而不知道孩子的身高?

4 个答案:

答案 0 :(得分:5)

以下jquery函数垂直居中,假设您定位的项目已经是绝对位置且父位置相对

$.fn.vAlign = function () {
    return this.each(function () {
        $(this).css('top', '50%').css('margin-top', -Math.ceil($(this).height() / 2) + "px");
    });
};

查看行动 - http://jsfiddle.net/vqbMU/2/

<强>更新

支持css转换的浏览器的纯CSS解决方案(IE9 +)http://caniuse.com/#search=transform

.align-v {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
}

答案 1 :(得分:3)

您可以使元素显示:table-cell并put vertical-align:center。我通常不建议使用display:table-但这是我认为最简单的解决方案

答案 2 :(得分:1)

你也可以使用JavaScript动态地轻松抓住孩子的身高,甚至可以使用像jQuery这样的JS库轻松抓住孩子的身高。

根据你的个人资料,你对jQuery有一定的了解,所以我会建议这条路线。如果您需要帮助,请告诉我。

答案 3 :(得分:-1)

使用填充顶部,填充底部垂直居中元素,有或没有高度定义...