Ich habe Unterschiede im Verhalten zwischen width
und flex-basis
festgestellt, die ich nicht durch What are the differences between flex-basis and width? erklären kann.Unterschied zwischen Breite und Flex-Basis
.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 ist das Beispiel veranschaulicht das Problem, das ich habe. Ich erwarte, dass beide Zeilen gleich aussehen, aber bei Verwendung von flex-basis
(Zeile 1) scheint der Flex-Container (.middle
Element) die systeminterne Breite seines untergeordneten Elements (.inner
) zu ignorieren und berücksichtigt nur den Text.
Dieser Unterschied kann in den neuesten Versionen von Chrome, FF und Safari (aber nicht in IE11/Edge) beobachtet werden.
Erläuterung: Ich frage nicht, warum IE11/Edge verhält sich so. Sein Verhalten (in diesem Fall) erscheint mir tatsächlich logisch. Ich frage, warum es in allen anderen Browsern Unterschiede gibt.
Update: Edge 13 verhält sich genau wie IE11.
, dass ein interessanter Fund ist. Laut der [** Spezifikation **] (https: //drafts.csswg.org/css-flexbox/# flex-basis-property), sollte in diesem Fall kein Rendering-Unterschied zwischen 'width' und' flex-basis' bestehen. Ich würde sagen, es ist ein Browser-Tick. Noch interessanter scheint IE das Verhalten richtig zu machen, während Chrome und FF daneben liegen. Das wirft alle Arten von Fragen und Verdacht auf :-) –
Das erinnert mich an [verschachtelte Flex-Elemente machen Eltern nicht wachsen] (http://Stackoverflow.com/q/36968138/1529630) – Oriol