我遇到了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的行爲方式如此。它的行爲(在這種情況下)對我來說似乎是合乎邏輯的。我在問爲什麼所有其他瀏覽器都有差異。
更新:邊緣13的行爲與IE11類似。
這是一個有趣的發現。根據[** spec **](https://drafts.csswg。org/css-flexbox /#flex-basis-property),這個實例在'width'和'flex-basis'之間不應該有任何渲染差異。我會說這是一個瀏覽器的怪癖。更有趣的是,IE瀏覽器看起來行爲正確,而Chrome和FF則不合格。這引發了各種問題和懷疑:-) –
這讓我想起[嵌套的柔性元素不會使父親長大](http://stackoverflow.com/q/36968138/1529630) – Oriol