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 属性,从而针对所有可能的尺寸优化界面。
FlexBox 的布局算法的工作方式如下:
计算子元素的基本大小:使用子元素的
basis值来计算其沿主轴的初始大小,然后再分配任何额外的空间。对子项进行排序:按子项的
order值(如果存在)对子项进行排序。构建行:对于每个子项,检查其初始大小加上
gap是否能放入当前行的剩余空间中。如果为 true,则将相应子级放置在行中。如果不能,则在启用换行的情况下将其放在新行上,否则将其放在当前行上,但会溢出(部分会被容器边缘遮挡)。沿交叉轴对齐或调整项目大小:对于每行,通过拉伸或对齐项目和行,将额外的空间分配给项目或项目之间以及行之间。
现在,您已经熟悉了 FlexBox 概念,请参阅使用入门,创建基本的 FlexBox。