我在容器中有两个元素,它们通过使用flex box并排放置。在第二个元素(.flexbox-2
)上,我在CSS中设置它的高度。然而,第一个元素(.flexbox-1
)将匹配.flexbox-2
的高度。我如何阻止.flexbox-1
匹配.flexbox-2
的高度,而只是保持其自然高度?
以下是我目前为止所拥有的(也可用as a jsFiddle)
.container {
display: -webkit-flex;
-webkit-flex-direction: row;
}
.flexbox-1 {
-webkit-flex: 1;
border: solid 3px red;
}
.flexbox-2 {
-webkit-flex: 2;
border: solid 3px blue;
height: 200px;
margin-left: 10px;
}
<div class="container">
<div class="flexbox-1">.flexbox-1</div>
<div class="flexbox-2">.flexbox-2</div>
</div>
6条答案
按热度按时间dauxcl2d1#
我知道这是一个老问题,但更好的解决方案是使用
flex-start
将flex项设置为与顶部对齐。wyyhbhjk2#
**这是一个旧的解决方案。**我的答案被这个new answer by Aaron using
align-self
取代。这是一个更好的解决方案,不依赖于CSS的怪癖。只要flex容器本身没有高度,就可以在第一个flex项上设置
height: 0%
。因为它没有高度可以从其父代继承,任何 * 百分比 * 高度都会导致它崩溃。然后,它将与其内容一起增长。示例
在这个例子中,我删除了
-webkit
前缀。只有Safari才真正需要它,并且前缀可以添加到无前缀版本的 * 上面 *。我还删除了flex-direction: row
,因为它是默认值。wljmcqd83#
你可以很容易地通过添加到父align-items来解决这个问题:灵活启动;
就这些
a14dhokn4#
将子对象的
height
设置为max-content
将防止它们缩小。ddhy6vgd5#
另一个选项是利用“col”元素和自动宽度特征,当flexbox方向是列时,其用作自动高度特征。这里有一个bootstrap 5的例子
参考:https://getbootstrap.com/docs/5.0/layout/grid/#equal-width
cnjp1d6j6#
我想评论@misterManSam的回答,但我没有足够的声誉。
它工作得很好,但我在Vercel上遇到了一些麻烦(也许,我在另一个版本中使用了node-sass),设置
我推荐
答案是一样的,但它在任何地方都有效。