我在容器中有三个div:http://jsfiddle.net/fBe9y/
一个div有很多内容。如何获得内容较少的其他两个div
来匹配最长div
的高度?
我尝试将height: 100%
添加到所有div
,但它不起作用,因为height
需要div.container
,我不知道在渲染之前。
答案 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/
<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>
#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都应保持相同的高度,只要它达到所需的高度即可。