兄弟姐妹在容器中划分匹配高度

时间:2012-10-03 20:38:47

标签: css

我在容器中有三个div:http://jsfiddle.net/fBe9y/

一个div有很多内容。如何获得内容较少的其他两个div来匹配最长div的高度?

我尝试将height: 100%添加到所有div,但它不起作用,因为height需要div.container,我不知道在渲染之前。

4 个答案:

答案 0 :(得分:18)

我建议您使用display: table-row;display: table-cell;。简而言之,您所做的是制作表格布局,但使用<div>标签,然后将它们设置为表格。

这比仅仅出于语义和可访问性原因使用表更好。

但总的来说,CSS并没有给你很多方法来以这种方式引用元素的兄弟姐妹。 <table>标记可以,但它会使屏幕阅读器和内容混淆。

如果您想要更多行,则会有更多.container <div>个,然后创建另一个<div>将它们全部包装起来,然后将其display: table;

因此,使用相同的HTML,此CSS可以满足您的需求:

.container
{
    display: table-row;
}

.tile
{
    display: table-cell;
    width: 100px;
    background: #eee;
    border: 1px solid black;
}​

请参阅 Fiddle

值得注意的是:display: table;等。是widely supported,IE在版本8之前没有添加支持。如果您打算为IE 7或更低版​​本支持此功能,您将被迫使用更复杂的方法,例如@Hristo's

答案 1 :(得分:14)

您可以使用flexbox解决此问题

.container{
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
}

.tile{
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
}

答案 2 :(得分:1)

这是一个非常常见的问题。看看这篇文章......它有所有的答案:

http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-css-no-hacks

现在,这是一个使用它的快速小提琴。尝试单击任何“Column#”文本元素以从文档中删除它们......列将很好地调整大小:)

http://jsfiddle.net/UnsungHero97/qUT3d/9/

HTML

<div id="container3">
    <div id="container2">
        <div id="container1">
            <div id="col1">Column 1</div>
            <div id="col2">Column 2</div>
            <div id="col3">Column 3</div>
        </div>
    </div>
</div>

CSS

#container3 {
    float:left;
    width:100%;
    background:green;
    overflow:hidden;
    position:relative;
}
#container2 {
    float:left;
    width:100%;
    background:yellow;
    position:relative;
    right:30%;
}
#container1 {
    float:left;
    width:100%;
    background:red;
    position:relative;
    right:40%;
}
#col1 {
    float:left;
    width:26%;
    position:relative;
    left:72%;
    overflow:hidden;
}
#col2 {
    float:left;
    width:36%;
    position:relative;
    left:76%;
    overflow:hidden;
}
#col3 {
    float:left;
    width:26%;
    position:relative;
    left:80%;
    overflow:hidden;
}​

答案 3 :(得分:0)

HTML

<div id="container">
  <div id="div1">1</div>
  <div id="div2">2</div>
  <div id="div3">3</div>
</div>

CSS

#container {
  display: flex;
  align-items: stretch;
}

#div1 {
  display: flex;
}

#div2 {
  display: flex;
}

#div3 {
  display: flex;
}

此“显示:flex;”和“ align-items:拉伸;”容器中的所有子div都应保持相同的高度,只要它达到所需的高度即可。