Flexbox Layout Examples: Most Common Layouts
The layouts you will use 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.
This is the default layout in Flexbox:

You set display: flex on an element. This makes that element the so-called flex-container and its direct child elements the so-called flex-items.
The flex-items are laid out horizontally next to each other, starting from the top-left corner.
Sometimes this is all you need.
However, let's say we want to position these flex-items differently. We have 2 major options: we can position them along the horizontal axis or the vertical axis.
To position the flex-items along the horizontal axis, use justify-content here:

or

Note that flex-end has better browser support at time of writing, but is being phased out in favor of end. This is because Flexbox and CSS Grid properties are being harmonized, so we can use the same properties in both systems. That's why the 'flex-' and 'grid-' prefixes are being dropped.
We can also align the flex-items vertically with align-items:

or

With Flexbox, the flex-items are always laid out along 1 direction: horizontal (row) or vertical (column). The default is horizontal (row).
However, sometimes we want it to be vertical (column):

When you do that, the align-items and justify-content properties 'flip', so now justify-content works for the vertical axis and align-items for the horizontal axis:


Sometimes, we only want to position 1 flex-item in a certain way, not all flex-items. We can do that by selecting that individual flex-item and using align-self instead of align-items:

For the other axis, there is no justify-self. Instead we should use margin: auto:

Here, margin will take up all the space left to the flex-item, pushing the flex-item itself all the way to the right.
Sometimes, you will have more flex-items than here or just a few very large ones. In that case, they may overflow the container or stretch the container out. Instead of that, you probably want them to wrap onto a new line if they don't fit.
Use flex-wrap: wrap to do that:

Here we have multiple rows now. If we want to center all of this vertically like before, we now have to use align-content instead of align-items:

So use align-items when you have 1 row or column, use align-content when you have multiple rows or columns (after wrapping).
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:





