在开发中经常会需要实现一些居中布局问题,今天来总结一下垂直居中布局的css实现方法。
# 任意高度的垂直居中布局
# 1.父元素tabel-cell +vertical-align
此方法的优点:兼容性好,兼容ie8+。
<style type="text/css">
.parent{
<!-- 样式内容省略 -->
display: tabel-cell;
vertical-align:middle;
}
.child{
<!-- 样式内容省略 -->
}
</style>
<div class="parent">
<div class="child">DEMO</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 2. absolute + transform
优点:不会干扰其他元素
缺点:兼容性不好
<style>
.parent{
<!-- 样式内容省略 -->
position:relative;
}
.child{
<!-- 样式内容省略 -->
position: absolute;
top: 50%;
transform: translateY(-50%);
}
</style>
<div class="parent">
<div class="child">DEMO</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 3.flex+align-items
优点:和第一种方法一样只需要对父元素设置 缺点:兼容性不好
<style type="text/css">
.parent{
<!-- 样式内容省略 -->
display: flex;
align-items:center;
}
.child{
<!-- 样式内容省略 -->
}
</style>
<div class="parent">
<div class="child">DEMO</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 固定高度的垂直居中布局
这个用以上的方法也可以,不过我比较喜欢用负margin实现
<style>
.parent{
<!-- 样式内容省略 -->
position:relative;
}
.child{
<!-- 部分样式内容省略 -->
height:200px;
position: absolute;
top: 50%;
margin-top:-100px;
}
</style>
<div class="parent">
<div class="child">DEMO</div>
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
总结了几种方法,各有利弊,还是那句话:具体情况具体分析~
ps:增加了运行代码的功能 更好的代码功能还在研究当中。