【CSS】メインコンテンツの高さに関わらずフッターを最下部に固定する

ヘッダー・メインコンテンツ・フッターの3つから構成されるHTMLレイアウトにおいて、上記のように高さが足りずともメインコンテンツを引き伸ばし、フッターを最下部に固定したい。

解決法

<div>
<header></header>
<main></main>
<footer></footer>
</div>
div {
display: grid;
grid-template-rows: auto 1fr auto;
min-height: 100vh;
}

任意の親要素を用意し、その要素に対してGrid Layoutを指定。grid-template-rows: auto 1fr autoでメインコンテンツのみを引き延ばすことで実現できる。

div {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex-grow: 1;
}

Flexboxでも実現できるが、子要素にflex-grow: 1をあてる必要がある。