Flexboxを使い、コンテンツエリアの画面の100%に満たなくても フッターが画面の下に付くようなフッターを作成します。
※ このドキュメントは2016年5月26日に勧告候補になったドキュメント「CSS Flexible Box Layout Module Level 1 W3C Candidate Recommendation, 26 May 2016」を参照しています。
「Webサイトからお問い合わせが来ない…」とお悩みの方必見!
当サイトのノウハウを詰め込んだ『Web集客の無料ガイド』をご提供
方法
まずはじめにソースコードを紹介します。
<!DOCTYPE html>
<html lang="ja">
<head>
<title>Flexboxテスト</title>
<meta charset="UTF-8">
<style>
.flex-container {
display: flex;
flex-direction: column;
}
.wrapper{
min-height: 100vh;
display: flex;
flex-direction: column;
}
.flex-item {
flex: 1;
background-color: #ee0;
}
html,body{
margin: 0;
}
header{
height: 50px;
background-color: #ccc;
}
footer{
height: 50px;
background-color: #ccc;
}
</style>
</head>
<body>
<div class="flex-container">
<div class="wrapper">
<header>ヘッダー</header>
<div class="flex-item">
<p>コンテンツエリア</p>
</div>
<footer>フッター</footer>
</div>
</div>
</body>
</html>
解説

- flex-containerと、wrapperに対して、Flexboxの指定である「display: flex;」を定義します。
- flex-containerと、wrapperは「flex-direction: column;」を指定して、Flex Itemの並び順を、縦に指定します。
- wrapperに高さ100%を指定するために、「min-height: 100vh;」を指定します。
- <headr>、<div class="flex-item">、<footer>がflex-itemになります。
flex-itemクラスには「flex: 1;」を指定し、横幅いっぱいに枠を広げる指定をします。
ポイント
flex-direction:
flex itemの並び順の指定です。デフォルトはrowで、横並び、columnを指定で、縦並び。
その他に「row-reverse | column-reverse」があり、逆に並び替えをします。
flex:
「flex:1」の指定は横幅をいっぱいまで広げるために使用しており、flex 1 1 auto;と同義です。プロパティの指定は下記の通りです。
【flexプロパティ】
flex:<flex-grow> <flex-shrink> <flex-basis>
flex-grow:横幅として何個分使用するか。
flex-shrink:指定の幅をはみ出した時に、全体の何個分縮めるか。
flex-basis:flex itemのベースとなる幅数
【flex初期値】
flex:1 0 auto;
※ 分かりにくいので動画を参照ください。
関連記事