Skip to main content

sticky_top_y

Function sticky_top_y 

Source
pub fn sticky_top_y(
    natural_y: i32,
    top_offset: i32,
    top: i32,
    bound_max_y: i32,
    transform_ty: i32,
    scroll_y: i32,
    sub_scroll_y: i32,
) -> i32
Expand description

sticky_top が指定されている場合の Y 座標。

  • natural_y: 吸着が無ければ描かれるはずの Y 座標(フローどおり)。
  • top_offset: ビューポート上端のオフセット(ヘッダー分など)。
  • top: CSS の top 値(吸着先の、コンテナ内オフセット)。
  • bound_max_y: 吸着可能な下限(コンテナ下端)。文書座標。 未設定時は i32::MAX(無制限)。
  • transform_ty / scroll_y / sub_scroll_y: 現在の変位・スクロール量。

吸着先(sticky_target)とコンテナ下端(bound_target)のうち 小さい方を吸着位置とし、自然位置(natural_y)を下回らせない (natural_y.max(...))。こうすることで、

  • 通常スクロール中はフローどおりの位置(吸着先よりまだ下)
  • スクロールが進むと吸着先で止まる
  • コンテナ下端に達すると、そこでコンテナに押し出される

という 3 段階の挙動になる。

【回帰】bound_max_y は未設定時 i32::MAX。ここへ transform_ty を 素の + で足すと符号付き整数オーバーフローで負の巨大値に折り返り、 要素が画面外へ消える(overflow:hidden クリップ計算で見つかった のと同じバグクラス)。必ず saturating_* を使う。