CSS Center

June 29, 2019

Table of Contents

竖直居中

flex

标准的竖直居中方式,适用于 IE10+ 和 现代浏览器

.parent {
  display: flex;
  align-items: center;
}

line-height

  • 必须是单行

  • 子元素必须是行内元素(inline, inline-block)

  • 父元素已知高度

.parent {
  height: 100px;
  line-height: 100px;
}

.child {
  display: inline;
}
/* or */
.child {
  display: inline-block;
  height: 10px;
  line-height: 10px;
}

::before ::after

  • 子元素必须是行内元素
.parent::before {
  content: '';
  width: 0;
  height: 100%;
  display: inline-block;
  vertical-align: middle;
}

calc

  • 已知子元素的高度

  • 竖直居中的 top 值为 50% - (height / 2)

.child {
  width: 30px;
  height: 30px;
  position: relative;
  top: calc(50% - 15px);
}

transform

通用的竖直居中,适用于 IE9+ 和 现代浏览器

.child {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

absolute

  • 因为绝对定位的元素是会互相覆盖的,所以只适用于单个子元素

  • 必须指定子元素的高度,子元素没有高度就是 100%

.parent {
  position: relative;
}

.child {
  height: 50px;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  margin: auto;
}

table

模拟 table 的竖直居中

.parent {
  display: table-cell;
  vertical-align: middle;
}

水平集中

块级元素

.child {
  display: block;
  margin: 0 auto;
}

行内元素

.parent {
  text-align: center;
}

flex

.parent {
  display: flex;
  justify-content: center;
}

Profile picture

Personal blog by xg4.
Peace & Love.