Vertically Center Element
Vertically & Horizontally Center A Text/Element Inside A Fixed Size Div
Output

Code Structure
.vertical-horizontal-center-element {
display: flex;
/* justify-content will align it horizontally */
justify-content: center;
/* align-items will align it vertically */
align-items: center;
height: 50vh;
}
<div class="vertical-horizontal-center-element">
Vertically Center Text/Element Inside a Fixed Size Div
</div>
Old Way To Vertically Center An Element
Old way was to use display:table and set its child to display:table-cell and set it to vertical-align:middle
.table {
display: table;
height: 50vh;
width: 100%;
text-align: center;
}
.table h1 {
display: table-cell;
vertical-align: middle;
}
<div class="table">
<h1>Centered</h1>
</div>
Example Link
Vertically Center Using Relative-Absolute Position
.parent {
position: relative;
height: 50vh;
}
.child {
position: absolute;
top: 50%;
width: 100%;
transform: translateY(-50%);
text-align: center;
}
OR
.parent {
position: relative;
height: 50vh;
}
.child {
width: fit-content;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
height: fit-content;
}
<div class="parent">
<p class="child">Centered Using Relative-Absolute Positioning</p>
</div>
Example Link
Vertically Center Using Grid
.grid {
display: grid;
align-items: center;
justify-content: center;
height: 50vh;
}
OR using place-items which is short hand for align-items and justify-items
.grid-pi {
display: grid;
place-items: center;
height: 50vh;
}
OR Using Margins with Grid
.grid-margin {
display: grid;
height: 50vh;
}
.grid-margin-child {
margin: auto;
}
<div class="grid">
<p>Centered Using Grid</p>
</div>
<div class="grid-pi">
<p>Centered Using Grid Place Items</p>
</div>
<div class="grid-margin">
<div class="grid-margin-child">Centered Using Grid and Margins</div>
</div>
Example Link
Grid and Flex compared to table and relative-absolute, only has to be applied for parent and not for child.
For Grid and Flexbox,
automargin on top and bottom will center them. But on block level it will not work.