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,
) -> i32Expand 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_* を使う。