Flexboxによる横並び
今回のテーマ
CSSで横並びにする方法は、前回紹介したfloat以外にもあります。今回はFlexboxを用いて以下の図を目標物として作成していきます。
Flexbox適用前
親要素にcontentsクラスを指定し、子要素にそれぞれleft、center、rightの3つのクラスを指定しました。
<html> <head> <meta charset="utf-8"> <title>flex-box</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="contents"> <div class="left">left</div> <div class="center">center</div> <div class="right">right</div> </div> </body> </html>
html, body { height: 100%; margin: 0; padding: 0; } .contents { background-color: lightgrey; height: 100%; width: 100%; font-size: 30px; color: white; text-align: center; } .left { background-color: blue; height: 50%; width: 25%; } .center { background-color: red; height: 50%; width: 25%; } .right { background-color: green; height: 50%; width: 25%; }
子要素のheightを50%に指定してるのでrightが画面外になっていますが、きちんと存在しています。
Flexbox適用
子要素を横並びにするために、displayプロパティ、値はflexとして親要素に適用します。floatは横並びにしたいものに対して適用していましたが、Flexboxではその親要素にdisplayプロパティを適用するのが注意点です。この横並びにする機能の総称をFlexboxと呼びます。
以降は親要素のみのCSSを記載します。
.contents { background-color: lightgrey; height: 100%; width: 100%; font-size: 30px; color: white; text-align: center; display: flex; }
上図のように横並びにすることができました!しかし各要素がくっついており、目標物とは少し違います。そこで次に横並びの種類を指定します。
横並びの種類
こちらも親要素に対して、justify-contentプロパティ、値はspace-aroundを適用します。
.contents { background-color: lightgrey; height: 100%; width: 100%; font-size: 30px; color: white; text-align: center; display: flex; justify-content: space-around; }
目標物と同じになりました!
今回用いたspace-aroundは、両端の隙間:各要素間の隙間=1:2にレイアウトを変えてくれます。他には、左寄せのflex-start、右寄せのflex-end、中央寄せのcenter、また今回の目標物の両端を空けずに各要素を等間隔にするspace-betweenなどがあります。
以上、Flexboxについての説明でした!