FlexBox 是以單一方向排列項目的容器。它可以調整大小、換行、對齊及分配項目之間的空間,以最佳方式填滿可用空間。這種版面配置適用於不同大小的項目,以及在可用空間變更時調整項目大小。
FlexBox 的功能包括:
- 控制項目如何放大和縮小,以填滿可用空間
- 空間不足時,將項目換行或換欄
- 使用便利的預設設定,在項目之間分配額外空間
FlexBox 的使用時機
FlexBox 通常用於在整體螢幕版面配置「內」顯示少量項目。如果是整體螢幕版面配置,Grid 通常是較佳選擇。FlexBox 不支援延遲載入項目。如要顯示大量項目,請使用 Lazy 清單和格線。如需納入項目,請使用 FlexBox,而非 FlowRow 和 FlowColumn。
術語與概念
FlexBox 會以水平或垂直線排列項目。這些線條的方向會建立主軸。與主軸呈 90 度的是交錯軸。FlexBox 沿著主軸的長度稱為「主要大小」。對應的交錯軸長度稱為「交錯大小」。這些大小和軸是 FlexBox 行為的基礎。

FlexBox 方向為 Row 時的軸和大小。
FlexBox 方向為 Column 時的軸和大小。套用屬性
您可以透過兩種方式套用 FlexBox 屬性:
- 使用
FlexBox(config)傳送至FlexBox容器 - 使用
Modifier.flex導覽至FlexBox內的項目
容器屬性 ( |
項目屬性 ( |
|---|---|
如要進一步瞭解這些屬性,請參閱「設定容器行為」。 |
如要進一步瞭解這些屬性,請參閱「設定項目行為」。 |
瞭解 FlexBox 版面配置演算法
FlexBox 最強大的功能之一,就是能調整子項大小,以最適合可用空間。瞭解 FlexBox 的運作方式,有助於設定 FlexBox 屬性,針對所有可能的大小最佳化 UI。
FlexBox 的版面配置演算法運作方式如下:
計算子項基本大小:使用子項的
basis值,計算其在主軸上的初始大小,然後再分配任何額外空間。排序子項:依子項的
order值 (如有) 排序。建構行:針對每個子項,檢查其初始大小加上
gap是否能容納在目前行的剩餘空間中。如果是,請將這個子項放入該行。如果沒有,請在啟用換行時將項目放在新行,或將項目放在目前會溢出的行 (項目會部分遮蓋容器邊緣)。對齊或調整交叉軸中的項目:針對每一行,透過展開或對齊項目和行,將額外空間分配給項目和行,或分配到項目和行之間。
您已熟悉 FlexBox 概念,請參閱「開始使用」建立基本 FlexBox。