## 対象記事
<div class="link-card">
<div class="link-card-header">
<img src="https://sp-ao.shortpixel.ai/client/to_webp,q_glossy,ret_img,w_32,h_32/https://zero-plus.io/media/wp-content/uploads/2021/12/
[email protected]" class="link-card-site-icon"/>
<span class="link-card-site-name">ZeroPlus Media - 完全0から始める Webデザイン/プログラミング -</span>
</div>
<div class="link-card-body">
<div class="link-card-content">
<p class="link-card-title">【CSS】flex-growの使い方!flexアイテムの大きさを倍率で指定する方法を解説 | ZeroPlus Media</p>
<p class="link-card-description">flex-grow は、flexアイテムの比率を指定できるプロパティです。flexアイテムの伸長を width ... </p>
</div>
<img src="https://zero-plus.io/media/wp-content/uploads/2022/04/flex-grow.png" class="link-card-image" />
</div>
<a href="https://zero-plus.io/media/flex-grow-how-to-use/"></a>
</div>
[[flex-grow属性]]の使い方に関する記事。
## flex-growの性質
> flex-grow は、flexアイテムの比率を決めるプロパティです。flexコンテナ内に余白があるとき、余白部分をflexアイテムに指定した比率の分だけ追加します。
[[flex-shrink属性]]は親要素をはみ出たときだったけど、[[flex-grow属性]]は親要素が埋まりきらなかったときなのか。
### flex-growを指定しない場合
```html
<div class="flex w-[600px] bg-stone-300">
<span class="w-[100px] bg-red-200">200px</span>
<span class="w-[100px] bg-red-200">200px</span>
<span class="w-[100px] bg-red-200">200px</span>
</div>
```
[[Chrome devtools]]で確認すると...
![[Pasted image 20240810161224.png|frame]]
勝手に親要素の分だけ伸びたりはしない。
### flex-growを指定する場合
```html
<div class="flex w-[600px] bg-stone-300">
<span class="w-[100px] flex-grow bg-red-200">200px</span>
<span class="w-[100px] bg-red-200">200px</span>
<span class="w-[100px] bg-red-200">200px</span>
</div>
```
1つ目が`400px`まで伸びた。
![[Pasted image 20240810161435.png|frame]]
[[Chrome devtools]]にも`100px`と伸びた分の`300px`が表示される。
> 初期値は0で、負の値や少数の指定も可能です。
[[flex-shrink属性]]はデフォルトが1だったが、[[flex-grow属性]]は0がデフォルトらしい。
[[flex-grow属性]]が余白部分を埋める比率であることに着目し、違う指定をしてみる。
```html
<template>
<div class="flex w-[600px] bg-stone-300">
<span class="w-[100px] flex-grow bg-red-200">100+30px</span>
<span class="w-[100px] grow-[3] bg-blue-200">100+90px</span>
<span class="w-[100px] grow-[6] bg-green-200">100+180px</span>
</div>
</template>
```
余白の`300px`を`1:3:6`の割合で分割し、それぞれの要素に付与される。
![[Pasted image 20240810162104.png|frame]]
## まとめ
- **余白をフルに使いたい場合は `flex-grow`クラス を指定する**