跳至主要內容

垂直居中布局

鸭梨小于 1 分钟

垂直居中布局

简单搭建一下页面,搞两个盒子相互嵌套即可。

<!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>垂直居中布局</title>
  <!-- <link rel="stylesheet" href="./style-2.css"> -->
  <!-- <link rel="stylesheet" href="./style-1.css"> -->
</head>

<body>
  <div class="father box">
    <div class="child content">
      这是一个文本
    </div>
  </div>
</body>

</html>

块级元素

块级元素不定宽高

  1. 利用 position+transform

    transform: translate(-50%, -50%);
    

    这里的的 50%,其实是基于子元素的宽高的 50%

    .father {
      position: relative;
    }
    
    .child {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
    }
    
  2. 利用 position+margin: auto
    position,将上下左右设置为 0,这样子元素就被拉到和父元素一样大,这时候设置 margin: 0,就可以实现居中

    .father {
      position: relative;
    }
    
    .child {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      margin: auto;
    }
    
  3. 利用 flex 布局

    .father {
      display: flex;
      justify-content: center;
      align-items: center;
    }
    
  4. 利用 grid 实现

    .father {
      display: grid;
      align-items: center;
      justify-content: center;
    }
    

块级元素定宽高

上面介绍的所有不定宽高的解决方法,都可以使用。

特殊:利用 position+margin 负值

/* 定宽高的垂直居中 */

.box {
  width: 200px;
  height: 200px;
  background-color: rgb(191, 215, 236);
}

.content {
  width: 50px;
  height: 50px;
  background-color: rgb(106, 185, 159);
}

.father {
  position: relative;
}

.child {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -25px;
  margin-left: -25px;
}

内联元素

一般就将内联元素变为块级元素也行,或者设置 text-align: centerline-height: height