複数行のフレックスレイアウトをマスターする
複数行のフレックスレイアウトをマスターしましょう。複数行のフレックスレイアウトをマスターすると、たとえば、商品画像と商品タイトルを複数行に並べることができます。
フレックスレイアウト入門の記事を読んでいることが前提です。
複数行のフレックスレイアウト
フレックスレイアウトは、複数行にすることができます。フレックスレイアウトを複数行にするには、まず最初に「display:flex」を指定した要素に「flex-wrap:wrap」を指定します。
焼肉
No. 1
No. 1
焼鳥
サラダ
ラーメン
<div style="background:#fee;display:flex;flex-wrap:wrap"> <div style="background:red;"> 焼肉<br> No. 1 </div> <div style="background:green;"> 焼鳥 </div> <div style="background:blue;"> サラダ </div> <div style="background:yellow;"> ラーメン </div> </div>
CSSで「flex-wrap:wrap」を指定しても、これだけでは、複数行にはなりません。この後に、幅の指定をしていく必要があります。
均等幅で並べる
「width:50%」を子要素に指定して、均等幅で並べてみましょう。
焼肉
No. 1
No. 1
焼鳥
サラダ
ラーメン
<div style="background:#fee;display:flex;flex-wrap:wrap"> <div style="background:red;width:50%;"> 焼肉<br> No. 1 </div> <div style="background:green;width:50%;"> 焼鳥 </div> <div style="background:blue;width:50%;"> サラダ </div> <div style="background:yellow;width:50%;"> ラーメン </div> </div>
おお、二行に並びましたね。この子要素の中に、商品画像と商品タイトルを入れたりできます。
スマートフォン対応したヘッダーのレイアウト例
スマートフォン対応したヘッダーのレイアウトのサンプルを書いてみます。
フレックスレイアウトを使って、CSSを切り替えるだけで、PCとスマートフォンのヘッダを切り替えられる構成です。
ヘッダーPC表示
フレックスレイアウトでの、ヘッダーPC表示です。サイトタイトル固定幅、メニュー一覧が均等幅です。
Perlクラブ
- 会社情報
- アクセス
- 問い合わせ
<div style="background:#fee;display:flex;flex-wrap:wrap;"> <div style="background:red;width:180px;"> Perlクラブ </div> <div style="background:green;display:none;"> メボ </div> <ul style="width:calc(100% - 180px);display:flex;"> <li style="background:blue;width:33.3%;"> 会社情報 </li> <li style="background:yellow;width:33.3%;"> アクセス </li> <li style="background:pink;width:33.4%;"> 問い合わせ </li> </ul> </div>
ヘッダースマートフォン表示
フレックスレイアウトでの、ヘッダースマートフォン表示です。サイトタイトル可変、メニューボタン(メボ)固定幅、メニューが二段目以降です。メニューボタンで、切り替え表示可能なレイアウトです。
Perlクラブ
メボ
- 会社情報
- アクセス
- 問い合わせ
<div style="background:#fee;display:flex;flex-wrap:wrap"> <div style="background:red;width:calc(100% - 40px);"> Perlクラブ </div> <div style="background:green;width:40px;height:40px;"> メボ </div> <ul style="width:100%;display:flex;flex-wrap:wrap;"> <li style="background:blue;width:100%;"> 会社情報 </li> <li style="background:yellow;width:100%;"> アクセス </li> <li style="background:pink;width:100%;"> 問い合わせ </li> </ul> </div>