CSS中怎样设置才能使对象中的文字垂直居中于对象,这个问题也是捆扰很多朋友的难题。现在网上的很多代码都做不到浏览器兼容。我把网上有关的方法整理了一下,做了些改动,完全可以兼容各主流浏览器。
下面具体说一下在不同情况下垂直居中的方法。
一、一行文字垂直居中
看一下下面的代码:
Code
Code
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
5 <title>垂直居中</title>
6 <script type="text/javascript" language="javascript">
7 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;}}
8 </script>
9 <style type="text/css">
10 #all {
11 width:240px;
12 padding:10px;
13 font-size:12px;
14 color:#FFF;
15 background-color:#CCC;
16 }
17 #sub {
18 width:230px;
19 padding:0 5px;
20 height:20px;
21 overflow:hidden;
22 background-color:#F90;
23 }
24 #sel {
25 margin-top:5px;
26 }
27 select {
28 width:260px;
29 }
30 </style>
31 </head>
32 <body>
33 <div id="all">
34 <div id="sub">一行文字垂直居中,此对象高度为20px</div>
35 </div>
36 <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>
37 </body>
38 </html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
5 <title>垂直居中</title>
6 <script type="text/javascript" language="javascript">
7 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;}}
8 </script>
9 <style type="text/css">
10 #all {
11 width:240px;
12 padding:10px;
13 font-size:12px;
14 color:#FFF;
15 background-color:#CCC;
16 }
17 #sub {
18 width:230px;
19 padding:0 5px;
20 height:20px;
21 overflow:hidden;
22 background-color:#F90;
23 }
24 #sel {
25 margin-top:5px;
26 }
27 select {
28 width:260px;
29 }
30 </style>
31 </head>
32 <body>
33 <div id="all">
34 <div id="sub">一行文字垂直居中,此对象高度为20px</div>
35 </div>
36 <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>
37 </body>
38 </html
方法:line-height:20px。设置相同的行高和对象高度。
说明:这种设置简单又兼容各种浏览器,支持内联对象。但如果是固定高度的对象,只能显示一行。当有两行文字时,如果不设置“overflow:hidden”会把对象撑开。
二、多行文字,且高度自适应
请看下面的代码:
Code
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
5 <title>垂直居中</title>
6 <script type="text/javascript" language="javascript">
7 function sel(id) {switch(id) {case "1":document.getElementById("sub").innerHTML = "三行文字垂直居中,设置相同的内上边距padding-top和内下边距padding-bottom就可以。";break;case "2":document.getElementById("sub").innerHTML = "两行文字垂直居中,设置相同的内上下边距padding-top和padding-bottom就可以。";break;case "3":document.getElementById("sub").innerHTML = "一行文字垂直居中,内上下边距相同。";break;}}
8 </script>
9 <style type="text/css">
10 #all {
11 float:left;
12 width:240px;
13 padding:10px;
14 font-size:12px;
15 color:#FFF;
16 background-color:#CCC;
17 }
18 #sub {
19 float:left;
20 width:230px;
21 padding:10px 5px;
22 background-color:#F90;
23 }
24 #sel {
25 clear:both;
26 padding-top:5px;
27 width:260px;
28 }
29 select {
30 width:260px;
31 }
32 </style>
33 </head>
34 <body>
35 <div id="all">
36 <div id="sub">三行文字垂直居中,设置相同的内上边距padding-top和内下边距padding-bottom就可以。</div>
37 </div>
38 <div id="sel"><select onchange="sel(this.value)"><option value="1">三行文字垂直居中</option><option value="2">两行文字垂直居中</option><option value="3">一行文字垂直居中</option></select></div>
39 </body>
40 </html>
41 <br />
42 <DIV id="page_123" class="cGreen"><a href='#'>上一页</a><strong>1</strong><a href='07-1359_2.html'>2</a> <a href='07-1359_2.html'>下一页</a> </DIV>
43 <!--操作-->
44 <div class="context">
45 <div id='digg1359' class='diggArea'>
46 <div class='diggNum'>0</div>
47 <div class="diggLink"><a href="javascript:Digg('digg',1359);">顶一下</a></div>
48 </div>
49
50 <div style="float:left; margin-left:20px; margin-top:10px">
51 上一篇:<a href='/html/jianzhanjiaocheng/wangyesheji/200809/07-1358.html'>web标准中Iframe自适应高度[ie_firefox下都可用]</a>
52 <br />
53 下一篇:<a href='/html/jianzhanjiaocheng/wangyesheji/200809/07-1360.html'>让IE6乖乖的使用mediatype样式</a>
54 </div>
55
56 </div>
57
58 <DIV id=ArtInfo style="FONT-SIZE: 12px"> <span>[ <a href="/plus/stow.php?arcID=1359">收藏 </a>]</span> <span>[<a href="/plus/recommend.php?arcID=1359"> 推荐 </a>]</span> <span>[<a href="/plus/feedback.php?arcID=1359"> 评论 </a>]</span> <span>[ <a href="#" onClick="window.print();">打印 </a>]</span> <span>[<a href="#" onClick="window.close();"> 关闭 </a>]</span> </DIV>
59 <DIV id=Preadblock></DIV>
60 <!--[if !IE]>|xGv00|def10af2b706d708d2fae346402958b1<![endif]--><!--/link--><!--/link--></DIV>
61 <SCRIPT type=text/javascript>
62 var tclStr = document.getElementById("Preadblock").innerHTML;
63 var artInfoStr2 = document.getElementById("ArtInfo2");
64 var artInfoStr1 = document.getElementById("ArtInfo");
65 if(tclStr.length>0){
66 artInfoStr2.innerHTML=artInfoStr1.innerHTML;
67 artInfoStr2.className="yanselan";
68 artInfoStr1.innerHTML="";
69 artInfoStr1.style.display = "none";
70
71 }
72 else{
73 artInfoStr2.style.display = "none";
74 artInfoStr2.className="";
75 }
76 </SCRIPT>
77 <!--[if !IE]>|xGv00|41346b3287db3847e4d38b597a7b0a4f<![endif]-->
78 <!--[if !IE]>|xGv00|8562b5198b819aae2599422d037fbd8e<![endif]-->
79 <DIV id=newsAbout>
80 <DL>
81 <DT>
82 <P class=Ltitle>相关新闻</P></DT>
83 <DD>
84 <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center bgColor=#666666
85 border=0>
86 <TBODY>
87 <TR>
88 <TD
89 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
90 vAlign=top width="62%" bgColor=#ffffff>
91 <TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%"
92 align=center bgColor=#666666 border=0><!--relaTitleS-->
93 <TBODY>
94 <TR>
95 <TD
96 width="40%" align="center" bgColor=#ffffff
97 style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px"> </TD>
98 <TD
99 width="60%" align="left" bgColor=#ffffff
100 style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px">·
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 <html xmlns="http://www.w3.org/1999/xhtml">
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
5 <title>垂直居中</title>
6 <script type="text/javascript" language="javascript">
7 function sel(id) {switch(id) {case "1":document.getElementById("sub").innerHTML = "三行文字垂直居中,设置相同的内上边距padding-top和内下边距padding-bottom就可以。";break;case "2":document.getElementById("sub").innerHTML = "两行文字垂直居中,设置相同的内上下边距padding-top和padding-bottom就可以。";break;case "3":document.getElementById("sub").innerHTML = "一行文字垂直居中,内上下边距相同。";break;}}
8 </script>
9 <style type="text/css">
10 #all {
11 float:left;
12 width:240px;
13 padding:10px;
14 font-size:12px;
15 color:#FFF;
16 background-color:#CCC;
17 }
18 #sub {
19 float:left;
20 width:230px;
21 padding:10px 5px;
22 background-color:#F90;
23 }
24 #sel {
25 clear:both;
26 padding-top:5px;
27 width:260px;
28 }
29 select {
30 width:260px;
31 }
32 </style>
33 </head>
34 <body>
35 <div id="all">
36 <div id="sub">三行文字垂直居中,设置相同的内上边距padding-top和内下边距padding-bottom就可以。</div>
37 </div>
38 <div id="sel"><select onchange="sel(this.value)"><option value="1">三行文字垂直居中</option><option value="2">两行文字垂直居中</option><option value="3">一行文字垂直居中</option></select></div>
39 </body>
40 </html>
41 <br />
42 <DIV id="page_123" class="cGreen"><a href='#'>上一页</a><strong>1</strong><a href='07-1359_2.html'>2</a> <a href='07-1359_2.html'>下一页</a> </DIV>
43 <!--操作-->
44 <div class="context">
45 <div id='digg1359' class='diggArea'>
46 <div class='diggNum'>0</div>
47 <div class="diggLink"><a href="javascript:Digg('digg',1359);">顶一下</a></div>
48 </div>
49
50 <div style="float:left; margin-left:20px; margin-top:10px">
51 上一篇:<a href='/html/jianzhanjiaocheng/wangyesheji/200809/07-1358.html'>web标准中Iframe自适应高度[ie_firefox下都可用]</a>
52 <br />
53 下一篇:<a href='/html/jianzhanjiaocheng/wangyesheji/200809/07-1360.html'>让IE6乖乖的使用mediatype样式</a>
54 </div>
55
56 </div>
57
58 <DIV id=ArtInfo style="FONT-SIZE: 12px"> <span>[ <a href="/plus/stow.php?arcID=1359">收藏 </a>]</span> <span>[<a href="/plus/recommend.php?arcID=1359"> 推荐 </a>]</span> <span>[<a href="/plus/feedback.php?arcID=1359"> 评论 </a>]</span> <span>[ <a href="#" onClick="window.print();">打印 </a>]</span> <span>[<a href="#" onClick="window.close();"> 关闭 </a>]</span> </DIV>
59 <DIV id=Preadblock></DIV>
60 <!--[if !IE]>|xGv00|def10af2b706d708d2fae346402958b1<![endif]--><!--/link--><!--/link--></DIV>
61 <SCRIPT type=text/javascript>
62 var tclStr = document.getElementById("Preadblock").innerHTML;
63 var artInfoStr2 = document.getElementById("ArtInfo2");
64 var artInfoStr1 = document.getElementById("ArtInfo");
65 if(tclStr.length>0){
66 artInfoStr2.innerHTML=artInfoStr1.innerHTML;
67 artInfoStr2.className="yanselan";
68 artInfoStr1.innerHTML="";
69 artInfoStr1.style.display = "none";
70
71 }
72 else{
73 artInfoStr2.style.display = "none";
74 artInfoStr2.className="";
75 }
76 </SCRIPT>
77 <!--[if !IE]>|xGv00|41346b3287db3847e4d38b597a7b0a4f<![endif]-->
78 <!--[if !IE]>|xGv00|8562b5198b819aae2599422d037fbd8e<![endif]-->
79 <DIV id=newsAbout>
80 <DL>
81 <DT>
82 <P class=Ltitle>相关新闻</P></DT>
83 <DD>
84 <TABLE cellSpacing=0 cellPadding=0 width="100%" align=center bgColor=#666666
85 border=0>
86 <TBODY>
87 <TR>
88 <TD
89 style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; PADDING-TOP: 0px"
90 vAlign=top width="62%" bgColor=#ffffff>
91 <TABLE height="100%" cellSpacing=0 cellPadding=0 width="100%"
92 align=center bgColor=#666666 border=0><!--relaTitleS-->
93 <TBODY>
94 <TR>
95 <TD
96 width="40%" align="center" bgColor=#ffffff
97 style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px"> </TD>
98 <TD
99 width="60%" align="left" bgColor=#ffffff
100 style="PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; PADDING-TOP: 5px">·