flexboxでページ全体のレイアウトを作ってみる
flexboxで超シンプルなページ全体のレイアウトを作ってみます。
フレームワークもよいけど、flexboxで作ってしまえば、HTMLもシンプル&キレイ🙆
個人的にフレームワークを使うと、HTMLがどんどん煩雑になっていくのが気になるので、オリジナルのデザインからコーディングをしていくときはフレームワーク使わない派です。
よくあるWebページのレイアウト例A
上にヘッダーがある、定番のレイアウト。
定番のレイアウトです。
HTMLは以下の通り、超シンプルです。
<body>
<div class="wrap">
<header>header</header>
<main>main</main>
<aside>sidebar</aside>
<footer>footer</footer>
</div>
</body>
ページ全体をflex containerにしてしまう作戦です。
全体を囲んでしまえば途中に余分な<div>を挟むことなくHTMLがスッキリします。
.wrapの直下の要素が全部flex-itemになるので、あとは直下のheaderやmainなどの要素の幅を指定して、段落ちさせていけばOKです💡
今回はメインを70%、サイドバーを30%で、ヘッダーとフッターを100%にしています。
スマホ用には、全てのflex-itemの幅を100%にするだけで1レイアウトの完成👇
.wrap{ display:flex; flex-wrap:wrap; justify-content:space-between; } header,main,aside,footer{ padding:100px 0; } header{ width:100%; background:#f0eeeb; } main{ width:70%; background:#e3e3e3; } aside{ width:30%; background:#c9c9c9; } footer{ width:100%; background:#afafaf; } /*500pxより小さくなったら1カラム表示*/ @media (max-width:500px){ header,main,aside,footer{ width:100%; } }
よくあるWebページのレイアウト例B
こちらも定番のレイアウト。ナビゲーションなどのコンテンツを右側に配置するタイプ。
HTMはさっきのものとほぼ同じです👇
<body>
<div class="wrap">
<header>header</header>
<main>main</main>
<footer>footer</footer>
</div>
</body>
CSSもさっきとほとんど一緒ですが、今回はheaderを30%、mainを70%にしています。
.wrap{ display:flex; flex-wrap:wrap; justify-content:space-between; } header,main,aside,footer{ padding:100px 0; } header{ width:30%; background:#f0eeeb; } main{ width:70%; background:#e3e3e3; } footer{ width:100%; background:#afafaf; } /500pxより小さくなったら1カラム表示/ @media (max-width:500px){ header,main,aside,footer{ width:100%; } }
あとは、headerやmainの中にコンテンツを配置していけば、ページが完成💡