多行文本垂直居中

1.单行文本的垂直居中

div {   
  height:25px;   
  line-height:25px;   
}

2.多行文本高度不固定的居中

div {   
  padding:25px;   
} 

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

CSS中的vertical-align属性只会对拥有valign特性的(X)HTML标签起作用,但是在CSS中还有一个display属性能够模拟<table>,所以我们可以使用这个属性来让<div>模拟<table>就可以使用vertical-align了。注意,display:table和display:table-cell的使用方法,前者必须设置在父元素上,后者必须设置在子元素上,因此我们要为需要定位的文本再增加一个<div>元素:

<head>    
    <title> 多行文字实现垂直居中 </title>    
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />    
    <style type="text/css">    
      body { font-size:12px;font-family:tahoma;}    
        div#wrap {    
        height:400px; 
        width: 400px;   
        display:table;    
      }    
      div#content {    
        vertical-align:middle;    
        display:table-cell;    
        border:1px solid #FF0099;    
        background-color:#FFCCFF;    
         width: 400px;     
      }    
    </style>    
  </head>    
  <body>    
    <div id="wrap">    
      <div id="content">现在我们要使这段文字垂直居中显示!    
        现在我们要使这段文字垂直居中显示!    现在我们要使这段文字垂
      直居中显示!    现在我们要使这段文字垂直居中显示! 
     现在我们要使这段文字垂直居中显示!    
      </div>    
    </div>    
  </body>    

4.多行文本高度固定兼容性问题

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

.outer {
  display:table; width:578px; overflow:hidden; 
  background: #eee; height: 42px;
}
.middle {display:table-cell; vertical-align:middle; margin-left 10px;} 


/*下面的CSS是针对IE7,IE6*/
<!--[if lte IE 7]>
<style>
.outer{position:relative;}
.middle{position: absolute; top: 50%;}
.inner{position: relative; top:-50%}
</style>
<![endif]-->

1.利用line-height实现多行文本居中

每行文字都有一个line boxes包裹,具体大小由line boxes决定。其实line boxes不是直接的生产者,属于中层干部,真正的活儿都是它的手下 – inline boxes干的,这些手下就是文字啦,图片啊,span之类的inline属性的标签啦。
line boxes只是个考察汇报人员,考察它的手下谁的实际line-height值最高,谁最高,它就要谁的值,然后向上汇报,形成高度。例如,<span style="line-height:20px;">取手下line-height<span style="line-height:40px;">最高</span>的值</span>。则line boxes的高度就是40像素了。

如下图所示,右边的空格是为了撑开div,给span添加inline-box是为了是元素具有单行效果,只有一个inline box;

Paste_Image.png
.mulit_line{line-height:150px; border:1px dashed #cccccc; padding-left:5px;}
.mulit_line span{display:-moz-inline-stack; display:inline-block; line-height:1.4em; vertical-align:middle;}
.mulit_line i{width:0; display:-moz-inline-stack; display:inline-block; vertical-align:middle; font-size:0;}
<p class="mulit_line">
    <span style="font-size:12px;">这里是高度为150像素的标签内的
   多行文字,文字大小为12像素。
   <br />这里是第二行,用来测试多行的显示效果。</span><i> </i>
</p>

2.同理实现图片的居中

Paste_Image.png
.zxx_ul_image{overflow:hidden; zoom:1;}
.zxx_ul_image li{float:left; width:150px; height:150px; text-align:center; line-height:150px;}
.zxx_ul_image li:after{content:' '; vertical-align:middle;}
.zxx_ul_image li img{vertical-align:middle;}
<ul class="zxx_ul_image">
    <li>![](http://upload-images.jianshu.io/upload_images/2061490-47f17b55ca94d3c4.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</li>
    <li>![](http://upload-images.jianshu.io/upload_images/2061490-fdd5a99fb5f0f713.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</li>
    <li>![](http://upload-images.jianshu.io/upload_images/2061490-62afc090eb3ba9a7.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</li>
    <li>![](http://upload-images.jianshu.io/upload_images/2061490-6ec1ef61ae1e74ef.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</li>
    <li>![](http://upload-images.jianshu.io/upload_images/2061490-98bcceecadd6c386.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</li>
    <li>![](http://upload-images.jianshu.io/upload_images/2061490-2e7722950da8926a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)</li>  
</ul>

参考http://www.zhangxinxu.com/wordpress/?p=384

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,679评论 1 92
  • 以下文章是我在网上收集的内容,为了记录自己的学习以及为了以后不到处找而记录下来,如果对你有用,请感谢写这些文章的前...
    DCbryant阅读 4,463评论 0 2
  • 收听音频,戳链接,旧号itclan已暂停使用,欢迎关注微信itclanCoder公众号可收听更多音频 前言 关于网...
    itclanCoder阅读 12,527评论 3 30
  • 水平居中设置-行内元素 我们在实际工作中常会遇到需要设置水平居中的场景,比如为了美观,文章的标题一般都是水平居中显...
    CAICL阅读 3,237评论 0 3
  • 我不知你何时会来,我不知你身在何方,正如你不知我一样。 如果你问我,过去的日子过的怎么样?我想说在过去的时候都很好...
    我就是爱浪漫阅读 962评论 0 0