固定高的塊多行文字垂直居中的幾種解決方案


單行文本垂直居中的方法很簡單,就是設置line-height與外部塊的高度一致即可。如果在一個高度固定的塊內,如何讓多行或者單行文字垂直居中顯示。網上可以搜到很多方法,這里想做一個簡單的總結,方便以后查看。

一、 line-height

  多行文字也是可以使用line-height實現垂直居中的。

.test1{ font-size:0;width:200px;line-height:200px;background:#eee;}
.test1 span{ font-size:12px;display:inline-block;vertical-align:middle;line-height:1.4;}
.test1 i{width:0;display:inline-block;font-size:1px;line-height:200px;}
<div class="test1">
     <span> 這是啥這是啥 這是啥這是啥 這是啥這是啥 這是啥這是啥 
       <br />這是啥這是啥
   </span> <i>&nbsp;</i> </div>

外部div塊固定寬,使用ling-height 設置高度,font-size 設為0。內部的文字用span標簽包裹起來,設置為行內塊 display:inline-block; 。

i 標簽同樣設置為行內塊,此時i標簽內部的字體大小不能為0,如果為0的話在ie10,ie11下會撐不開div的高度,並不知道為什么。。

最后效果圖:

該方法可以兼容的IE6,IE7.

二、table-cell

css屬性 display:table-cell; 設置了display:table-cell的標簽就相當如td標簽,td標簽是表哥單元格,這時就可以使用vertical-align:middle;設置居中了。

<html>
<head>
    <style>
        .box{width:200px;height:200px;display:table-cell;vertical-align:middle;border:1px dotted #ccc;font-size:0;}
        .box span{display:inline-block;font-size:14px;padding:0 5px;}
    </style>
</head>
<body>
    <div class="box">
        <span>使用display:tabel-cell實現多行文字垂直居中...</span>
    </div>
</body>
</html>

該方法是不兼容IE6、IE7的,因為IE6、IE7不認識table-cell。

三、flex布局

<html>
<head>
    <style>
        .box{display:flex;display:-ms-flexbox;width:200px;height:200px;border:1px dotted #ccc;justify-content:center;align-items:center;}
        .box span{display:inline-block;width:100%;padding:5px;}
    </style>
</head>
<body>
    <div class="box">
        <span>使用flex布局實現多行文字垂直居中</span>
    </div>
</body>
</html>

flex布局的兼容性就沒有前兩個那么好了,該方法在IE9以下均不支持。

  如果對兼容性沒有特別大的要求的話,使用table-cell是最方便的辦法了。文章中可能會有不對的地方,歡迎指正!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM