Skip to main content

expand_flexible_tracks

Function expand_flexible_tracks 

Source
pub(crate) fn expand_flexible_tracks(
    base: &[i32],
    flex: &[Option<f32>],
    mins: &[i32],
) -> Vec<i32>
Expand description

fr 列の自動最小を考慮して列幅を配り直す(CSS Grid §12.7.1「fr の大きさを求める」の簡略版)。

【2026-10-04】1fr は minmax(auto, 1fr) で、列は中身の最小幅(min-content)より 狭くならない。従来は文字列だけで幅を配っていたため、sugi-lab.net トップの .about-content{grid-template-columns:1fr 1fr} が Chrome(左 443.9・右 376.1)と違い 410/410 の等分になり、左列の統計カードがはみ出していた。

  • base: 文字列から配った列幅(fr 列は残り幅を係数比で配った値)
  • flex: 各列の fr 係数(flex_factors)。None の列は変えない
  • mins: 各列の最小幅(その列だけに入る要素の min-content の最大)

最小幅を下回る fr 列をその幅に固定し、残りを固定していない fr 列へ係数比で配る。 固定したことで別の列が足りなくなれば繰り返す。全部固定して収まらなければ 最小幅のまま(はみ出す)。満たしていれば base をそのまま返す。