【发布时间】:2019-05-06 08:55:56
【问题描述】:
如果没有视觉演示,这将相对难以解释,因此请参阅底部的 jsfiddle。
设置是两个列方向的 flexbox 容器,它们具有相对高度(即其父级的百分比)。两个容器都有一个固定的页眉和页脚。一个容器的高度总是另一个容器的两倍。较大的容器有两个孩子作为它的“内容”。较小的容器有一个子“内容”元素。
我希望较大容器的第一个内容元素始终与较小容器中的单个内容元素具有相同的高度,而不管容器的大小。对于任何给定的尺寸,我可以指定一个与元素匹配的 flex-grow,但它不适用于每种尺寸。
这可以使用 flexbox 吗?
<div id="card1" class="card">
<div class="header"></div>
<div class="content"></div>
<div class="content2"></div>
<div class="footer"></div>
</div>
<div id="card2" class="card">
<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>
</div>
html, body {height: 100%;}
body {
display: flex;
}
#card1 {
height: 80%;
background-color: green;
}
#card2 {
height: 40%;
background-color: green;
}
.card {
width: 200px;
display: flex;
flex-direction: column;
padding: 20px;
margin: 4px;
}
.header {
width: 100%;
height: 24px;
background-color: lightgreen;
}
.content {
width: 100%;
background-color: lightseagreen;
flex: 1;
}
.content2 {
width: 100%;
background-color: limegreen;
flex: 1;
}
.footer {
width: 100%;
height: 24px;
background-color: lightgreen;
}
如果 flex 方向是 row 而我说的是宽度而不是高度,这个问题应该是一样的。
【问题讨论】:
-
只是想清楚一点:如果 card1 的高度总是 card2 的两倍,而内容块的高度总是相同的。你的代码看起来,这是否意味着 content2 块可以比 content 块稍高一些?
-
是的,我希望 content2 块能填满剩余的空间——我忘了提。
-
内容高度是响应式的还是固定的?比如card2或者1中的内容发生变化,是不是总是需要和另外一个的高度匹配?
-
好吧,默认情况下,内容高度是响应式的,因为它是使用 flexbox 在响应式容器内定位的……但是您可以假设比率始终与我想的相同。