垂直对齐div与自动高度div相关

时间:2012-01-27 12:30:34

标签: css html vertical-alignment

我正在尝试制作与自动高度div相关的垂直对齐div 这有点难以解释所以我有截图可以解释一切:

enter image description here

橙色 div是容器 蓝色 div是主容器内的第二个容器 绿色 div是垂直对齐 div,应该与蓝色对齐。

我不知道如何使这项工作。我希望它是跨浏览器(ie6 +,ff& chrome)。

非常感谢!

2 个答案:

答案 0 :(得分:2)

对于这个答案,我假设蓝色和绿色div都有动态高度

为了计算绿色 div的正确偏移,我们可以使用CSS。 CSS不允许我们使用另一个元素的数据来定位元素。

相反,我们需要自己计算偏移量,这需要客户端语言。是时候拥抱Javascript了。为了方便我们,我将使用jQuery,因为它使用真正的甜蜜语法为您做了很多工作。

因此,我们需要找出如何计算偏移量。首先,我们需要知道 blue 元素的中心。足够简单:blue.height / 2。接下来,当绿色 div的顶部与<的实际中心对齐时,我们需要计算绿色 div应该向上多少strong>蓝色 div。这基本上是绿色 div高度的一半,对吧?这为我们提供了下一个公式:(blue.height / 2) - (green.height / 2)

好吧,我们把它放在javascript中!

var center = $('div.blue').outerHeight(true) / 2; // this is the blue div
var offset = center - $('div.green').height() / 2;

最后,设置偏移量:

$('div.green').css({
    'margin-top': margin
});

很酷的理论,但我确信你希望看到它的实际效果。您可以看到演示here


编辑:

哦是的,我忘了提到jQuery是一个跨浏览器的框架,支持非常非常古老的浏览器..阅读所有相关内容here

答案 1 :(得分:1)

请参阅: http://jsfiddle.net/thirtydot/aeFrH/

<强> CSS:

#container {
    width: 748px;
    background: orange;
}
#container-inside {
    width: 500px;
    background: cyan;
}
#aligned {
    width: 248px;
    background: green;
}
#container-inside, #aligned {
    display: inline-block;
    *display: inline;
    zoom: 1;
    vertical-align: middle;
}

<强> HTML:

<div id="container">
    <div id="container-inside">
        Some<br />
        content<br />
        is<br />
        in<br />
        here.<br />
    </div><div id="aligned">
        Aligned.
    </div>
</div>