I\'m trying to center the CONTENTS of a flexbox item while using justify-content:stretch;
It appears that the old trick of using display:table-cell;vertical-a
It can be achieved by display
ing each flex item as a flex
container and then aligning the contents vertically by align-items
property, as follows:
.flex-container {
display:flex;
align-items:center;
height: 200px; /* for demo */
}
.flex-item {
align-self:stretch;
display:flex;
align-items:center;
background-color: gold; /* for demo */
}
<div class="flex-container">
<div class="flex-item">
I want to be vertically centered!
<s>But I'm not.</s>
</div>
</div>
As a side-note, if you omit the align-items:center;
declaration of the .flex-container
you can safely remove align-self:stretch;
from flex items as well.
I'm not sure if I am interpreting your request correctly, but I think you are trying to use "justify-content:stretch;" when you should be using flex-grow.
Im my sample I used flex:1 auto; which is just shorthand to set a couple of flex properties.
HTML:
<div class="flex-container">
<div class="flex-item">I'm top dog!
</div>
<div class="flex-item flex-center">
I want to be vertically centered! And I am!
</div>
</div>
CSS:
*{
box-sizing:border-box;
padding:5px;
}
.flex-container {
border: 1px solid;
display:flex;
align-items:center;
height: 100px;
}
.flex-item {
flex: 1 auto;
border: 1px solid green;
height:100%;
display:flex;
justify-content:center;
}
.flex-center {
align-items: center;
}
http://jsfiddle.net/p28tjskq/
Flex property:
https://developer.mozilla.org/en-US/docs/Web/CSS/flex