注意!以下方法并不能兼容IE,万恶的IE,想别的办法吧。要么专门写针对IE的CSS,要么就直接放弃IE。
单行文本垂直居中
单行文本的垂直居中很简单,只要设置了height
和line-height
就可以了,如下所示:1
2
3
4div{
height: 40px;
line-height: 40px;
}
多行文本垂直居中
如果文字不确定是几行,可能是一行,也可能是多行。
这个时候肯定不能按照单行文本那样设置了。
比如有如下文字:1
2
3
4
5<div>
<p>这是第一行文字</p>
<p>这是第二行文字,下面还有</p>
<p>下面不一定有文字,也不一定没有文字</p>
</div>
需要以下CSS代码:1
2
3
4
5
6div{
height: 300px;
vertical-align: middle;
display: table-cell;
font-size: 18px;
}
主要是需要设置display: table-cell;
和vertical-align: middle;
,即可实现多行文本在高度为300px
的div
内垂直居中。
图片垂直居中
图片垂直居中的办法和多行文字也是不一样的,我亲自测试过,不行。
我不知道是不是兼容性的问题,反正最终我没有设置成功。
最终在网上找到这么一段代码:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19div{
height: 95px;
text-align: center;
display: -webkit-box;
-webkit-box-align: center;
-webkit-box-pack: center;
display: -moz-box;
-moz-box-align: center;
-moz-box-pack: center;
display: -o-box;
-o-box-align: center;
-o-box-pack: center;
display: -ms-box;
-ms-box-align: center;
-ms-box-pack: center;
display: box;
box-align: center;
box-pack: center;
}
这样div
包含的img
图片,就可以垂直居中了。