水平居中
行内元素
只需要把行内元素包裹在一个属性 display
为 block
的父层元素中,并且把父层元素添加如下属性
1 2 3
| .parent { text-align: center; }
|
块状元素
1 2 3 4
| .item { margin: 10px auto; }
|
多个块状元素
将元素的 display
属性设置为 inline-block
,并且把父元素的 text-align
属性设置为 center
1 2 3
| .parent { text-align: center; }
|
多个块状元素 (使用 flexbox 布局实现)
使用 flexbox
,只需要把待处理的块状元素的父元素添加属性 display:flex
及 justify-content:center
1 2 3 4
| .parent { display: flex; justify-content: center; }
|
垂直居中
单行的行内元素
1 2 3 4 5 6 7 8 9 10 11
| .parent { background: #222; height: 200px; }
.parent a { height: 200px; line-height: 200px; color: #fff; }
|
多行的行内元素
组合使用 display:table-cell
和 vertical-align:middle
属性来定义需要居中的元素的父容器元素生成效果
1 2 3 4 5 6 7 8
| .parent { background: #222; width: 300px; height: 300px; display: table-cell; vertical-align: middle; }
|
已知高度的块状元素
1 2 3 4 5 6
| .item { top: 50%; margin-top: -50px; position: absolute; padding: 0; }
|
水平垂直居中
已知高度和宽度的元素
方案 1
这是一种不常见的居中方法,可自适应,比方案 2 更智能,如下
1 2 3 4 5 6 7 8
| .item { position: absolute; margin: auto; left: 0; top: 0; right: 0; bottom: 0; }
|
方案 2
1 2 3 4 5 6 7
| .item { position: absolute; top: 50%; left: 50%; margin-top: -75px; margin-left: -75px; }
|
未知高度和宽度元素
1 2 3 4 5 6
| .item { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); }
|
使用 flex 布局实现
1 2 3 4 5 6 7 8
| .parent { display: flex; justify-content: center; align-items: center; background: #aaa; height: 300px; }
|