文字垂直居中

创建时间:一月 5th, 2008修改时间:一月 5th, 2008 Traffic(792)

CSS中怎样设置才能使对象中的文字垂直居中于对象,这个问题也是捆扰很多朋友的难题。现在网上的很多代码都做不到浏览器兼容。我把网上有关的方法整理了一下,做了些改动,完全可以兼容各主流浏览器。

下面具体说一下在不同情况下垂直居中的方法。

一、一行文字垂直居中

看一下下面的代码:

方法:line-height:20px。设置相同的行高和对象高度。

说明:这种设置简单又兼容各种浏览器,支持内联对象。但如果是固定高度的对象,只能显示一行。当有两行文字时,如果不设置“overflow:hidden”会把对象撑开。

二、多行文字,且高度自适应

请看下面的代码:

方法:padding-top:10px; padding-bottom:10px。设置相同的上下内边距。

说明:兼容各种浏览器,支持内联对象,同时又支持非文本对象,如img。但有一个缺点就是对象的高度不能固定。

三、固定高度的多行文字垂直居中

这种方法比较复杂,我也会详细说明的。下面还是先看代码:

方法:

(1)vertical-align:middle; display:table-cell。这种方法的意思是:将对象强制转换为Table,vertical-align:middle的作用和表格中的valign="center"相同。

本来是很方便的一个属性,但IE不支持这个属性。为了使各浏览器兼容,我们不得不想其他的方法。

(2)在对象内建立一个子对象,并在子对象内再建立一个子对象或段落。网页中:

<div id="a"><div><p>这里具有多行文字,高度是50px这里具有多行文字,高度是50px</p></div></div>

CSS中:

p {margin:0;}:因为在FireFox中默认P是有间距的

#a {height:50px;position:relative;}:设置高度50,如果要是子对象相对它定位,则要设置position:relative

#a div {*position:absolute;*top:50%;}:前面加星号“*”只有IE支持,其他浏览器会忽略此设置。position:absolute设置了此子对象的定位为绝对定位,top:50%设置了显示在距顶端50%的位置,即25px(因为上面设置了父对象的高度为50px)。

#a div p {*position:relative;*top:-50%;}:这段代码只能先理解为向上移动剩下高度的50%。因为top设置了负值,相当于向相反的方向移动。

说明:支持主流浏览器(在IE6,FireFox2下测试)。

本人会不断将最新的信息及时更新,也欢迎和广大的朋友交流。

Posted by: 郁闷
相关话题:
  • 暂无相关话题

Comments(3)

好文章!帮我解决了大问题啊!你不是因为IE才叫郁闷的吧?哈哈!

一月 5th, 2008Posted by: ice9feng.ice#hotmail.com

请问一下,用margin和margin-top以及maigin-bottom的区别

比如设置为
margin:5px 0px;

margin-top:5px;
margin-bottom:5px;

在IE6和IE7的显示有什么不同

一月 10th, 2008Posted by: gelan15gelaninwind#163.com

二者在效果上没什么不同,只不过margin:5px 0px这样的设置更简洁。
如果设置了浮动(float)属性后IE6下可能会出现如:双倍边距、文字溢出、3px等的bug。在某些情况下margin-bottom会失效,这点我会在以后的文章中介绍。

一月 10th, 2008Posted by: highps16high_ps#163.com
User Name:
(必添)
User Email:
(必添)
User URL:
Comment:
(必添)