css实现元素水平垂直居中的几种方法

一、方法

  • 使用position和margin
  • 使用flex布局
  • 把内部元素变成行内元素
  • 使用 transform
  • 使用position和margin,另一种方式
  • 使用table-cell
  • flex和margin配合使用

二、代码演示

可以直接复制到本地进行测试

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>1</title>
  <style>
    .box {
      
      
      width: 300px;
      height: 200px;
      background-color: #007fff;
      margin: 10px;
    }

    .inner {
      
      
      width: 150px;
      height: 100px;
      background-color: #42b983;
    }

    /*  方法一:使用定位 */
    .box1 {
      
      
      position: relative;
    }

    .inner1 {
      
      
      position: absolute;
      /*知道父元素的宽高*/
      top: 100px;
      left: 150px;
      /*知道子元素的宽高*/
      margin-top: -50px;
      margin-left: -75px;
    }

    /* 方法二:使用 flex 布局 */
    .box2 {
      
      
      display: flex;
      justify-content: center;
      align-items: center;
    }

    .inner2 {
      
      
    }

    /* 方法三:把内部元素变成行内元素 */
    .box3 {
      
      
      text-align: center;
    }

    .inner3 {
      
      
      display: inline-block;
      margin-top: 50px;
    }

    /* 如果面试官问:父元素和子元素的宽高都不确定怎么办? */
    /* 方法四:使用 transform */
    .box4 {
      
      
      position: relative;
    }

    .inner4 {
      
      
      position: absolute;
      top: 50%;
      left: 50%;
      /*设置元素的相对于自身的偏移度为负50%(也就是元素自身尺寸的一半)*/
      transform: translate(-50%, -50%);
    }

    /*方法五*/
    .box5 {
      
      
      position: relative;
    }

    .inner5 {
      
      
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      margin: auto;
    }

    /*  方法六 */
    .box6 {
      
      
      display: table-cell;
      text-align: center;
      vertical-align: middle;
    }

    .inner6 {
      
      
      display: inline-block;
    }

    /* 方法七 */
    .box7 {
      
      
      display: flex;
    }

    .inner7 {
      
      
      margin: auto;
    }
  </style>
</head>
<body>

<div class="box box1">
  <div class="inner inner1">方法1</div>
</div>

<div class="box box2">
  <div class="inner inner2">方法2</div>
</div>

<div class="box box3">
  <div class="inner inner3">方法3</div>
</div>

<div class="box box4">
  <div class="inner inner4">方法4</div>
</div>

<div class="box box5">
  <div class="inner inner5">方法5</div>
</div>

<div class="box box6">
  <div class="inner inner6">方法6</div>
</div>

<div class="box box7">
  <div class="inner inner7">方法7</div>
</div>

</body>
</html>

三、资料

注意 vertical-align 只对行内元素、表格单元格元素生效:不能用它垂直对齐块级元素。

CSS3 transform属性

display:table和display:table-cell实现单行,多行文本垂直居中

利用vertical-align:middle垂直居中

前端学习交流QQ群,群内学习讨论的氛围很好,大佬云集,期待您的加入:862748629 点击加入

猜你喜欢

转载自blog.csdn.net/weixin_43974265/article/details/114278274