防止弹性项目高度扩展以匹配其他弹性项目

Tom*_*ley 68 html css flexbox

我在容器内有两个元素,它们通过使用弹性盒并排放置.在第二个元素(.flexbox-2)上,我在CSS中设置它的高度.但是,第一个元素(.flexbox-1)将匹配高度.flexbox-2.我如何停止.flexbox-1匹配高度.flexbox-2,而只是保持其自然高度?

这是我到目前为止(也可用作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;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="flexbox-1">.flexbox-1</div>
  <div class="flexbox-2">.flexbox-2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron 116

我知道这是一个老问题,但更好的解决方案是将flex项目设置为与顶部对齐使用flex-start.

/* Default Styles */
.container {
  display: flex;
}
.flexbox-2 {
  flex: 2;
  border: solid 3px blue;
  height: 200px;
  margin-left: 10px;
}
 .flexbox-1 {
  flex: 1;  
  align-self: flex-start;  
  border: solid 3px red;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="flexbox-1">"align-self: flex-start;"</div>
  <div class="flexbox-2">.flexbox-2</div>
</div>
Run Code Online (Sandbox Code Playgroud)

  • `align-items:center,baseline,flex-start,flex-end'也正常工作 (5认同)
  • 请注意,您也可以在父元素上执行'align-items:flex-start'以防止所有子元素增长 - 在我的情况下需要. (4认同)
  • 谢谢@MrGood 接受的答案已经超过 3 年了,当时是实现预期结果的好方法。 (2认同)
  • 这是必需的,因为“ align-items”的默认值为“ stretch”。 (2认同)

mis*_*Sam 46

这是一个旧的解决方案. 我的回答被Aaron使用的align-self这个新答案所取代.这是一个更好的解决方案,不依赖于CSS怪癖.

只要flex容器本身没有高度,就可以height: 0%在第一个flex项目上设置.因为它没有从其父级继承的高度,所以任何百分比高度都会导致它崩溃.然后它会随着内容的增长而增长.

在这个例子中,我删除了-webkit前缀.这只是Safari真正需要的,前缀可以添加到非前缀版本之上.我也删除了,flex-direction: row因为它是默认值.

.container {
  display: flex;
}
.flexbox-1 {
  flex: 1;  
  height: 0%;  
  border: solid 3px red;
}
.flexbox-2 {
  flex: 2;
  border: solid 3px blue;
  height: 200px;
  margin-left: 10px;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="flexbox-1">.flexbox-1</div>
  <div class="flexbox-2">.flexbox-2</div>
</div>
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以通过添加到父align-items: flex-start;来轻松解决这个问题

就这样

  • 欢迎来到堆栈溢出。在使用现有答案添加五年前问题的答案时,重要的是要解释您正在解决的问题的新方面以及您的答案如何工作以及为什么应该使用它。正确的代码格式也确实有帮助,因为现在您在句子中只有粗体文本,但没有提供有关将其添加到哪个 css 规则的上下文。 (2认同)