2016-10-28 73 views
0

我想知道如何將display: flex容器內的項目設置爲align-self: strech,並讓它在同一時間在中間垂直對齊。垂直對齊拉伸的柔性箱項目

我創建了一個Fiddle來展示我的問題。元素「我的標誌文字」 應在同一垂直水平爲「我的旗幟」和「右容器」

+0

您的標誌文本將是一個單行? – paolobasso

+0

是的。但我不想爲它設置固定高度,填充頂部,邊距頂部或線條高度。我希望,必須有更好的解決方案。 – julian

+0

請參閱@wscourge答案,然後 – paolobasso

回答

3

地址:

.logo { 
    display: flex; 
    align-items: center; 
    height: 100% 
} 
+1

爲什麼要更改html? –

+0

你是對的,沒有必要。謝謝,我正在改變我的答案:)。 – wscourge

+0

謝謝。 Flex中的Flex取得了訣竅。 – julian

0

如果My Logo Text單行你可以使用line-height:50px;來解決這個問題。

工作DEMO

如果您想了解更多關於line-height閱讀:https://css-tricks.com/almanac/properties/l/line-height/

.flex-container{ 
 
    color: #fff; 
 
    background: #3c3c3c; 
 
    height: 50px; 
 
    display: flex; 
 
    justify-content: space-between; 
 
    align-items: center; 
 
} 
 

 
.flex-item { 
 
    padding: 0 10px; 
 
} 
 
.logo{ 
 
    background: #f06; 
 
    align-self: stretch; 
 
    vertical-align: middle; 
 
    line-height:50px; 
 
} 
 
.title{ 
 
    flex-grow: 1; 
 
}
<div class="flex-container"> 
 
    <div class="flex-item logo">My Logo Text</div> 
 
    <div class="flex-item title">My Banner</div> 
 
    <div class="flex-item "><span>Right Container</span></div> 
 
</div>

編輯

如果你不希望有一個 「固定高度」,你可以使用:

.logo { 
    display: flex; 
    align-items: center 
} 

正如@wscourge在他的回答中所說的那樣。

0

我能有額外的股利和彈性調用第二次做到這一點。可能有更清潔的解決方案。我會多玩一下,讓你知道。

.flex-container { 
 
    color: #fff; 
 
    background: #3c3c3c; 
 
    height: 50px; 
 
    display: flex; 
 
    justify-content: space-between; 
 
    align-items: center; 
 
} 
 
.flex-item { 
 
    padding: 0 10px; 
 
} 
 
.logo-container { 
 
    display:flex; 
 
    background: #f06; 
 
    align-self: stretch; 
 
} 
 
.logo { 
 
    align-self: center; 
 
} 
 
.title { 
 
    flex-grow: 1; 
 
}
<div class="flex-container"> 
 
    <div class="flex-item logo-container"> 
 
    <div class="logo">My Logo Text</div> 
 
    </div> 
 
    <div class="flex-item title">My Banner</div> 
 
    <div class="flex-item "><span>Right Container</span> 
 
    </div> 
 
</div>