- Flex box:快速实现单元素或多个元素垂直居中。
<div class="container">
<div class="content">垂直居中</div>
</div>
.container {
display: flex;
align-items: center;
justify-content: center;
height: 100vh;
}
- Gird布局:二维布局(行列对齐)
<div class="container">
<div class="content">垂直居中</div>
</div>
.container {
display: gird;
place-items: center;
}
- 绝对定位+transform:兼容性佳,适用于已知子元素高度
<div class="container">
<div class="content">垂直居中</div>
</div>
.container {
position: relative;
.content {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
}
- table-cell:模拟表格布局
<div class="container">
<div class="content">垂直居中</div>
</div>
.container {
display: table-cell;
vertical-align: middle;
text-align: center;
}
- margin:auto + 已知高度
<div class="container">
<div class="content">垂直居中</div>
</div>
.container {
height: 100vh;
display: flex;
}
.content {
margin: auto;
}
- calc计算位置
<div class="container">
<div class="content">垂直居中</div>
</div>
.container {
height: 100vh;
position: relative;
}
.content {
position: absolute;
top: calc(50% - 25px);
left: 50%;
}