サイズ、スペース、単位

Taffy レイアウトは利用可能なスペースとサイズ制約で駆動されます。このモデルを理解することで、レイアウトを予測可能にします。

利用可能なスペース

computeLayout の 2 番目の引数が利用可能なスペースを定義します:

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 は外部スペーシング

パーセンテージ

パーセントサイズは、そのレイアウトで与えられる包含領域を基準に解決されます。通常フローでは親のコンテンツボックス、Grid アイテムでは配置先のグリッド領域、絶対配置では親の配置領域が基準になります。基準寸法が未確定の場合は、数値に解決できない段階もあります。次の例は通常の Flexbox の子です:

Loading Preview…

margin、padding、border のパーセント値は、上下の辺も含めて包含領域の幅を基準にします。inset の上下は高さ、左右は幅を基準にするため、同じパーセントでもプロパティにより基準が異なります。

よくある落とし穴

  • サイズ指定も測定コンテンツもない空のリーフは、利用可能なスペースを与えるだけではその大きさに広がらない
  • "auto" のサイズはレイアウトアルゴリズム、コンテンツ、他の制約で決まる
  • コンテンツ測定コールバックは computeLayoutWithMeasure() で渡す。ノードの context は任意で、"max-content" だけではコールバックは登録されない

次のステップ

© 2026 ByteLand Technology Limited