CSS 中几种常见的垂直居中的方法


在开发和面试中经常会遇到垂直居中的问题,下面总结了几种常见的实现方法:
几种方法公用的 HTML:

  1. 通过 display: flex; 实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    display: flex;
    justify-content: center;
    align-items: center;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
}

对弹性布局不了解的小伙伴可以参考另一篇文章:

  1. 通过 display: table-cell; 实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    display: table-cell;
    text-align: center;
    vertical-align: middle;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
    display: inline-block;
}
  1. 通过 margin + transform实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    overflow: hidden;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
    margin: 50% auto;
    transform: translateY(-50%);
}
  1. 通过 inline-block + vertical-align实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    line-height: 500px;
    text-align: center;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
    display: inline-block;
    vertical-align: middle;
}
  1. 通过 absolute + 负margin实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    line-height: 500px;
    position: relative;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
    position: absolute;
    left: 50%;
    top: 50%;
    margin-top: -100px;
    margin-left: -100px;
}
  1. 通过 absolute + margin: auto;实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    line-height: 500px;
    position: relative;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
    margin: auto;
}
  1. 通过 absolute + transform实现
.root {
    width: 500px;
    height: 500px;
    border: 2px solid black;
    line-height: 500px;
    position: relative;
}
.item {
    width: 200px;
    height: 200px;
    background-color: brown;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
}

原文链接:8种垂直居中的方法

CSS