视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CSS实现完美垂直居中
2025-09-27 23:25:43 责编:小OO
文档
一、单行内容的居中

只考虑单行是最简单的,无论是否给容器固定高度,只要给容器设置 line-height 和 height,并使两值相等,再加上 over-flow: hidden 就可以了

.middle-demo-1{

height: 4em;

line-height: 4em;

overflow: hidden;

优点:

1. 同时支持块级和内联极元素

2. 支持所有浏览器

缺点:

1. 只能显示一行

2. IE中不支持等的居中

要注意的是:

1. 使用相对高度定义你的 height 和 line-height

2. 不想毁了你的布局的话,overflow: hidden 一定要

为什么?

请比较以下两个例子:

上一个高度是用的绝对单位px,并且没有隐藏溢出,下一个高度用的单位是相对单位em,并且隐藏了溢出。如果你的浏览器支持放大字体,那么尽情地放大字体,看看会出现什么效果。

二、多行内容居中,且容器高度可变

也很简单,给出一致的 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不支持这些属性,不过在其他浏览器上显示效果非常完美。

要注意的是:和一个合法的元素必须在

里一样,display: table-cell 元素必须作为 display: table 的元素的子孙出现。

优点:

不用说了吧,就是表格,效果和表格一模一样

缺点:

IE下无效

四、以毒攻毒!用 IE 的 bug 解决 IE 中的绝对居中

先不得不说一句,IE 真的是个很烂的浏览器,CSS1中的定义都不支持,害得要我们转个大圈子来造居中。不过就像我说的,凡是 table 布局可以实现的,CSS 一定可以实现,即使在 IE 里也不例外。我研究 IE layout 模式多年,还是找出了一个可以在 IE 中绝对居中的方法。这个方法就是基于 IE layout 的 bug,也可以算以毒攻毒。至于原理,不要问我,这是独门秘学,何况三言两语也讲不清楚,只要好用就行

.middle-demo-4{

height: 300px;

position: relative;

}

.middle-demo-4 div{

position: absolute;

top: 50%;

left: 0;

}

.middle-demo-4 div div{

position: relative;

top: -50%;

left: 0;

五、整合三和四,写出支持所有浏览器的垂直居中容器!

思路是利用 IE 和 非IE 浏览器的 CSS hack, 整合三和四的CSS,写出兼容主流浏览器的垂直居中容器。具体代码就不给出了,大家权当作练习练习。例子可以在下面的附录中找到。

最终实测支持的浏览器:IE6+, Mozilla 1.7, Netscape Navigator 8, Opera 8.0+, Firefox 1.0+ 和 Safari 1.0+IE5 下需要加上对合适模型的补正。

推测支持的浏览器:Mozilla 1.5+, Netscape Navigator 7+, Opera 7+

未测试浏览器:Konqueror

最后附上自己写的,所有居中布局的范例网页,大家不明白可以参考。下载本文

显示全文
专题