Ho riscontrato differenze di comportamento tra width
e flex-basis
che non sono in grado di spiegare con What are the differences between flex-basis and width?.Differenza tra larghezza e flex-base
.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 è l'esempio che illustra il problema che sto avendo. Mi aspetto che entrambe le righe abbiano lo stesso aspetto, tuttavia, quando si utilizza flex-basis
(riga 1), il contenitore flessibile (elemento .middle
) sembra ignorare la larghezza intrinseca del relativo elemento figlio (.inner
) e prende solo il testo in considerazione.
Questa differenza può essere osservata nelle ultime versioni di Chrome, FF e Safari (ma non in IE11/Edge).
Chiarimento: Non sto chiedendo perché IE11/Edge si comporta come fa. Il suo comportamento (in questo caso) in realtà mi sembra logico. Sto chiedendo perché c'è differenza in tutti gli altri browser.
Aggiornamento: Edge 13 si comporta proprio come IE11.
Questa è una scoperta interessante. Secondo [** spec **] (https: //drafts.csswg.org/css-flexbox/# flex-base-proprietà), non ci dovrebbero essere differenze di rendering in questa istanza tra 'width' e' flex-base'. Direi che è una stranezza del browser. Ancora più interessante, IE sembra avere il giusto comportamento, mentre Chrome e FF sono fuori luogo. Ciò solleva tutti i tipi di domande e sospetti :-) –
Questo mi ricorda [gli elementi flessibili nidificati non fanno crescere i genitori] (http://stackoverflow.com/q/36968138/1529630) – Oriol