為 Interview Bit 的第 34 題。
以下幾個點討論 flexbox 和 grid 不同的地方:
Flexbox 的子項目有很大的權限。
例如在設定 display: flex
的時候, flex 底下如果想要等寬的 3 個 column,設定 display: flex
是不足夠的,需要再設定 flex-item 的 flex: 1
或是 flex-item 的 width: 100%
。
尚未設定 flex: 1
已設定 flex: 1
Parent element 有較大的權限控制 Grid。
例如想要讓 Grid item 都要等寬,可以在 parent 的設定 grid-template-columns: 1fr 1fr 1fr;
.intrinsic-size {
width: auto;
}
.extrinsic-size {
width: 500px;
}
Flexbox 使用元素的高度和寬度計算 flex 的 growing and shrinking。
當使用 display:flex
, 元素大小是依照元素內容的高和寬。
可以看到綠色框框都是依照元素的高和寬做大小設定,因此每一個都大小都不一樣。
但是當使用 display: grid
,每一個 column 都會占用 full-width,除非將 grid parent 元素設定固定寬度。
現在的瀏覽器如果不是使用 IE ,大部分都會支援 Flexbox 或是 Grid。詳細的資料可以上 Can I Use...? 了解
參考資料:
CSS Grid vs Flexbox - A brief guide