【发布时间】:2016-11-08 17:12:33
【问题描述】:
我遇到了 width 和 flex-basis 之间的行为差异,What are the differences between flex-basis and width? 无法解释。
.outer {
display: flex;
background: yellow;
padding: 10px;
}
.middle {
display: flex;
flex-shrink: 0;
background: red;
padding: 10px;
}
.inner {
flex-basis: 258px;
flex-shrink: 0;
display: flex;
flex-grow: 0;
background: green;
}
.inner2 {
width: 258px;
flex-shrink: 0;
display: flex;
flex-grow: 0;
background: green;
}
<div class="outer">
<div class="middle">
<div class="inner">
hello
</div>
</div>
</div>
<div class="outer">
<div class="middle">
<div class="inner2">
hello
</div>
</div>
</div>
Here 是说明我遇到的问题的示例。我希望两行看起来相同,但是,当使用 flex-basis(第 1 行)时,flex 容器(.middle 元素)似乎忽略了其子元素(.inner 元素)的内在宽度,并且只采用考虑到文本。
在最新版本的 Chrome、FF 和 Safari 中可以观察到这种差异(但在 IE11/Edge 中没有)。
澄清:我不是在问为什么 IE11/Edge 的行为方式如此。它的行为(在这种情况下)在我看来实际上是合乎逻辑的。我在问为什么所有其他浏览器都存在差异。
更新:Edge 13 的行为就像 IE11。
【问题讨论】:
-
该问题在副本中已接受答案的“浏览器错误”部分中进行了解释。
-
正如我在对我的问题的回复中指出的那样,差异是由浏览器错误解释的。您所指的答案并未涵盖这一点,因此我认为我的问题不是重复的。