Expand description
フレックスアイテムの縮小配分(自動最小サイズを尊重する)。
仕様・典拠・不変条件 F-1〜F-5 は spec/flex_min_size.md を参照。
典拠: CSS Flexible Box Layout Level 1 §4.5 / §9.7
(https://www.w3.org/TR/css-flexbox-1/#algo-main-item)
§なぜ必要か
従来の実装は超過分を shrink 係数で按分したあと .max(0) で 0 までしか
止めておらず、自動最小サイズを一切見ていなかった。その結果
.hero-content が 240px まで縮み、14 文字の見出しが 3 行に過剰折り返しされ、
サブテキストと重なっていた。
§近似であることの明示
原典 §9.7 は violation の符号で分岐する反復アルゴリズムだが、本実装は
「下限に達したアイテムを凍結して残余を再配分する」ループに簡略化している。
自動最小サイズも min-content 幅で代用する近似(spec/flex_min_size.md 参照)。
グローバル状態にもハードウェアにも依存しない純粋ロジックのみで構成する。
Structs§
- Shrink
Item - 縮小対象のアイテム 1 つ分の入力。
Enums§
- Flex
Error - 配分の引数が不正だった場合のエラー。
Functions§
- distribute_
shrink - 超過分
excessを各アイテムへ按分して縮小し、最終サイズを返す。