ho creato un jsfiddle per dimostrare il problema qui:
http://jsfiddle.net/x0eo3aeo/2/Come impedire a un elemento flessibile di restringersi rispetto al suo contenuto?
HTML:
<div class="flexContainer">
<div class="flexCol1">aaa</div>
<div class="flexCol2"><div style="width:100px; background-color:yellow;">bbb</div></div>
<div class="flexCol3"><div style="width:250px; background-color:pink;">Hello world, some long text here to make this element stay at 250px while splitting onto multiple lines.</div></div>
</div>
CSS:
.flexContainer {
display: flex;
width: 100%;
flex-direction: row;
}
.flexCol1, .flexCol3 {
flex: 1;
background-color: green;
}
Firefox si comporta in realtà esattamente come voglio. Le colonne 1 e 3 flettono allo stesso modo fino al la larghezza della colonna 3 raggiunge la dimensione fissa del suo figlio div
e quindi solo la colonna 1 è flessa. Tuttavia, in Chrome, entrambe le colonne continuano a flettere in modo uniforme e il contenuto secondario della colonna 3 è in overflow.
C'è un modo per ottenere il comportamento in stile Firefox in modo cross-browser?
Belle idee, ma nessuno dei due ha funzionato per me. Potresti indicare i jsfiddles aggiornati in cui vengono implementate le tue idee? – Jez
In realtà dico una bugia; il 'min-width: -webkit-min-content;' l'ha risolto in Chrome, ma cosa succede in IE11? E inoltre, puoi indicare un jsfiddle dell'idea 'flex: 1 0' che funziona, per favore? – Jez
Ah - scusa, hai ragione, "flex: 1 0" non funziona. Stavo pensando erroneamente che flexCol3 avesse la sua base flessibile impostata su "auto", e che azzerando la base flessibile avrebbe impedito che si restringesse - ma no, la sua base flessibile è 0, dalla stenografia "flessibile". – dholbert