CSS实现文本垂直居中的三种情况

开发 前端
本文向大家介绍一下如何使用CSS实现一行或多行文本垂直居中,在单元格中,默认就是垂直居中的,而进行CSS网页布局,这样的形式改变了,文字默认是居于容器顶部。

你对CSS中文本垂直居中问题是否了解,这里和大家分享一下CSS实现一行或多行文本垂直居中的方法,主要从三个方面向大家介绍。

CSS实现一行或多行文本垂直居中

  在表格布局时代,不需要过多的考虑垂直居中的问题,在单元格中,默认就是垂直居中的,一行文字是垂直居中,三行文字同样也会垂直居中。进行CSS网页布局,这样的形式改变了。文字默认是居于容器顶部。

  如下所示:

SourceCodetoRun 

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"  
  2.  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  4. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  5. <head> 
  6. <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> 
  7. <title>div-css.net</title> 
  8. <styletypestyletype="text/css"> 
  9. #MrJin{  
  10. width:500px;  
  11. height:200px;  
  12. border:1pxsolid#03c;  
  13. text-align:center;  
  14. }  
  15. </style> 
  16. </head> 
  17. <body> 
  18. <dividdivid="MrJin">CSSWebDesign-div-css.net</div> 
  19. </body> 
  20. </html> 
  21.  

 [可先修改部分代码再运行查看效果]

  在这样的情况下,如何实现文字垂直居中呢。分为三种情况:

一、如果是单行文本,可以用行距来解决问题。

  在div-css.net以前的文章中,也有过这方面的介绍。
  如何在父元素中垂直居中文本?
  我们为它增加行距的定义,得到了单行文本垂直居中的效果。

SourceCodetoRun 

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"  
  2.  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  4. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  5. <head> 
  6. <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> 
  7. <title>div-css.net</title> 
  8. <styletypestyletype="text/css"> 
  9. #MrJin{  
  10. width:500px;  
  11. height:200px;  
  12. border:1pxsolid#03c;  
  13. text-align:center;  
  14. line-height:200px;  
  15. }  
  16. </style> 
  17. </head> 
  18. <body> 
  19. <dividdivid="MrJin">CSSWebDesign-div-css.net</div> 
  20. </body> 
  21. </html> 
  22.  

 [可先修改部分代码再运行查看效果]

二、如果是多行文本,父容器不固定高度。

  我们可以用padding来解决问题。

  设置容器的padding上下为相同的固定值,容器的高度随着内容的增加而增加。
  以此来实现多行文本的垂直居中。

SourceCodetoRun 

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"  
  2.  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  4. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  5. <head> 
  6. <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> 
  7. <title>div-css.net</title> 
  8. <styletypestyletype="text/css"> 
  9. #MrJin{  
  10. width:500px;  
  11. padding:50px0;  
  12. border:1pxsolid#03c;  
  13. text-align:center;  
  14. }  
  15. </style> 
  16. </head> 
  17. <body> 
  18. <dividdivid="MrJin"><p>CSSWebDesign-div-css.net</p> 
  19.  
  20. <p>致力于Web标准在中国的应用及发展</p></div> 
  21. </body> 
  22. </html> 
  23.  

[可先修改部分代码再运行查看效果]  #p#

三、如果是多行文本,父容器固定高度。

  这就需要用到定位,而且需要给HTML增加标签。我们不提倡这样做。
  但目前这个方法可以更好的解决问题。
  在容器的内部需要增设两个容器,来实现这样的效果。
  MrJin、MrJin_a和MrJin_b的设置分别如下:

ExampleSourceCode 

  1. #MrJin{  
  2. position:static;  
  3. *position:relative;  
  4. height:300px;  
  5. width:500px;  
  6. border:1pxsolid#03c;  
  7. *display:block!important;  
  8. display:table!important;  
  9. }  
  10. #MrJin_a{  
  11. position:static;  
  12. *position:absolute;  
  13. display:table-cell;  
  14. vertical-align:middle;  
  15. *display:block;  
  16. top:50%;  
  17. width:100%;  
  18. }  
  19. #MrJin_b{  
  20. position:relative;  
  21. top:-50%;  
  22. text-align:center;  
  23. width:100%;  
  24. }  

  这样设置以后,不管容器内的文本是一行,还是多行,都将会实现垂直居中对齐。

SourceCodetoRun 

  1. <!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Strict//EN"  
  2.  
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
  4. <htmlxmlnshtmlxmlns="http://www.w3.org/1999/xhtml"> 
  5. <head> 
  6. <metahttp-equivmetahttp-equiv="Content-Type"content="text/html;charset=utf-8"/> 
  7. <title>div-css.net</title> 
  8. <styletypestyletype="text/css"> 
  9. #MrJin{  
  10. position:static;  
  11. *position:relative;  
  12. height:300px;  
  13. width:500px;  
  14. border:1pxsolid#03c;  
  15. *display:block!important;  
  16. display:table!important;  
  17. }  
  18. #MrJin_a{  
  19. position:static;  
  20. *position:absolute;  
  21. display:table-cell;  
  22. vertical-align:middle;  
  23. *display:block;  
  24. top:50%;  
  25. width:100%;  
  26. }  
  27. #MrJin_b{  
  28. position:relative;  
  29. top:-50%;  
  30. text-align:center;  
  31. width:100%;  
  32. }  
  33. </style> 
  34. </head> 
  35. <body> 
  36. <dividdivid="MrJin"> 
  37. <dividdivid="MrJin_a"> 
  38. <dividdivid="MrJin_b"> 
  39. CSSWebDesign-div-css.net  
  40. </div> 
  41. </div> 
  42. </div> 
  43. </body> 
  44. </html> 
  45.  

[可先修改部分代码再运行查看效果]
  
文章来源:Div-Css.net设计网参考:http://www.div-css.net/div_css/topic/index.asp?id=10091

【编辑推荐】

  1. DIV+CSS解决文字与图片居中问题
  2. IE6.0对padding的解读分析
  3. 揭露CSS中margins折叠现象内幕
  4. 七大CSS选择符用法说明
  5. 技术分享 如何使用CSS控制超链接文字样式
责任编辑:佚名 来源: div-css.net
相关推荐

2012-06-20 13:46:23

CSS

2021-07-26 08:31:17

算法

2018-09-18 11:20:07

css html5javascript

2010-08-27 10:30:16

CSS垂直居中

2010-09-10 08:54:52

DIV居中

2023-12-04 09:31:13

CSS卡片

2024-07-31 20:38:18

2010-08-31 14:49:57

CSS居中

2010-09-07 16:31:27

CSS

2022-12-20 15:17:29

CSS开发

2010-09-09 10:23:23

DIVCSS垂直居中

2010-09-02 13:03:38

CSS垂直居中

2010-09-01 10:49:57

CSS水平居中垂直居中

2010-09-02 16:26:59

CSS命名

2010-08-26 16:19:41

DIV圆角

2022-03-16 14:27:49

CSS三角形前端

2010-09-06 10:04:31

CSS样式表

2010-08-26 11:27:35

CSS居中

2010-09-14 15:10:49

CSS注释

2010-09-08 13:29:48

CSS
点赞
收藏

51CTO技术栈公众号