如何使三列高度相同?

时间:2011-10-21 21:58:15

标签: css

我已经查看过这个问题的十几个问题和答案,但对我的情况似乎没有一个最好的答案。

我有一个包含三个垂直列的页面(http://awesomealbums.info/?1062/chris-cornell)。我希望这些列看起来是相同的高度,无论它们是否有足够的内容。

这三列是:

1)左侧的导航栏 2)中间的内容列 3)右侧的广告栏

实现这一目标的CSS / div选项是什么?

4 个答案:

答案 0 :(得分:3)

我最近找到了PERFECT解决方案。这确实需要使用JavaScript / jQuery。基本上,一旦页面加载,获得所有div的自然高度。选择每个div的最大自然高度。将所有div设置为该高度。

<style>

body {
    font-size: .9em;
}
#ProductWrapper {
    width: 620px;   
    float: left;
}
.ProductDiv {
    width: 200px;
    float: left;
    background: rgb(240,240,240);
    margin: 1px;
    overflow: auto;
}

<div id="ProductWrapper">
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf</div>
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf </div>
<div class="ProductDiv" data-nat-height=''>asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf asdfasdfasdf </div>
</div>




<script type="text/javascript">
$(document).ready(function() {

// GET MAX NAT HEIGHT
var MaxHeight = 200;
$(".ProductDiv").each(function() {
    var Height = $(this).height();
    if (Height > MaxHeight) {
        MaxHeight = Height;  
    }
    $(this).attr("data-nat-height", Height);
});
// SET TO MAX HEIGHT
$(".ProductDiv").css("height", MaxHeight+"px");

});
</script>

答案 1 :(得分:1)

答案 2 :(得分:1)

使用负边距'黑客'。

为每列提供-9999的边距底部和9999的填充底部,以及100%的高度。我不确定这是否是正确的方式。但是这个想法是,当一个容器扩展时,其他容器也会因100%高度而扩展,填充和边距工作使得边距隐藏在100%高度之外 - 谷歌为'负边距列'。

Alterantivly使用css-discuss来查看所有业界公认的构建3列布局的方法,有流动的例子 - http://css-discuss.incutio.com/wiki/Three_Column_Layouts

答案 3 :(得分:0)

单向(因为你的列无论如何都是固定宽度)是使用定位(绝对是精确的)。使用此方法,您可以将css规则更改为以下内容:

#PagePad {
    background: white;
    position: relative;
}

#Column_1_3 {
    border-left: 1px #7D7D7D SOLID;
    width: 175px;
    text-align: right;
    padding: 10px;
    background: white;
}

#Column_2_3 {
    width: 540px;
    border-left: 1px #7D7D7D SOLID;
    border-right: 1px #7D7D7D SOLID;
    float: left;
    padding: 20px;
    background: white;
    margin: 0px;
    position: absolute;
    margin-left: 196px;
    bottom: 0px;
    top: 0px;
}

#Column_3_3 {
    width: 180px;
    border-right: 1px #7D7D7D SOLID;
    background: white;
    float: left;
    text-align: center;
    margin-left: 778px;
    position: absolute;
    top: 0px;
    bottom: 0px;
}

不确定它是如何跨浏览器的。