Container
-
display: flex or display: inline-flex: creates
a flex context (or an inline flex context) for direct children of this
element
-
flex-direction determines the main and cross axis for the
container, valid values are:
-
row (default): horizontal, in the direction of writing
(left to right for English)
-
row-reverse: horizontal, in the opposite direction of
writing (right to left for English)
column: vertical, top to bottom
column-reverse: vertical, bottom to top
-
flex-wrap determines if flex items will try to fit in one
line, valid values are:
-
nowrap (default): all flex items will be on one line
-
wrap: flex items will wrap onto multiple lines, top to
bottom
-
wrap-reverse: flex items will wrap onto multiple lines,
bottom to top
-
flex-flow: shorthand combining
flex-direction and flex-wrap
-
Formal syntax:
flex-flow: <'flex-direction'> || <'flex-wrap'>
-
justify-content defines the alignment along the main axis,
valid values are:
-
flex-start (default): pack flex items from the start
flex-end: pack flex items from the end
start: pack items from the start
end: pack items from the end
left: pack items from the left
right: pack items from the right
center: pack items around the center
-
space-around: distribute items evenly with equal space
around them
-
space-between: distribute items evenly with equal space
between them
-
space-evenly: distribute items evenly, ensuring equal
space between any two items
-
stretch: distribute items evenly, stretching auto-sized
items to fit the container
-
align-items defines the alignment along the cross axis,
valid values are:
-
flex-start (default): pack flex items from the start
flex-end: pack flex items from the end
start: pack items from the start
end: pack items from the end
center: pack items around the center
baseline: align items based on their baselines
stretch: stretch items to fill the container
-
align-content defines the alignment of extra space along
the cross axis, valid values are:
-
flex-start (default): pack flex items from the start
flex-end: pack flex items from the end
start: pack items from the start
end: pack items from the end
center: pack items around the center
-
space-around: distribute items evenly with equal space
around them
-
space-between: distribute items evenly with equal space
between them
-
space-evenly: distribute items evenly, ensuring equal
space between any two items
-
stretch: distribute items evenly, stretching auto-sized
items to fit the container
Diagram of Flexbox properties
Items
-
flex-grow determines how much the item can grow if
necessary
-
Accepts a single positive number (unitless), default value is
0
-
Specifies how much of the remaining space in the flex container
should be assigned to the item
-
The remaining space is the size of the flex container minus the size
of all flex items’ sizes together
-
If all items have the same
flex-grow, all items will
receive an equal share of the remaining space
-
If not all items have the same
flex-grow, the remaining
space is distributed according to the ratio defined by these values
-
flex-shrink determines how much the items can shrink if
necessary
-
Accepts a single positive number (unitless), default value is
1
-
If the size of all flex items is larger than the flex container,
items shrink to fit according to
flex-shrink
-
flex-basis determines the initial size of a flex item
before the remaining space is distributed
-
Can use any valid
width value, intrinsic size values,
auto (default) or content
-
auto means “look at my width or
height property”, whereas content is used
for automatic sizing
-
flex: shorthand combining flex-grow,
flex-shrink and flex-basis
-
Formal syntax:
flex: none | [ <'flex-grow'> <'flex-shrink'>? ||
<'flex-basis'> ]
-
align-self allows the item to override the default
align-items specified by the container
-
Valid values are the same as those of the
align-items property in the container
-
order determines the ordering of the item
- Accepts an integer value
-
Items in a container are sorted by ascending
order value and then by their source code order
- Might cause accessibility issues if used incorrectly