我想知道如何将display: flex
容器中的项目设置为align-self: stretch
并让它在同一时间在中间垂直对齐。
我创建了一个Fiddle来展示我的问题。元素"我的徽标文字" 应与#34; My Banner"处于同一垂直水平。和#34;正确的容器"
答案 0 :(得分:1)
添加:
.logo {
display: flex;
align-items: center;
height: 100%
}
答案 1 :(得分: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在回答中说的那样。
答案 2 :(得分:0)
我与align-self: stretch
交换height:100%;
并将display:flex
添加到.logo
本身。这使.logo本身的内容居中,同时保持100%的高度。
答案 3 :(得分:0)
我能够通过额外的div和第二次调用flex来做到这一点。可能有一个更清洁的解决方案。我会更多地玩它并告诉你。
.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>