- Switch to
flex-direction: column
- Apply
justify-content: space-between
- Insert an invisible "spacer" item to balance out both ends
.container {
height: 200px;
background: red;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.invisible { visibility: hidden; }
<div class="container">
<div class="invisible">intro</div>
<h1>Hello, world!</h1>
<div class="meta">intro</div>
</div>
Note that flex alignment properties work by distributing available space in the container. This means that justify-content: space-between
can precisely center the middle item (h1
) only if both adjacent items are equal height. For more details see Box #71 here.