Flexbox Examples: Most Common Layouts (+ Illustrations)
Check out the illustrations to learn the layouts you want 99% of the time in CSS
You need to master both Flexbox and CSS Grid in order to professionally build modern websites & web apps. If you haven't mastered both of them yet, I highly recommend going through my CSS Course.
To 'unlock' the functionalities of Flexbox, simply pick an element and use display: flex
:
This will give you the default layout.
The element with display: flex
is the flex-container and its direct child elements are called the flex-items.
The flex-items are laid out horizontally next to each other in the default layout.
We can position these flex-items somewhere else, horizontally or vertically.
For example, horizontally we can do this by using justify-content
:
And vertically we can use align-items
:
Notice how the flex-items now always flow horizontally, they go from left to right.
Sometimes we want them to flow vertically, from top to bottom.
We can do that with flex-direction: column
:
Then we can use justify-content
and align-items
again to position them differently, however now their axes have 'flipped'.
So now you need to use justify-content
for the vertical axis and align-items
for the horizontal axis:
Sometimes we just want to move 1 flex-item to a different position.
Select that one element and use align-self
or margin: auto
:
Also, if you have many flex-items or very large flex-items such that they do not fit, they will overflow the container or stretch the container out. You can make them wrap with flex-wrap: wrap
:
And now if you want to position everything along the vertical axis, you should use align-content
instead of align-items
(use align-content when you have multiple rows/columns like we have now after wrapping):
I cheated a bit in the illustrations by giving the flex-items some space between them. In practice you need to use one of the gap properties to achieve that: column-gap
, row-gap
or gap
.
By the way, I think CSS is the 'bottleneck' to most websites & web apps. I believe it's the highest-ROI skill you can master.
Before I mastered CSS, I lost a ton of time & energy fiddling around with CSS.
I was learning about advanced JavaScript topics when I couldn't even implement basic layouts in CSS...
So I created a CSS course to help you avoid the same mistake. Check it out here if you're interested.
Would you like to be notified when I release a new course? You'll get early bird discounts. Sign up for my newsletter here.
Also, I show projects of upcoming courses on social media, follow me here: