CSS教程之div垂直居中的多种方法

这篇文章主要为大家详细介绍了css教程之p垂直居中的多种方法,还包括多行文本垂直居中的方法,感兴趣的小伙伴们可以参考一下

在说到这个问题的时候,也许有人会问CSS中不是有vertical-alignvertical-align来设置垂直居中的吗?即使是某些浏览器不支持我只需做少许的CSS Hack技术就可以啊!所以在这里我还要啰嗦两句,CSS中的确是有vertical-align属性,但是它只对(X)vertical-align中拥有valign特性的元素才生效,例如表格元素中的

、 等,而像

、这样的元素是没有valign特性的,因此使用vertical-align对它们不起作用。

一、单行垂直居中

如果一个容器中只有一行文字,对它实现居中相对比较简单,我们只需要设置它的实际高度vertical-align和所在行的高度vertical-align相等即可。

如:

立即学习“前端免费学习笔记(深入)”;

  1. {              height:25px;              line-height:25px;              overflow:hidden;       }

登录后复制

这段代码很简,后面使用overflow:hidden的设置是为了防止内容超出容器或者产生自动换行,这样就达不到垂直居中效果了。

  1. nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <span class="pln"> </span><span class="pun">单行文字实现垂直居中</span><span class="pln"> </span>     body { font-size:12px;font-family:tahoma;} p { height:25px; line-height:25px; border:1px solid #FF0099; background-color:#FFCCFF; }     

    现在我们要使这段文字垂直居中显示!

     

登录后复制

二、多行未知高度文字的垂直居中

如果一段内容,它的高度是可变的那么我们就可以使用上一节讲到的实现水平居中时使用到的最后一种方法,就是设定vertical-align,使上下的padding值相同即可。同样的,这也是一种“看起来”的垂直居中方式,它只不过是使文字把

完全填充的一种访求而已。可以使用类似下面的代码:

  1. {       padding:25px;      }

登录后复制

这种方法的优点就是它可以在任何浏览器上运行,并且代码很简单,只不过这种方法应用的前提就是容器的高度必须是可伸缩的。

  1. nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <span class="pln"> </span><span class="pun">多行文字实现垂直居中</span><span class="pln"> </span>     body { font-size:12px;font-family:tahoma;} p { padding:25px; border:1px solid #FF0099; background-color:#FFCCFF; width:760px; }     

    现在我们要使这段文字垂直居中显示!      p {     padding:25px;     border:1px solid #FF0099;     background-color:#FFCCFF;    }   
  2. 登录后复制

  3. 三、多行文本固定高度的居中

  4. 在本文的一开始,我们已经说过CSS中的vertical-align属性只会对拥有valign特性的(X)vertical-align起作用,但是在CSS中还有一个vertical-align属性能够模拟

  5. ,所以我们可以使用这个属性来让

  6. 模拟

  7. 就可以使用vertical-align了。注意,display:tabledisplay:table-cell的使用方法,前者必须设置在父元素上,后者必须设置在子元素上,因此我们要为需要定位的文本再增加一个

  8. 元素:

  9. p#wrap {          height:400px;       display:table;      }      p#content {        vertical-align:middle;          display:table-cell;         border:1px solid #FF0099;       background-color:#FFCCFF;       width:760px;      }
  10. 登录后复制

  11. nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <span class="pln"> </span><span class="pun">多行文字实现垂直居中</span><span class="pln"> </span>     body { font-size:12px;font-family:tahoma;}    p#wrap {     height:400px;     display:table;    }    p#content {     vertical-align:middle;     display:table-cell;     border:1px solid #FF0099;     background-color:#FFCCFF;     width:760px;    }        

      

    现在我们要使这段文字垂直居中显示! Webjx.Com     p#wrap {     height:400px;     display:table;    }    p#content {     vertical-align:middle;     display:table-cell;     border:1px solid #FF0099;     background-color:#FFCCFF;     width:760px;    }   
  12. 登录后复制

  13.  

  14. 这个方法应该是很理想了,但是不幸的是Internet Explorer 6 并不能正确地理解display:tabledisplay:table-cell,因此这种方法在Internet Explorer 6及以下的版本中是无效的。嗯,这让人很郁闷!不过我们还其它的办法

  15. 四、在Internet Explorer中的解决方案

  16. Internet Explorer 6及以下版本中,在高度的计算上存在着缺陷的。在Internet Explorer 6中对父元素进行定位后,如果再对子元素进行百分比计算时,计算的基础似乎是有继承性的(如果定位的数值是绝对数值没有这个问题,但是使用百分比计算的基础将不再是该元素的高度,而从父元素继承来的定位高度)。例如,我们有下面这样一个(X)HTML代码段:

  17.       

            

          

            
  18. 登录后复制

  19. 如果我们对subwrap进行了vertical-align,那么content也会继承了这个这个属性,虽然它不会在页面中马上显示出来,但是如果再对content进行相对定位的时候,你使用的100%分比将不再是content原有的高度。例如,我们设定了subwrapvertical-align40%,我们如果想使content的上边缘和wrap重合的话就必须设置vertical-align:-80%;那么,如果我们设定subwraptop:50%的话,我们必须使用100%才能使content回到原来的位置上去,但是如果我们把content也设置50%呢?那么它就正好垂直居中了。所以我们可以使用这中方法来实现Internet Explorer 6中的垂直居中:

  20. p#wrap {          border:1px solid #FF0099;       background-color:#FFCCFF;       width:760px;        height:400px;       position:relative;      }      p#subwrap {        position:absolute;          border:1px solid #000;          top:50%;      }      p#content {          border:1px solid #000;          position:relative;          top:-50%;      }
  21. 登录后复制

  22. 当然,这段代码只能在Internet Exlporer 6等计算存在问题的浏览器中才会有作用。(不过我不解,我查阅了很多文章,不知道是因为出处相同还是什么原因,似乎很多人都不愿意去解释Internet Exlporer 6中这这个Bug的原理,我也只是了解了一点皮毛,还要再研究)

  23. nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <span class="pln"> </span><span class="pun">多行文字实现垂直居中</span><span class="pln"> </span>     body { font-size:12px;font-family:tahoma;}    p#wrap {     border:1px solid #FF0099;     background-color:#FFCCFF;     width:760px;     height:400px;     position:relative;    }    p#subwrap {     position:absolute;     top:50%;    }    p#content {     position:relative;     top:-50%;    }        

      

       

    现在我们要使这段文字垂直居中显示!    p#wrap {     border:1px solid #FF0099;     background-color:#FFCCFF;     width:760px;     height:500px;     position:relative;    }    p#subwrap {     position:absolute;     border:1px solid #000;     top:50%;    }    p#content {     border:1px solid #000;     position:relative;     top:-50%;    }
  24. 登录后复制  

  25.   

  26. 五、完美的解决方案

  27. 那么我们综合上面两种方法就可以得到一个完美的解决方案,不过这要用到CSS hack的知识。对于如果使用CSS Hack来区分浏览器,你可

  28. 以参考这篇“简单CSS hack:区分IE6IE7IE8FirefoxOpera”:

  29. p#wrap {          display:table;          border:1px solid #FF0099;       background-color:#FFCCFF;       width:760px;        height:400px;       _position:relative;         overflow:hidden;      }      p#subwrap {          vertical-align:middle;          display:table-cell;         _position:absolute;         _top:50%;      }      p#content {         _position:relative;         _top:-50%;      }
  30. 登录后复制

  31. 至此,一个完美的居中方案就产生了。

  32. nbsp;html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   <span class="pln"> </span><span class="pun">多行文字实现垂直居中</span><span class="pln"> </span>     body { font-size:12px;font-family:tahoma;}    p#wrap {     display:table;     border:1px solid #FF0099;     background-color:#FFCCFF;     width:760px;     height:400px;     _position:relative;     overflow:hidden;    }    p#subwrap {     vertical-align:middle;     display:table-cell;     _position:absolute;     _top:50%;    }    p#content {      _position:relative;     _top:-50%;    }        

      

       

    现在我们要使这段文字垂直居中显示!    p#wrap {     border:1px solid #FF0099;     background-color:#FFCCFF;     width:760px;     height:500px;     position:relative;    }    p#subwrap {     position:absolute;     border:1px solid #000;     top:50%;    }    p#content {     border:1px solid #000;     position:relative;     top:-50%;    }
  33. 登录后复制  

  34.   

  35. 以上就是本文的全部内容,希望对大家的学习有所帮助。

以上就是CSS教程之div垂直居中的多种方法的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    CSS超出文本指定宽度用省略号代替和文本不换行分析

    2025-3-11 2:21:58

    编程技术

    CSS默认可继承样式详细说明

    2025-3-11 2:23:09

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索