CSS常用居中方式

本文主要总结在开发中用得比较多的几种居中方式,方便使用。

水平居中

内联元素水平居中

利用 text-align: center 可以实现在块级元素内部的内联元素水平居中。此方法对内联元素(inline),内联块(inline-block),内联表(inline-table),inline-flex元素水平居中都有效。

1
2
3
.center-text {
text-align: center;
}

块级元素水平居中

通过把固定宽度块级元素的margin-leftmargin-right设成auto,就可以使块级元素水平居中。

1
2
3
.center-block {
margin: 0 auto;
}

多块级元素水平居中

利用inline-block

如果一行中有两个或两个以上的块级元素,通过设置块级元素的显示类型为inline-block和父容器的text-align属性从而使多块级元素水平居中。

1
2
3
4
5
6
.container {
text-align: center;
}
.inline-block {
display: inline-block;
}

利用flex 布局

利用弹性布局(flex),实现水平居中,其中justify-content 用于设置弹性盒子元素在主轴(横轴)方向上的对齐方式,本例中设置子元素水平居中显示。

1
2
3
4
.flex-center {
display: flex;
justify-content: center;
}

垂直居中

单行内联(inline-)元素垂直居中

通过设置内联元素的高度(height)和行高(line-height)相等,从而使元素垂直居中。

1
2
3
4
#v-box {
height: 120px;
line-height: 120px;
}

多行元素垂直居中

利用 flex 布局

利用 flex 布局实现垂直居中,其中flex-direction: column定义主轴方向为纵向。因为 flex 布局是 CSS3 中定义,在较老的浏览器存在兼容性问题。

1
2
3
4
5
.center-flex {
display: flex;
flex-direction: column;
justify-content: center;
}

利用表布局(table

利用表布局的vertical-align: middle可以实现子元素的垂直居中。

1
2
3
4
5
6
7
.center-table {
display: table;
}
.v-cell {
display: table-cell;
vertical-align: middle;
}

水平垂直居中

利用 flex 布局

利用flex布局,其中justify-content 用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式;而align-items属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。

1
2
3
4
5
.parent {
display: flex;
justify-content: center;
align-items: center;
}

参考

  1. 这15种CSS居中的方式,你都用过哪几种?
  2. Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com)
  3. Flex 布局教程:实例篇 - 阮一峰的网络日志 (ruanyifeng.com)