多行文本垂直居中

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> 多行文字實現(xiàn)垂直居中 </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">現(xiàn)在我們要使這段文字垂直居中顯示!    
        現(xiàn)在我們要使這段文字垂直居中顯示!    現(xiàn)在我們要使這段文字垂
      直居中顯示!    現(xiàn)在我們要使這段文字垂直居中顯示! 
     現(xiàn)在我們要使這段文字垂直居中顯示!    
      </div>    
    </div>    
  </body>    

4.多行文本高度固定兼容性問題

在Internet Explorer 6及以下版本中,在高度的計算上存在著缺陷的。在Internet Explorer 6中對父元素進行定位后,如果再對子元素進行百分比計算時,計算的基礎似乎是有繼承性的(如果定位的數(shù)值是絕對數(shù)值沒有這個問題,但是使用百分比計算的基礎將不再是該元素的高度,而從父元素繼承來的定位高度)。

.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實現(xiàn)多行文本居中

每行文字都有一個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.同理實現(xiàn)圖片的居中

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,150評論 1 92
  • 以下文章是我在網上收集的內容,為了記錄自己的學習以及為了以后不到處找而記錄下來,如果對你有用,請感謝寫這些文章的前...
    DCbryant閱讀 1,028評論 0 2
  • 收聽音頻,戳鏈接,舊號itclan已暫停使用,歡迎關注微信itclanCoder公眾號可收聽更多音頻 前言 關于網...
    itclanCoder閱讀 8,349評論 3 30
  • 水平居中設置-行內元素 我們在實際工作中常會遇到需要設置水平居中的場景,比如為了美觀,文章的標題一般都是水平居中顯...
    CAICL閱讀 504評論 0 3
  • 我不知你何時會來,我不知你身在何方,正如你不知我一樣。 如果你問我,過去的日子過的怎么樣?我想說在過去的時候都很好...
    我就是愛浪漫閱讀 164評論 0 0

友情鏈接更多精彩內容