Vertically center and left-align a column of flex items
I think if you put the column div in the vertically in the center of the wrapper div (let's call it your row div) with this:
align-self: center;
And put the contents of the column div in the middle of it:
text-align: center;
It will work the way you want.
justify-content
aligns flex items along the main axis.
align-items
aligns flex items along the cross axis, which is always perpendicular to the main axis.
Depending on the flex-direction
, the main axis may be horizontal or vertical.
Since flex-direction:column
means the main axis is vertical, you need to use justify-content
not align-items
to center the flex items.
Here's an example:
#container {
display: flex;
flex-direction: column;
justify-content: center;
height: 200px;
background-color: lightpink;
}
<div id="container">
<div class="box">div 1</div>
<div class="box">div 2</div>
<div class="box">div 3</div>
<div class="box">div 4</div>
<div class="box">div 5</div>
</div>
Learn more about flex alignment along the main axis here:
- In CSS Flexbox, why are there no "justify-items" and "justify-self" properties?
Learn more about flex alignment along the cross axis here:
- How does flex-wrap work with align-self, align-items and align-content?