23

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

一个 div 有很多内容。如何让div内容较少的其他两个 s 与最长的高度相匹配div

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

4

4 回答 4

23

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

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

但一般来说,CSS 并没有给你很多方法来引用元素的兄弟姐妹。标签确实如此,但随后<table>它混淆了屏幕阅读器和其他东西。

如果你想要更多的行,你会有更多.container <div>的 s,然后创建另一个<div>包装它们,并给它display: table;

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

.container
{
    display: table-row;
}

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

小提琴

注意:虽然display: table;等人。得到广泛支持,IE 直到版本 8 才添加支持。如果您计划为 IE 7 或更低版本支持此功能,您将被迫使用更复杂的方法,例如@Hristo 的

于 2012-10-03T20:42:03.330 回答
19

您可以使用 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;
}
于 2015-06-24T03:52:15.170 回答
4

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;' 和“对齐项目:拉伸;” 在容器中应该使所有子 div 具有相同的高度,只要它具有所需的高度。

于 2018-11-30T05:09:14.137 回答
1

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

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

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

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;
}​
于 2012-10-03T20:43:33.067 回答