比率や幅を制御するflexプロパティについて

公開日 :

  • コーディング

こんにちは!AndHAコーディング部です。
今回はflex-grow、flex-shrink、flex-basisについてご紹介します。

比率を指定できる「flex-grow」について

flex-growとは

flex-growプロパティは、flexアイテムの伸び方の比率を指定する際に使用します。flex-growはflexアイテムに対して有効であるため、flexコンテナ(親要素)に display: flex; を、flexアイテム(子要素)に flex-grow をそれぞれ指定します。
以下が基本形です。

.content {
	display: flex;
}
.content-item {
	flex-grow: 0;
}

flex-growの既定値

まずは、flex-growの既定値について解説します。 flex-growの既定値は「0」のため、0を指定した場合は特に変化はありません。 以下のように、flexアイテムの横幅はそれぞれの最小の幅となります。

See the Pen flex-grow: 0; by ha-01 (@hasamplecom) on CodePen.

値を指定した場合

flex-growプロパティでは、アイテムの伸び方の比率を、正の数値で相対的に指定します。
flex-growプロパティの値に、負の数値は指定できません。
下記、item2の要素に対して、flex-grow: 2;を指定しています。こうすることで、4つの要素の比率が 1 : 2 : 1 : 1となります。

See the Pen flex-grow: number; by ha-01 (@hasamplecom) on CodePen.

縮小率を指定できる「flex-shrink」について

flex-shrinkプロパティは、flexアイテム幅の縮小率を指定する際に使用します。 縮小したいアイテムとそうでないアイテムを明示するためによく用いられます。 flexアイテムに対して有効であるため、flexコンテナ(親要素)に display: flex; を、flexアイテム(子要素)に flex-shrink をそれぞれ指定します。
以下が基本形です。

.content {
	display: flex;
}
.content-item {
	flex-shrink: 0;
}

flex-shrinkの既定値

flex-shrinkの既定値について解説します。 flex-shrinkの既定値は「1」のため、1を指定した場合は特に変化はありません。 以下のように、flexアイテムの横幅はそれぞれの最小の幅となります。

See the Pen flex-shrink: 1; by ha-01 (@hasamplecom) on CodePen.

値を指定した場合

flex-shrinkプロパティでは、アイテムの縮小率を、正の数値で相対的に指定します。 flex-shrinkプロパティの値に、負の数値は指定できません。
下記、item1の要素に対して、flex-shrink: 2;を指定しています。こうすることで、4つの要素の比率が 1 : 2 : 2 : 2となります。 この様に指定された値が大きいほど、flexアイテムが縮小されます。

See the Pen flex-shrink: number; by ha-01 (@hasamplecom) on CodePen.

基本幅を指定できる「flex-basis」について

flex-basisとは

flex-basisプロパティは、flexアイテムの基本幅を指定する際に使用します。 幅を指定する際、widthよりflex-basisの方が優先されます。
以下が基本形です。

.content {
	display: flex;
}
.content-item {
	flex-basis: auto;
}

flex-basisの既定値

flex-basisの既定値について解説します。 flex-growの既定値は「auto」のため、autoを指定した場合は特に変化はありません。 以下のように、flexアイテムの横幅はそれぞれの最小の幅となります。

See the Pen flex-basis: auto; by ha-01 (@hasamplecom) on CodePen.

値を指定した場合

数値+単位、または%で指定します。 値を指定することでflexアイテムを任意の大きさに指定できます。 下記ではflexアイテムをpx指定しています。

See the Pen flex-basis: width; by ha-01 (@hasamplecom) on CodePen.

参考にしたいサイト・おすすめ記事

flex-grow、flex-shrink、flex-basisについての公式サイト

flex-grow、flex-shrink、flex-basisについて詳しくは、以下MDNサイトの記事を参考にするのがおすすめです。

flex-grow – CSS: カスケーディングスタイルシート | MDN

flex-shrink – CSS: カスケーディングスタイルシート | MDN

flex-basis – CSS: カスケーディングスタイルシート | MDN

flexboxプロパティについてもっと知りたい方へ

これまで複数の記事に渡り、本記事以外のflexboxプロパティについてご紹介しています。こちらもぜひご覧ください!

flexboxの概要と「flex-direction」について

https://and-ha.com/coding/flexbox-and-flexdirection/

flexboxの「flex-wrap」と「flex-flow」について

https://and-ha.com/coding/flex-wrap-and-flex-flow/

flexboxの「justify-content」と「align-items」について

https://and-ha.com/coding/justify-content-align-items/

flexboxの「align-content」と「order」について

https://and-ha.com/coding/align-content-order/

最後に

いかがでしたでしょうか?
flex-grow、flex-shrink、flex-basisの構造を理解するとよりレイアウトを組みやすくなります。
どんどん使いこなしてみましょう!

合わせて読みたい!