2015-08-14 137 views
1

我想垂直對齊文本里面的動態高度說例如10%的頁面,但沒有使用衆所周知的「表方法」。這可以通過純CSS實現嗎?垂直對齊動態高度div內的文本

enter image description here

一段代碼:

HTML:

<div class="post-details-wrapper"> 
    <div class="post-details-h"> 
     Post Details 
    </div> 
</div> 

CSS:

post-details-h { 
background-color: green; 
height:5%; 
width:100%; 
} 

在這種特殊情況下,我們的目標是垂直對齊「後的文本-details-h「div。

回答

1

通常的做法是使用display:table stuff。但是,如果你不想使用它,你可以嘗試這樣的事:

<div class="post-details-wrapper"> 
    <div class="post-details-h"> 
     <span>Post Details</span> 
    </div> 
</div> 

.post-details-wrapper { 
    height:350px; 
    background:red; 
} 
.post-details-h { 
    background-color: green; 
    height:10%; 
    width:100%; 
} 
.post-details-h:before { 
    content: ''; 
    display: inline-block; 
    height: 100%; 
    vertical-align: middle; 
} 
.post-details-h span { 
    display: inline-block; 
    vertical-align: middle; 
} 

只需添加跨度,以便可以在裏面居中taht元素。員額,細節小時。

您可以檢查JSFiddle

希望這有助於。

+0

這種方法非常完美! – sarotnem

1

使用display: flex + align-items: center

*{ 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 

 
.post-details-h{ 
 
    background-color: green; 
 
    height: 100px; 
 
    width: 100%; 
 
    display: flex; 
 
    align-items: center; 
 
}
<div class="post-details-wrapper"> 
 
    <div class="post-details-h"> 
 
     <span>Post Details</span> 
 
    </div> 
 
</div>

+0

好的解決方案,很好地完成。 –

+0

很好的解決方法,但存在跨瀏覽器兼容性問題。與Chrome和Firefox完美兼容,但在Safari中並不是 – sarotnem

0

看看這個fiddle。我知道如何去做的方式確實涉及到兩個類,就像你做過的那樣。

.post-details-h { 
    line-height: 200px; 
    width:100%; 
    vertical-align: center; 
} 

.post-details-wrapper { 
    background-color: red; 
    height: 200px; 
    position: relative; 
} 
+0

但是在這種情況下,高度是固定的 – sarotnem

+0

是的,這是真的。我知道你可以像'line-height:500%;'那樣使用'line-height',但這是一個可怕的黑客攻擊,我不會推薦它。也許如果我用小提琴演奏更多的東西,我可以想出一些東西。 – UltraSonja