# 垂直水平居中

# 一、纯文本

  • 垂直方向:line-height
  • 水平方向:text-align
.center {
  line-height: 'DOM元素高度';
  text-align: center;
}

# 二、position 定位

1)已知 DOM 元素的 widthheight

  • 垂直方向:margin-top: -height/2;
  • 水平方向:margin-left: -width/2;
.center {
  width: 200px;
  height: 200px;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -100px;
  margin-top: -100px;
}

2)未知 DOM 元素的 widthheight

translate 移动元素本身的位置,已知宽高和未知宽高的 DOM 元素都可用

  • 垂直方向:transform: translateY(-50%);
  • 水平方向:transform: translateX(-50%);
.center {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, 50%);
}

# 三、display: flex; 布局

  • 垂直方向:align-items: center;
  • 水平方向:justify-content: center;
.center {
  display: flex;
  justify-content: center;
  align-items: center;
}

# 四、display: table; 布局

  • 垂直方向:vertical-align: middle;
  • 水平方向:text-align: center;

注:使用 vertical-align: middle;text-align: center; 使 DOM 元素垂直居中,需要把 子元素转变为内联元素

/* 外层元素 */
.wrapper {
  display: table;
  height: 100vh;
  width: 100vw;
}
/* 父元素 */
.parent {
  display: table-cell;
  text-align: center;
  vertical-align: middle;
}
.center {
  /* 子元素转变为内联元素 */
  display: inline-block; 
  border: 1px solid #000;
}