2024-12-21 CSS flex-grow
2024-12-21 CSS flex-grow
當我們刪除了 flex-grow: 1;,成員清單變成了 垂直置中,而不是緊貼在中間列的最上方
很好,你發現了一個很重要的現象!當我們刪除了 **flex-grow: 1;
**,成員清單變成了 垂直置中,而不是緊貼在中間列的最上方。讓我們來看看為什麼會這樣發生!
🎯 1. 刪除 flex-grow: 1;
之後發生了什麼?
當 .member-list
沒有 flex-grow: 1;
時,它的行為變成這樣:
.app-container
仍然是 **display: flex; flex-direction: column;
**,所以 子元素仍然垂直排列。- 沒有
flex-grow
,代表.member-list
只會佔據自身內容的高度,而不會自動填滿剩餘空間。 - **
.app-container
預設align-items: stretch;
**,但.member-list
內容不足以撐滿剩餘空間,導致justify-content: space-between;
變得明顯,把.member-list
推到中間。
🚨 結果
成員清單變小,只佔自身高度,而上下兩塊的 space-between
讓它變成「垂直置中」!
🎯 2. 為什麼 flex-grow: 1;
可以解決這個問題?
當我們加回 **flex-grow: 1;
**,它的行為變成這樣:
.member-list
會 自動填滿中間的剩餘空間(因為flex-grow
會讓這個區塊撐開)。- 這樣
.member-list
會被「推到最上方」,從而不會在畫面中央 「漂浮」。 .member-list
內容過少時,它還是會保持固定大小,但內容過多時,它會自動填滿可用空間,並且出現滾動條(如果有overflow: auto;
)。
🎯 3. 如何測試這個行為?
你可以做以下實驗來感受 flex-grow
的作用:
- **刪除
flex-grow: 1;
**,看看.member-list
是不是變小、漂浮在畫面中間。 - **改成
flex-grow: 2;
**,看看.member-list
是否變得更大,甚至佔據比預期更多的空間。 - **給
.member-list
加上border: 1px solid red;
**,觀察它的大小變化 🚀。
✅ 結論
👉 flex-grow: 1;
是讓 .member-list
能夠填滿中間空間的關鍵。
如果沒有 flex-grow: 1;
,.member-list
只會佔據自身內容的大小,而 justify-content: space-between;
會讓它被「推到」畫面中央,形成 「垂直置中」的錯覺!
這樣你理解了嗎?你可以試試不同的 flex-grow
值來更直觀地體驗它的作用 😃!