5种CSS实现的垂直居中方案
-
使用
flex
布局- 原理:
flex
布局提供了强大的对齐方式。通过将父元素设置为display: flex
,并使用align - items: center
属性可以让子元素在交叉轴(通常是垂直方向)上居中。 - 示例代码:
- 原理:
<style>
.parent {
display: flex;
height: 200px;
background - color: lightgray;
align - items: center;
}
</style>
<div class="parent">
<div class="child">看我实现了垂直居中</div>
</div>
-
解释:在这个例子中,
.parent
类对应的元素是父元素,设置为display: flex
启用flex
布局,height: 200px
定义了父元素的高度,background - color: lightgray
设置了背景颜色,align - items: center
使得子元素(.child
)在垂直方向上居中。
-
使用
grid
布局- 原理:
grid
布局也有很好的对齐功能。将父元素设置为display: grid
,然后使用place - items: center
可以同时在水平和垂直方向上居中子元素。 - 示例代码:
- 原理:
<style>
.parent {
display: grid;
height: 200px;
background - color: lightgray;
place - items: center;
}
</style>
<div class="parent">
<div class="child">看我实现了垂直居中</div>
</div>
-
解释:
.parent
作为父元素,display: grid
开启grid
布局,height: 200px
确定高度,background - color: lightgray
设置背景颜色,place - items: center
这一属性是align - items
和justify - items
的缩写,它会将子元素在水平和垂直方向都居中。
-
绝对定位和
transform
属性- 原理:将子元素设置为绝对定位,然后通过
top: 50%
将子元素的顶部定位到父元素的中心位置,再使用transform: translateY(-50%)
将子元素向上移动自身高度的一半,从而实现垂直居中。 - 示例代码:
- 原理:将子元素设置为绝对定位,然后通过
<style>
.parent {
position: relative;
height: 200px;
background - color: lightgray;
}
.child {
position: absolute;
top: 50%;
transform: translateY(-50%);
}
</style>
<div class="parent">
<div class="child">看我实现了垂直居中</div>
</div>
-
解释:首先
.parent
元素设置为position: relative
,为子元素的绝对定位提供相对定位的容器。height: 200px
定义了父元素高度,background - color: lightgray
设置背景色。.child
元素是要垂直居中的子元素,position: absolute
使其脱离文档流并相对于.parent
进行定位,top: 50%
将子元素的顶部移动到父元素高度的 50% 位置,transform: translateY(-50%)
将子元素向上移动自身高度的一半,达到垂直居中效果。
-
行高等于容器高度(适用于单行文本)
- 原理:对于单行文本,当行高(
line - height
)等于容器的高度时,文本会在容器中垂直居中。
- 原理:对于单行文本,当行高(
<style>
.parent {
height: 100px;
line - height: 100px;
background - color: lightgray;
}
</style>
<div class="parent">看我实现了垂直居中</div>
-
解释:
.parent
是包含文本的容器元素,height: 100px
定义了容器的高度,line - height: 100px
将行高设置为与容器高度相同,background - color: lightgray
设置背景颜色。这样,文本在容器中就会垂直居中。
-
表格单元格(
table - cell
)布局- 原理:将父元素设置为
display: table - cell
,并结合vertical - align: middle
属性,可以使子元素在垂直方向上居中。 - 示例代码:
- 原理:将父元素设置为
<style>
.parent {
display: table - cell;
height: 200px;
vertical - align: middle;
background - color: lightgray;
}
</style>
<div class="parent">
<div class="child">看我实现了垂直居中</div>
</div>
- 解释:
.parent
作为父元素,display: table - cell
将其显示方式设置为类似表格单元格,height: 200px
设置高度,vertical - align: middle
使子元素(.child
)在垂直方向上居中,background - color: lightgray
用于设置背景颜色。这种方法在一些场景下也能有效地实现垂直居中。