尺寸、空间和单位

Taffy 布局由可用空间加上尺寸约束驱动。理解这个模型可以使布局变得可预测。

可用空间

computeLayout 的第二个参数定义可用空间:

Loading Preview…

允许的值

  • number: 绝对尺寸(通常是像素)
  • "min-content": 最小内容尺寸
  • "max-content": 最大内容尺寸

"auto" 用于样式尺寸,不是 AvailableSpace 的有效值。

盒模型

boxSizing 默认为 BoxSizing.BorderBox,此时样式尺寸包含 padding 和 border。设为 BoxSizing.ContentBox 后,样式尺寸仅指定内容框;最终 Layout.size 仍为边框框尺寸:

┌─────────────────────────┐ │ Margin │ │ ┌───────────────────┐ │ │ │ Border │ │ │ │ ┌─────────────┐ │ │ │ │ │ Padding │ │ │ │ │ │ Content │ │ │ │ │ └─────────────┘ │ │ │ └───────────────────┘ │ └─────────────────────────┘
  • Layout.size 包含 padding + border
  • margin 是外部间距

百分比

百分比尺寸相对于该轴的包含块尺寸解析。普通 Flex 子元素通常使用父内容框,Grid 子元素使用分配到的网格区域;绝对定位子元素通常使用父 padding box(Grid 放置还可能限定区域)。根节点的百分比相对于传入的确定可用尺寸。若参照尺寸尚未确定,百分比可能在该布局阶段无法解析。

Loading Preview…

常见陷阱

  • 可用空间不会强制所有节点填满它;没有固定尺寸、内容测量或拉伸规则的空叶子可得到零尺寸
  • "auto" 的实际尺寸取决于布局算法、内容以及其他约束
  • 使用 computeLayoutWithMeasure() 提供内容测量回调;节点 context 是可选的,"max-content" 本身不会注册回调

下一步

© 2026 ByteLand Technology Limited