CSSレイアウトにはさまざまな方法がありますが、その中でも比較的新しく、使いこなせると便利で、迅速にサイト設計ができるものの一つがFlexboxです。Flexboxはdisplayプロパティの一つであり、block要素、inline要素をそれぞれよしなに配置できるように使いやすく開発されております。

FlexboxZombieという有料ゲームは、flexboxを作成してゾンビを倒しながら勉強できるゲームです。
Flexboxとは、
行または列にアイテムをレイアウトするための1次元レイアウト方法。アイテムは、追加のスペースを埋めるために曲がり、より小さなスペースに収まるように縮小する。
ということで、今回はFlexboxをマスターしていきましょう!
display:flex
まずdisplayのプロパティを、display:flex
とすることで、flexboxを使用する準備が整います。
これにより、親要素はフレックスコンテナになり、その子要素はフレックスアイテムになります。

親要素にdisplay: flexを設定してください!
flex-direction
flex-direction
は、アイテムが配置される主軸を定義します。
指定されていない場合、デフォルトはflex-direction: row
です。 他にも、row-reverse
、column
、およびcolumn-reverse
などのオプションがあります。
justify-content
justify-content
は、アイテムが主軸(またはフレックス方向)内でどのように配置されるかを制御します。
指定されていない場合、デフォルトはjustify-content: flex-start
です。 他のオプションは、center
、 flex-end
、space-between
、space-around
などがあります。
align-items
align-items
は、アイテムが交差軸、または主軸に垂直な軸でどのように配置されるかを制御します。
指定されていない場合、デフォルトはalign-items: stretch
です。 これにより、合わせ軸の余白全体が埋められます。他には、center
、flex-start
、flex-end
などがあります。
align-self
これまでに説明した他のプロパティとは異なり、align-self
は(親要素ではなく)アイテム自体に指定されます。 上記のalign-items
と同じオプションがあり、stretch
、center
、flex-start
、flex-end
などが使えます。
flex-grow
flex-grow
は、コンテナが主軸に沿って伸びる場合、使用可能なすべての余白を満たすためにアイテムがどのように伸び率を決定します。 flex-grow
はアイテム自体で指定されます。
指定されていない場合、デフォルトはflex-grow: 0
です。これは、親要素のサイズが大きくなってもアイテムが大きくならないことを意味します。親要素の余白が与えられると、成長係数を持つアイテムは、flex-growプロパティで指定された比率に従って余白を埋めるように伸びます。
アイテムに0より大きい値のflex-growプロパティがある場合、アイテムは(主軸の)すべての余白を埋めるように拡張され、justify-contentプロパティが不要になります。
flex-shrink
flex-shrinkは、親コンテナが縮小するときにアイテムが縮小する比率を決定します。flex-growに似ていますね。flex-shrinkはアイテム自体に指定されています。
指定されていない場合、デフォルトはflex-shrink: 1
です。 flex-shrink: 0
のアイテムは、何があってもサイズを維持し、縮小しません。

Flexboxはいろいろな使い方があり、画面に合わせてよしなに余白や配置の設定をしてくれるので、使いこなせると便利です。
また、Flexboxチートシートというものもあり、こちらなどを参考にしつつ、自分が作りたいレイアウトにサイト設計をするのも良いでしょう!