【发布时间】:2017-11-01 01:56:21
【问题描述】:
在 Chrome 上,我遇到了我不理解的 Flexbox 行为。当同时也是 flex 容器的 flex 子级具有 flex: 1 0 0px 时,它会折叠自身及其内容。
即使flex-basis 设置为0px,据我所知,将flex-grow 设置为1(flex 速记中的第一个数字)应该会使项目在需要时增长。
在我的示例中,.bottom-container 将 height 设置为 300px。 height 在 Firefox 上受到尊重,但在 Chrome 上折叠为 0px。为什么?
.top-container {
display: flex;
flex-flow: column nowrap;
}
.middle-container {
flex: 1 0 0px;
display: flex;
flex-flow: column nowrap;
}
.bottom-container {
flex: 0 0 auto;
height: 300px;
}
<div class="top-container">
<div class="middle-container">
<div class="bottom-container"></div>
</div>
<div class="middle-container">
<div class="bottom-container"></div>
</div>
</div>
【问题讨论】:
-
Flex: 1 0 0 ;告诉flex-basis:0;,我想说,chrome 的行为是正确的 :( -
@G-Cyr: 但是没有设置
flex-grow: 1应该让项目在需要时可以增长?有时我需要设置flex-basis: 0以确保所有 flex 子节点的大小完全相同。 -
它不连贯,将其调整为零并允许它同时增长,使用 auto 作为 flex-basis 值,然后每个 flex 设置都按预期工作;)就像:宽度:0;最大宽度:100%;逻辑有冲突
-
@G-Cyr:是的,
flex: 1 0 0肯定没有明确声明它想要完成什么。但这是一个有效的声明——基本大小为 0px,然后增长到使用所有剩余空间——我不明白为什么它不起作用。 -
flexbox 规范中没有关于浏览器应如何解释
flex-basis值的不同单位的指导。即使您是正确的,我也不推荐无单位值,它是一个有效的声明。
标签: css google-chrome flexbox