1688 shaares
869 private links
869 private links
This article explained the concept pretty well! It not only showed how to use Flexbox, but also the reason it's designed this way. Here are a few things I learned:
- the default css layout algorithm is flow. flexbox and grid are two completely different layout. by using
display: flex
we are switching layout algorithm. justify
means to position along primary axis, whereasalign
means to position along cross axis (think of a kebab skew vs cocktail wiener)content
is a group of things that can be distributed, whereasitems
refers to single items that are positioned individually.width
in flow layout is a hard constraint, whereas in flexbox layout it's a "hypothetical size", meaning only the hinted size.flex-basis
is just like thewidth
(orheight
) attribute along the primary axis. A difference is thatflex-basis
cannot reduce an item below its minimum size.flex-grow: n
to use the remaining n_i/(sum n_i) of space; specially,flex-grow: 0
stick to its intrinsic size.flex-grow
is used when the children's size combined is smaller than the size of container, whereasflex-shrink
is used when children's size is bigger.flex-shrink: n
shrinks the children by making each pay the debt in size. each pays a portion of (n_i/sum n_i); speciallyflex-shrink: 0
makes the child never shrink.- flexbox layout never shrinks an item below its
min-width
(or height), regardless of theirflex-shrink
value, and even at the cost of overflowing the container. gap
is a convenient attribute comparing to settingmargin
because it doesn't add spacing on the ends.margin: auto
is an useful alternative toflex-grow: 1
because it gobbles up the spare space without changing the item's size.- with
flex-wrap: wrap
, items won't shrink below their hypothetical size, and overflowed items wrap to a new row/column. - when
flex-wrap: wrap
takes effect, we usealign-content
to adjust the position of all items about the cross-axis.