Skip to main content

Module flex_min

Module flex_min 

Source
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§

ShrinkItem
縮小対象のアイテム 1 つ分の入力。

Enums§

FlexError
配分の引数が不正だった場合のエラー。

Functions§

distribute_shrink
超過分 excess を各アイテムへ按分して縮小し、最終サイズを返す。