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;
}