what decides when these flex items wrap?

Hey, i have two input elements in a flex container. I've overwritten their user agent fixed width by applying min-width: 0; to them, allowing them to shrink. I've also applied flex-grow: 1; to them so they fill the space equally. The flex container has flex-wrap: wrap; on it however considering that the children have min-width: 0;, theoretically meaning they can shrink to nothing, what causes them to wrap rather than doing that? Thanks in advance. https://codepen.io/deerCabin/pen/GRbRxjO
13 Replies
Kevin Powell
Kevin Powell•6mo ago
the wrapping behavior isn't at the smallest size they can get to. Rather, it's when they hit their "ideal" size. So, if you set a width or flex-basis, it will be when they get to that size. If you don't set either one, it's at it's intrinsic size. As for what the intrinsic size is, with an input, it's the default size you get when you put one on your page 😄
Kevin Powell
Kevin Powell•6mo ago
Firefox's dev tools are still the best for understanding how Flexbox works. Inspecting one of the inputs, you'll see something like this image in the Layout tab. When the Final Size is the same as the Content Size, it'll wrap
No description
Kevin Powell
Kevin Powell•6mo ago
Basically, flex-shrink is a last resort, it will only come into play after wrapping, not before.
snxxwyy
snxxwyyOP•6mo ago
Ahh I always thought it was when they were at their smallest size, I’ll be sure to check that out on firefox too, that’s quite useful, thank you Kevin I just have a question if that’s okay. Is the final size the full width of the container or the max width the element can be/take up?
Kevin Powell
Kevin Powell•6mo ago
It's the currently calculated size, based on the content size, and then the grow/shrink that's being applied to it
snxxwyy
snxxwyyOP•6mo ago
Ohh okay I see, thank you. Is there a way to make it wrap specifically at a certain point? Maybe a min width on the first one?
Kevin Powell
Kevin Powell•6mo ago
min-width means it can never be smaller than that though, even if there is a flex-shrink. You can declare a width or flex-basis though, and it'll wrap at that size, and still grow/shrink
snxxwyy
snxxwyyOP•6mo ago
Ah okay, if I set a flex basis or width of 45% let’s say, would they not wrap since it could be 45% of any size container?
Kevin Powell
Kevin Powell•6mo ago
Yeah I don't think it would ever wrap then, exactly.
snxxwyy
snxxwyyOP•6mo ago
Ah so it would have to be ems rems or px, wouldn't setting a fixed width cause overflow in certain situations? or does the flex grow and shrink prevent that? thank you for your help.
snxxwyy
snxxwyyOP•6mo ago
and if the flex container had justify-content: space-between; on it for example, i gather it would wrap when the two elements touch since it doesn't have a flex-grow? i updated the codepen with that example https://codepen.io/deerCabin/pen/GRbRxjO
Kevin Powell
Kevin Powell•6mo ago
yeah, with the grow and shrink you shouldn't run into any issues. yeah 🙂
snxxwyy
snxxwyyOP•6mo ago
Awesome, thank you for your help with all this, I appreciate it
Want results from more Discord servers?
Add your server