我帮你整理了怎么让div垂直水平居中的方法

187 阅读1分钟

前言

这也算是面试中比较常见的题目了,脑子里快速过一下,各位掘友能想起来多少种?

能想起来超过三种的。

image.png

少于三种的,看下面我为你整理好的方案,收藏起来,用到时直接CV。

让div垂直水平居中

分两种情况来看,就是div定宽高/不定宽高

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .parent {
        display: flex;
      }
      .child {
        margin: auto;
      }
    </style>
  </head>
  <body>
    <div class="parent" style="height: 400px">
      <div class="child" style="width: 200px; height: 200px; background-color: aqua"></div>
    </div>
    <div class="parent" style="height: 400px">
      <div class="child" style="background-color: aqua">
        <p>123456789</p>
      </div>
    </div>
  </body>
</html>

image.png

div定宽高/不定宽高都可以

  1. display: flex; + margin: auto;
.parent{
    display: flex;
}
.child{
    margin: auto;
}
  1. display: flex; + align-items: center; + justify-content: center;
.parent{
    display: flex;
    align-items: center;
    justify-content: center;
}

3.display: grid; + align-items: center; + justify-content: center;

.parent{
    display: grid;
    align-items: center;
    justify-content: center;
}
  1. position + transform
.parent{
    position: relative;
}
.child{
    background-color: aqua;
    position: absolute;
    transformtranslate3d(-50%, -50%0);
    left50%;
    top50%; 
}

只支持div定宽高

  1. position + margin
.parent{
    position: relative;
}
.child{
    background-color: aqua;
    position: absolute;
    margin-left: -150px;
    margin-top: -150px;
    left50%;
    top50%;
}
  1. position + top + left
.parent{
    position: relative;
}
.child{
    width: 200px;
    height: 200px;
    position: absolute;
    top: calc(50% - 100px);
    left: calc(50% - 100px);
    background-color: aqua;
}

总结

献上脑图,拿走不谢!

image.png