我在一个容器中有三个 div:http: //jsfiddle.net/fBe9y/
一个 div 有很多内容。如何让div
内容较少的其他两个 s 与最长的高度相匹配div
?
我尝试添加height: 100%
到所有div
s,但它不起作用,因为这需要height
on div.container
,在渲染之前我不知道。
我在一个容器中有三个 div:http: //jsfiddle.net/fBe9y/
一个 div 有很多内容。如何让div
内容较少的其他两个 s 与最长的高度相匹配div
?
我尝试添加height: 100%
到所有div
s,但它不起作用,因为这需要height
on div.container
,在渲染之前我不知道。
我建议使用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 的。
您可以使用 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;
}
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 具有相同的高度,只要它具有所需的高度。
这是一个很常见的问题。看看这篇文章......它有所有的答案:
http://matthewjamestaylor.com/blog/equal-height-columns-cross-browser-css-no-hacks
现在,这里有一个快速使用它的方法。尝试单击任何“列#”文本元素以将它们从文档中删除...列将很好地调整大小:)
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;
}