Flexboxの特徴と解説

目次
  1. Flexboxとは
  2. Flexboxでできること
  3. Flexboxの使い方
  4. 多様なレイアウトを組むための手法 - 親要素に指定するプロパティ -
    1. 【子要素の並ぶ向きを指定】flex-direction
    2. 【折り返しを指定】flex-wrap
    3. 【水平方向の配置】justify-content
    4. 【垂直方向の配置】align-items
    5. 【折返しがある場合の垂直方向の配置】align-content
  5. 多様なレイアウトを組むための手法 - 子要素に指定するプロパティ -
    1. 【並び順】order
    2. 【伸びる比率】flex-grow
    3. 【縮む比率】flex-shrink
    4. 【基準のサイズ】flex-basis
    5. 【個別での垂直方向の配置】align-self
  6. Flexboxを使いこなして自由に楽しくレイアウトを組もう

Flexboxとは

Flexboxでできること

Flexboxでできることとして主に以下の内容が挙げられる。

これらの内容は、Flexbox以外のプロパティでも実現可能だが、普通のプロパティでは一つの要素に対して複数行の指定が必要であったり、HTMLの記述が変更される場合に対応に手間がかかったりしてしまう。

Flexboxでは、HTMLをほとんど変更せずに、簡潔なCSS指定のみで多様なレイアウトを組むことが可能である。

Flexboxの使い方

Flexboxは親要素>子要素の構造になっているときに使用する。

Flexboxにおける親要素をFlexコンテナ、子要素をFlexアイテムと呼ぶ。

flexboxの概念図

Flexコンテナに対してdisplay:flex;を指定することでFlexboxを使用することができるようになる。

例えば、以下のようにHTMLでFlexboxを使用する場合、ulタグがFlexコンテナ(親要素)、liタグがFlexアイテム(子要素)になる。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

多様なレイアウトを組むための手法【親要素に指定するプロパティ】

Flexboxでは親要素であるFlexコンテナに様々なプロパティを指定することで自由なレイアウトが可能になる。 以下に実用的なものをいくつか挙げていく。

【子要素の並ぶ向きを指定】flex-direction

子要素の並べる方向を指定するプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【折り返しを指定】flex-wrap

子要素を親要素内に1行で並べるか、親要素に合わせて折り返すかを指定するプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【水平方向の配置】justify-content

子要素の水平方向の配置を指定するプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【垂直方向の配置】align-items

子要素の垂直方向の配置を指定するプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【折返しがある場合の垂直方向の配置】align-content

折り返しのある複数行の子要素を垂直方向に配置を指定するプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

多様なレイアウトを組むための手法【子要素に指定するプロパティ】

ここからは子要素に指定するプロパティを紹介する。

【並び順】order

子要素の並び順を指定することができるプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【伸びる比率】flex-grow

親要素に余りのスペースがある際に、指定した子要素を他の子要素と比べて、どのくらい伸ばすかを指定するプロパティ。数字が大きい方が伸びる。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【縮む比率】flex-shrink

親要素に子要素が収まりきらない際に、指定した子要素を他の子要素と比べて、どのくらい縮ませるかを指定するプロパティ。数字が大きい方が縮む。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【基準のサイズ】flex-basis

伸縮する前の初期サイズを指定するプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

【個別での垂直方向の配置】align-self

垂直方向の配置場所を、それぞれ違う位置に指定したいときに使うプロパティ。

See the Pen Untitled by 流浪鳥 (@uztrzurw-the-sans) on CodePen.

Flexboxを使いこなして自由に楽しくレイアウトを組もう

Flexboxはプロパティの数が多く把握するのが大変だが、一度使い慣れれば柔軟なレイアウトが可能になる。

プロパティは暗記をしようとするのではなく、実際に使ってみるというのが大事である。まずは、気になるプロパティを実際に使ってみて自分なりのレイアウトを組んでみよう。