这是最全的水平垂直居中的处理方式

273 阅读1分钟

html代码

<div class="parent">
  <div class="child"></div>
</div>

css实现水平居中的各种方式

  • flex
  div.parent {
    display: flex;
    justify-content: center;
    align-items: center;
  }
  • absolute + transform
  div.parent {
    position: relative;
  }
  div.child {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);  
  }
  • 子元素宽度和高度固定的居中处理
  div.child {
    width: 50px;
    height: 10px;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-left: -25px;
    margin-top: -5px;
  }
  • absolute + margin
  div.child {
    width: 50px;
    height: 10px;
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    margin: auto;
  }
  • grid
  div.parent {
    display: grid;
  }
  div.child {
    justify-self: center;
    align-self: center;
  }
  • inline-block + middle
div.parent {
    font-size: 0;
    text-align: center;
    &::before {
        content: "";
        display: inline-block;
        width: 0;
        height: 100%;
        vertical-align: middle;
    }
}
div.child{
  display: inline-block;
  vertical-align: middle;
}

  • flex + margin
  div.parent{
    display:flex;
  }
  div.child{
    margin:auto;
  }
  • table + middle + center
  div.parent {
    display: table;
  }
  div.child {
    display: table-cell
    vertical-align: middle;
    text-align: center;
  }
  • table-cell(父元素) + inline-block(子元素)
  .parent {
      display: table-cell;
      height: 200px;
      width: 200px;
      background-color: orange;
      text-align: center;
      vertical-align: middle;
  }
  .child {
      display: inline-block;
      width: 100px;
      height: 100px;
      background-color: blue;
  }