Solution
Add min-width: 0
to the outer flex item (.content
/ demo)
or
Add overflow: hidden
to the outer flex item (.content
/ demo)
Explanation
An initial setting of a flex container is min-width: auto
on flex items.
This means that a flex item cannot be smaller than the size of its content.
In your original code, the text box (a flex item) gets smaller due to overflow: hidden
.
Without that rule, you'll have the same behavior as the second example.
Demo: When overflow: hidden
is removed, first example behaves like second example.
In the second version of your code, the primary flex items are .side
and .content
.
By default, .content
cannot be shorter than its content (regardless of flex-shrink
)... until you override min-width: auto
with min-width: 0
or, like the first example, apply overflow: hidden
.
From the spec:
4.5. Implied Minimum Size of Flex
Items
To provide a more reasonable default minimum size for flex items, this
specification introduces a new auto
value as the initial value of
the min-width
and min-height
properties defined in CSS 2.1... read more
For another example see: Why doesn't flex item shrink past content size?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…