Now in a flexbox
row I can write
<div layout="row"> <div>some content</div> <div flex></div> <!-- fills/grows available space --> <div>another content</div> </div>
I would like to achieve the same but vertically, like on this picture
Currently the problem is that the div which would need to grow doesn’t have any height so the two contents are below each other. I want my second content to be at the bottom of the parent container which has a fixed height!
I know I could solve this by positioning the second content absolute and bottom: 0;
but can I achieve this with flexbox
?
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
So you can try this:
-
flex-direction: column
for the flex container. -
flex: 1
for the element that needs to fill the remaining space.
See demo below where the flexbox
spans the viewport height:
body {
margin: 0;
}
*{
box-sizing: border-box;
}
.row {
display: flex;
flex-direction: column;
height: 100vh;
}
.flex {
flex: 1;
}
.row, .row > * {
border: 1px solid;
}
<div class="row">
<div>some content</div>
<div class="flex">This fills the available space</div>
<!-- fills/grows available space -->
<div>another content</div>
</div>
Cheers!
Method 2
You just need to use flex-direction: column
on parent and flex: 1
on middle div.
body,
html {
padding: 0;
margin: 0;
}
.row {
display: flex;
flex-direction: column;
min-height: 100vh;
}
.row > div:not(.flex) {
background: #676EE0;
}
.flex {
flex: 1;
background: #67E079;
}
<div class="row">
<div>some content</div>
<div class="flex"></div>
<!-- fills/grows available space -->
<div>another content</div>
</div>
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0