FlexBox 是以單一方向排列項目的容器。可調整大小、換行、對齊及分配項目間的空間,以最佳方式填滿可用空間。這個版面配置適用於不同大小的項目,以及在可用空間變更時調整項目大小。
FlexBox 的功能包括:
- 控制項目如何放大和縮小,以填滿可用空間
- 如果空間不足,可將項目換行或換欄
- 使用便利的預設選項,在項目之間分配額外空間
使用 FlexBox 的時機
FlexBox 通常用於在整體螢幕版面配置內顯示少量項目。就整體畫面版面配置而言,Grid 通常是較好的選擇。FlexBox 不支援延遲載入項目。如要顯示大量項目,請使用延遲載入清單和格線。如要包裝商品,請使用 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。