当前位置: 首页 > 图文教程 > 网页制作 > CSS样式表 > css实现文字垂直居中的代码

CSS样式表
CSS网页设计 IE8和IE7共存
CSS2 打印属性让打印HTML文档不出问题
制作网页中设计段落缩进的方法
CSS border 属性使用说明
CSS border-style 属性使用方法
CSS border-color 属性使用方法
CSS border-width 属性使用教程
CSS padding属性定义边内补白
CSS margin 属性定义边外补白
网页布局教程 掌握CSS网页布局属性
css 背景样式属性说明
span margin 设置生效
html 滚动条在IE6和IE7中兼容性问题
IE6 两个div有间隙的问题(IE 3px bug)
CSS 数字和字母将容器撑大问题解决
换个角度看页面重构中的语义化
DIY属于个人开发使用的CSS Reset
CSS 空格引起网页布局间距问题
CSS 网页制作时遇到问题的快速参考技巧
css li 去掉点的样式写法

CSS样式表 中的 css实现文字垂直居中的代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 520 ::
收藏到网摘: n/a

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>软晨学习网-css垂直居中</title>
<script type="text/javascript" language="javascript">
function sel(id) {switch(id) {case "1":document.getElementById("sub").style.lineHeight = "normal";break;case "2":document.getElementById("sub").style.lineHeight = "20px";break;case "3":document.getElementById("sub").style.lineHeight = "28px";break;}}
</script>
<style type="text/css">
#all {
width:240px;
padding:10px;
font-size:12px;
color:#FFF;
background-color:#CCC;
}
#sub {
width:230px;
padding:0 5px;
height:20px;
overflow:hidden;
background-color:#F90;
}
#sel {
margin-top:5px;
}
select {
width:260px;
}
</style>
</head>
<body>
<div id="all">
<div id="sub">一行文字垂直居中,此对象高度为20px</div>
</div>
<div id="sel"><select onchange="sel(this.value)"><option value="1">默认值,设置行高为:normal</option><option value="2">设置行高和对象高度相同:20px</option><option value="3">设置行高比对象的高度大:28px</option></select></div>
</body>
</html>

方法:line-height:20px。设置相同的行高和对象高度。
说明:这种设置简单又兼容各种浏览器,支持内联对象。但如果是固定高度的对象,只能显示一行。当有两行文字时,如果不设置“overflow:hidden”会把对象撑开。
二、多行文字,且高度自适应
请看下面的代码:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

方法:padding-top:10px; padding-bottom:10px。设置相同的上下内边距。
说明:兼容各种浏览器,支持内联对象,同时又支持非文本对象,如img。但有一个缺点就是对象的高度不能固定。

三、固定高度的多行文字垂直居中
这种方法比较复杂,我也会详细说明的。下面还是先看代码:
点击运行可以看到效果:
[Ctrl+A 全选 提示:你可先修改部分代码,再按运行]

方法:
(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下测试)。