プログラミングのゴミ箱

日々の学習の中で知らなかったことについて、調べたことを解説します。

flex-grow flex-shrinkとは?ざっくり解説(CSS)


アプリ開発の勉強をしてる時にflex-growとflex-shrinkという見たことないCSSプロパティを見かけたので紹介します。

 

flex-grow

flex-growを指定すると、flexで指定した子要素を配置して余白ができてしまった時に、その余白を要素を拡大することで埋めることができます。

flex-growの値は拡大する時の拡大率を表します。

例えば、[width: 20%]と指定した要素を二つ並べた時、普通に左詰めで配置すると右側に60%分の余白ができてしまいます。

f:id:chanichiwasshoi:20211205140656p:plain

flex-growなし

ここで、二つの要素に[flex-grow: 1]という要素を追加してみます。すると、二つの要素は余白を1:1の割合で分け合い、二つの要素のwidthは合計50%となります。(初期値20% + 余白分30%)

f:id:chanichiwasshoi:20211205141151p:plain

flex-growあり


また、一つ目の要素に[flex-grow: 1]を指定し、二つ目の要素に[flex-grow: 2]を指定するとそれぞれの要素は余白を1:2の割合で分け合い、結果的に一つ目の要素のwidthは40%、二つ目の要素のwidthは60%になります。

f:id:chanichiwasshoi:20211205141515p:plain

flex-grow 1:2

このように、余白を分け合う割合を指定して、余白を埋める役割をするのがflex-growです。

 

flex-shrink

flex-shrinkを指定すると、flexで指定した子要素がはみ出してしまった時に要素を縮小して画面内に収まることができます。

flex-shrinkの値は縮小する時の縮小率を表します。

 

例えば、[width: 100%]と指定した要素を二つ横に並べます。この時widthの合計は200%となるので、100%分はみ出します。

 

f:id:chanichiwasshoi:20211205142445p:plain

flex-shrinkなし


ここで、それぞれの要素に[flex-shrink: 1]を指定します。すると、はみ出した分の100%を2つの要素がそれぞれ50%ずつ縮むことで画面内に収まります。

f:id:chanichiwasshoi:20211205142907p:plain

flex-shrinkあり

ちなみに、親要素に[display: flex]と指定したときにデフォルトで[flex-shrink: 1]が子要素に指定されるため、flexを使うときにはflex-shrinkを変更しない限り幅が100%を超えることはありません。

このようにflex-growの反対のような役割をするのがflex-shrinkです。

 

参考

 

fuuno.net