【CSS】CSS让父盒子里的内容水平、垂直居中的写法

第一种:使用margin的方法

第一种方法是使用margin来使子盒子居中,但是这种方法会有一定的缺陷:需要给父盒子一个 overflow: hidden属性来清除塌陷,而且还需要精确计算上下的边距 如果父盒子改变大小,则还需重新计算大小

<style>
 /*
    第一种
      使用margin来使父盒子里边的内容居中 
缺点:需要给父盒子一个 overflow: hidden属性来清除塌陷,且还需要精确计算上下的边距 如果盒子改变大小,则还需重新计算大小
     */
    .father {
      width: 500px;
      height: 500px;
      background-color: pink;
      overflow: hidden;
    }
    .son {
      width: 200px;
      height: 200px;
      margin: 150px auto;
      background-color: purple;
    } 

  </style>

<body>
  <div class="father">
    <div class="son"></div>
  </div>
</body>

第二种:使用定位加margin的方法

第二种方法是使用定位加外边距的方法来使子盒子居中,但是这种方法也会有一定的缺陷:如果盒子大小需要更改 同时需要更改外边距来让子盒子从新居中

<style>
 .father {
      width: 500px;
      height: 500px;
      background-color: pink;
      position: relative;
    }
   /*
     第二种
      通过定位父盒子上和左各50% 然后再用外边距让盒子往上走自己宽高的一半 
      缺点:如果盒子大小需要更改 同时需要更改外边距来让子盒子从新居中
     */
  .son {
      width: 200px;
      height: 200px;
      position: absolute;
      top: 50%;
      left: 50%;
      margin-top: -100px;
      margin-left: -100px;
      background-color: purple;
    }
  </style>

<body>
  <div class="father">
    <div class="son"></div>
  </div>
</body>

第三种:使用定位加margin的方法(二)

第三种方法也是使用定位加外边距的方法来使子盒子居中,这样虽然不会出现两个盒子更改了宽高 而不居中问题 但需要将子盒子中的上下左右的距离全部设置一遍,比较麻烦

<style>
 .father {
      width: 500px;
      height: 500px;
      background-color: pink;
      position: relative;
    }
     /* 
    第三种
      通过对盒子定位 让其在父盒子中上下左右距离都为0 再通过margin=0的方法让其实现居中
      这样不会出现子盒子更改了宽高 而不居中问题 但需要将上下左右的距离全部设置一遍,比较麻烦
    */
    .son {
      width: 200px;
      height: 200px;
      position: absolute;
      top: 0;
      bottom: 0;
      left: 0;
      right: 0;
      margin: auto;
      background-color: purple;
    }
  </style>

<body>
  <div class="father">
    <div class="son"></div>
  </div>
</body>

第四种:通过定位加位移的方法

第四种方法是使用定位加位移的方法来使子盒子居中,这样既不会出现更改盒子宽高之后就不会居中的问题,而且相对于第三种方法来说代码量也少

<style>
 .father {
      width: 500px;
      height: 500px;
      background-color: pink;
      position: relative;
    }
   /* 
    第四种
      跟第上边第一种相似,也是通过对其定位的父盒子上和左各50% 
      然后使用transform属性来沿X轴与Y轴平移自己本身宽高的一半来设置
      这样既不会出现更改盒子宽高之后就不会居中的问题,而且相对于第三种方法来说代码量也少
    */
    .son {
      width: 200px;
      height: 200px;
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      background-color: purple;
    }
  </style>

<body>
  <div class="father">
    <div class="son"></div>
  </div>
</body>
经验分享 程序员 微信小程序 职场和发展