CSS 3列液体布局动态相同高度列

时间:2013-10-05 19:52:09

标签: css multiple-columns fluid-layout

我想知道如何使液体(15%,70%,15%)3列css布局具有动态相等高度列,其中每列动态匹配最长列的高度(换句话说:根据内容每列,如果第1列长于2和3,那么第2列和第3列应自动与第1列相同的高度。有没有办法实现这一点,我看过圣杯:http://alistapart.com/article/holygrail和它说它不适用于相同高度的列。我想知道我是否可以修改我的css代码来做到这一点。

CSS代码:

/*    Generated by http://www.cssportal.com    */

/*@import url("/robotics/css/reset.css");*/

html,body {
    background:url(background.jpg') no-repeat center center fixed;
    -webkit-background-size: cover; /* For WebKit*/
    -moz-background-size: cover;    /* Mozilla*/
    -o-background-size: cover;      /* Opera*/
    background-size: cover;         /* Generic*/
    font-family: Verdana, Arial, Helvetica, sans-serif;
    /*font-size: 13px;*/
    color:#FFFFFF;
    text-align:center;


}
ul {
text-align:center;
margin-left: -40px;
}
ul li {
    display:block;
font-size:10pt;
padding: 0px 15px 0px 15px;
}
ul li a{
margin: 0 auto;
}
ul li a:link {
color:#fff;
text-decoration:none;
}
ul li a:visited {
color:#fff;
text-decoration:none;
}
ul li a:hover{
color:#fff;
text-decoration:none;
}
ul li a:active{
color:#fff;
text-decoration:none;
}


p {
font-size: 10pt;
    padding: 10px;
}

#wrapper {
    width: 100%;
    min-width: 768px;
    /*max-width: 900px;*/
    margin: 0 auto;
}

#headerwrap {
    width: 100%;
    float: left;
    margin: 0 auto;
}

#header {
    height: 100px;
    /*border-radius: 10px;*/
    /*border: 1px solid #FFFFFF;*/
    margin: 5px;
}
#header img {
width: 70%;
    height: 100%;
float:left;
margin-left:15%;    

}
#contentliquid {
    float: left;
    width: 100%;
}

#contentwrap {
    margin-left: 15%;
    margin-right: 15%;
    float:left;
    width:70%;

}

#content {
    border-radius: 10px;
    border: 1px solid #FFFFFF;
    margin: 5px;
    height: 500px;
}

#leftcolumnwrap {
    width: 15%;
    margin-left:-100%;
    float: left;

}

#leftcolumn {
    border-radius: 10px;
    border: 1px solid #FFFFFF;
    margin: 5px;height: 500px;
}

#rightcolumnwrap {
    width: 15%;
    margin-left: -15%;
    float: left;
}

#rightcolumn {
    border-radius: 10px;
    border: 1px solid #FFFFFF;
    margin: 5px;height: 275px;
}

#footerwrap {
    width: 100%;
    float: left;
    margin: 0 auto;
    clear: both;
}

#footer {
    height: 100px;
    border-radius: 10px;
    border: 1px solid #FFFFFF;
    margin: 5px;
}

HTML页面:

<html>

<head>
    <link rel="stylesheet" type="text/css" href="page.css">
    <title>Sample</title>
</head>
<body>
<div id="wrapper">
<div id="headerwrap">
<div id="header">
    <p>This is the header.</p>
</div>
</div>
<div id="contentliquid"><div id="contentwrap">
<div id="content">
    <p>This is the center column. Please make me the same height as everyone else!</p>
</div>
</div></div>
<div id="leftcolumnwrap">
<div id="leftcolumn">
    <p>This is the left column. Please make me the same height as everyone else!</p>
</div>
</div>
<div id="rightcolumnwrap">
<div id="rightcolumn">
    <p>This is the right column. Please make me the same height as everyone else!</p>
</div>
</div>
<div id="footerwrap">
<div id="footer">
    <p>This is the footer.</p>
</div>
</div>
</div>

有没有办法动态地使所有列的高度相同?

2 个答案:

答案 0 :(得分:3)

您应该尝试使用display: table-cell;(这需要将父元素设置为display: table;表格元素始终共享其容器的高度,并且其容器(如果未另行设置)将始终具有它最大的孩子的身高。

查看这个小提琴的例子:

http://jsfiddle.net/kLMtb/

你的html可能还需要一些重新格式化,我在这个例子中改变了一些东西,所以看一看。首先,需要将中间列放在html的左右列之间。

看看这个有关css表显示属性的解释:

http://ajaxian.com/archives/display-table

答案 1 :(得分:0)

我知道有两种方法可以达到相同的高度列。

1)CSS tables

<强> FIDDLE

标记:

<div id="header">
    <p>This is the header.</p>
</div>


<div class="wpr">
    <div id="leftcolumn">
        <p>This is the left column. Please make me the same height as everyone else!</p>
    </div>
    <div id="contentliquid">
        <p>Some content</p>
    </div> 

    <div id="rightcolumn">
        <p>This is the right column. Please make me the same height as everyone else!</p>
    </div>
</div>
<div id="footer">
    <p>This is the footer.</p>
</div>

CSS

#header {
    height: 100px;
    background: orange;
}
.wpr
{
    display:table;
}
#leftcolumn
{
    width: 200px;
    background: aqua;
    display:table-cell;
}
#rightcolumn
{
    width: 200px;
    background: pink;
    display:table-cell;
}

#contentliquid {
    background: yellow;
    overflow:hidden;
    display:table-cell;
}

#footer
{
    clear:both;
    background: green;
}

2)Faux columns

需要带有repeat-y的背景图像(阅读上面的文章)。

这样的事情:

background: #ccc url(../images/bg_birch_800.gif) repeat-y 50% 0;