CSS实现水平垂直居中的几种方式

58 阅读1分钟

让元素在父元素中呈现出水平垂直居中的形态,分为以下几种情况:

单行的文本、inline 或者 inline-block 元素

  • 水平:text-align
  • 垂直:
    • padding
    • line-height

固定宽高的块级盒子

  • absolute + 负margin
  • absolute + margin auto
  • absolute + calc

不固定宽高的块级盒子

  • absolute + transform
  • lineheight
  • writing-mode
  • css-table
  • flex
  • grid

单行的文本、inline 或 inline-block 元素

水平居中

此类元素需要水平居中,则父级元素必须是块级元素(block level),且父级元素上需要这样设置样式:

.parent {
    text-align: center;
}

垂直居中

方法一:通过设置上下内间距一致达到垂直居中的效果:

.single-line {
    padding-top: 10px;
    padding-bottom: 10px;
}

方法二:通过设置 heightline-height 一致达到垂直居中:

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

固定宽高的块级盒子

方法一:absolute + 负 margin

方法二:absolute + margin auto

方法三:absolute + calc


不固定宽高的块级盒子

方法一:absolute + transform

方法二:line-height + vertical-align

方法三:writing-mode

方法四:table-cell

方法五:flex

方法六:grid


优缺点对比总结:

  • PC端有兼容性要求,宽高固定,推荐absolute + 负margin
  • PC端有兼容要求,宽高不固定,推荐css-table
  • PC端无兼容性要求,推荐flex
  • 移动端推荐使用flex

参考文章: