转载自:http://blog.csdn.net/wallimn/article/details/1731277
之前看到很多人一直都问这个问题,不过当时我没当一回事,因为在 CSS 中要垂直居中,多数是在有高度的情况下,或者容器高度不定的情况下才用,看上去比较舒服,而且实现的方法也不少,不一定要拘泥于和 table 布局一样。不过最近有人问了几个例子,看来对此的需求还不少。现在就把我经验拿出来分享一下,希望大家鼓鼓掌。
首先,要有一个概念:凡是 table 布局可以实现的,CSS 一定可以实现。CSS 可以实现的,table 未必能做到。
现在来几个例子:
一、单行内容的居中
只考虑单行是最简单的,无论是否给容器固定高度,只要给容器设置 line-height 和 height,并使两值相等,再加上 over-flow: hidden 就可以了
.middle-demo-1{
height: 4em;
line-height: 4em;
overflow: hidden;
}
优点:
1. 同时支持块级和内联极元素
2. 支持所有浏览器
缺点:
1. 只能显示一行
2. IE中不支持<img>等的居中
要注意的是:
1. 使用相对高度定义你的 height 和 line-height
2. 不想毁了你的布局的话,overflow: hidden 一定要
二、多行内容居中,且容器高度可变
也很简单,给出一致的 padding-bottom 和 padding-top 就行
.middle-demo-2{
padding-top: 24px;
padding-bottom: 24px;
}
优点:
1. 同时支持块级和内联极元素
2. 支持非文本内容
3. 支持所有浏览器
缺点:
容器不能固定高度
三、把容器当作表格单元
CSS 提供一系列diplay属性值,包括 display: table, display: table-row, display: table-cell 等,能把元素当作表格单元来显示。这是再加上 vertical-align: middle, 就和表格中的 valign="center" 一样了。
.middle-demo-3{
display: table-cell;
height: 300px;
vertical-align: middle;
}
可惜IE不支持这些属性,不过在其他浏览器上显示效果非常完美。
要注意的是:和一个合法的<td>元素必须在<table>里一样,display: table-cell 元素必须作为 display: table 的元素的子孙出现。
优点:
不用说了吧,就是表格,效果和表格一模一样
缺点:
IE下无效
分享到:
相关推荐
DIV+CSS 图片垂直居中效果
css图片垂直居中方法
DIV+CSS水平 垂直居中.docDIV+CSS水平垂直居中
CSS解决未知高度的DIV垂直居中CSS解决未知高度的DIV垂直居中
CSS实现完美垂直居中 - 蓝色理想
NULL 博文链接:https://gucaihe.iteye.com/blog/1465144
CSS实现垂直居中的5种方法
css不定宽高让盒子里的内容垂直水平居中.里面步骤都有,
css 多行文本垂直居中显示,兼容各大浏览器!
css实现垂直居中的5种方法,慢慢总结的哦
CSS 实现盒子水平居中、垂直居中和水平垂直居中….docx
css图片垂直居中代码,超级简单,css只有二行,其中css最核心的地方用到 position,transform,解决以往代码多,或用table来居中的麻烦。
div框水平垂直居中跟内容垂直居中
图片 CSS垂直居中图片 CSS垂直居中
css图片垂直居中,分IE,与非IE进行,很详细的
NULL 博文链接:https://zhouyao.iteye.com/blog/417432
在曾经的 淘宝UED 招聘 中有这样一道题目: “使用纯CSS实现+未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直居中。” 当然出题并不是随意,而是有其现实的原因,垂直居中是淘宝工作中最常遇到的...
NULL 博文链接:https://ice-cream.iteye.com/blog/293997
主要介绍了使用css实现div垂直居中的示例,需要的朋友可以参考下
NULL 博文链接:https://highfly-s.iteye.com/blog/1878910