Eu quero usar um aplicativo de altura total usando o flexbox. Eu encontrei o que eu queria usando o antigo módulo de layout flexbox ( display: box;
e outras coisas) neste link: CSS3 Flexbox full-height app and overflow
Esta é uma solução correta para navegadores que suportam apenas a versão antiga das propriedades CSS do flexbox.
Se eu quiser tentar usar as propriedades mais recentes do flexbox, tentarei usar a segunda solução no mesmo link listado como um hack: usando um contêiner com height: 0px;
. Faz mostrar um scroll vertical.
Eu não gosto muito porque introduz outros problemas e é mais uma solução alternativa do que uma solução.
html, body {
height: 100%;
}
#container {
display: flex;
flex-direction: column;
height: 100%;
}
#container article {
flex: 1 1 auto;
overflow-y: scroll;
}
#container header {
background-color: gray;
}
#container footer {
background-color: gray;
}
<section id="container" >
<header id="header" >This is a header</header>
<article id="content" >
This is the content that
<br />
With a lot of lines.
<br />
With a lot of lines.
<br />
This is the content that
<br />
With a lot of lines.
<br />
<br />
This is the content that
<br />
With a lot of lines.
<br />
<br />
This is the content that
<br />
With a lot of lines.
<br />
</article>
<footer id="footer" >This is a footer</footer>
</section>
Eu preparei um JSFiddle também com um exemplo básico: http://jsfiddle.net/ch7n6/
É um site HTML de altura total e o rodapé está na parte inferior por causa das propriedades flexbox do elemento de conteúdo. Eu sugiro que você mova a barra entre o código CSS e o resultado para simular alturas diferentes.
flex-shrink:0
tanto ao cabeçalho quanto ao rodapé.