注意!以下方法并不能兼容IE,万恶的IE,想别的办法吧。要么专门写针对IE的CSS,要么就直接放弃IE。
单行文本垂直居中
单行文本的垂直居中很简单,只要设置了height
和line-height
就可以了,如下所示:
1 2 3 4
| div{ height: 40px; line-height: 40px; }
|
多行文本垂直居中
如果文字不确定是几行,可能是一行,也可能是多行。
这个时候肯定不能按照单行文本那样设置了。
比如有如下文字:
1 2 3 4 5
| <div> <p>这是第一行文字</p> <p>这是第二行文字,下面还有</p> <p>下面不一定有文字,也不一定没有文字</p> </div>
|
需要以下CSS代码:
1 2 3 4 5 6
| div{ 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 19
| div{ 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
图片,就可以垂直居中了。