As i understand vh unit is related to view-port not document content.but when i used it with flex container it behave strange like in following example.
- Run code snippet and open Full page mode.
- resize browser window height 150px.
- footer section overflow and we cant see it with scroll.
- edit .box height:100vh to min-height:100vh.
- every thing is now fine we can scroll till end no overflow.
now is vh unit with min-height property also respect to document content. while vh unit with height only consider view-port height not document content. what is reason behind it?
note: this happen with flex container not with block formatting also not sure about grid.
code used from following answer on stack-overflow.
html, body {
margin: 0;
}
.box {
display: flex;
flex-direction: column;
height: 100vh;
/* if min-height:100vh is used then problem is solved we can fully scroll the box content and overflow is not happen */
background-size: cover;
background: black url(http://lorempixel.com/500/500/nature/4/) no-repeat center;
}
.box .row.content,
.content .one-fifth.column {
flex: 1;
display: flex;
}
.box .row.header,
.box .row.footer { color: white; }
.box .row.content { background: #fff; }
.yellow-back { background: #ffe001; }
.red-back { background: #e31e25; }
.green-back { background: #66af45; }
.purple-back { background: #954294; }
@media screen and (max-width: 600px) {
/* smaller screens */
.box .row.content {
flex-direction: column
}
}
<div class="box">
<div class="row header">
<p><b>header</b><br /><br />(sized to content)</p>
</div>
<div class="row content">
<div class="one-fifth column green-back">Here</div>
<div class="one-fifth column red-back">Here</div>
<div class="one-fifth column">Here</div>
<div class="one-fifth column yellow-back">Here</div>
<div class="one-fifth column purple-back">Here</div>
</div>
<div class="row footer">
<p><b>footer</b> (fixed height)</p>
</div>
</div>