scroll
sticky pin / pinned section
スクロール中に要素が画面に固定され、残りのコンテンツだけが流れていく演出。position: stickyだけで成立する最も堅牢なピン留めで、ストーリーテリングや工程紹介の骨格になる。
02 — Prompt template
03 — Params
length(固定区間の長さ 画面高比) — 範囲 1.5〜4 / 初期 2
親セクションの高さを画面高さの何倍にするか。2〜3倍が定番。4倍を超えると読者が飽きて離脱する。top(固定位置 px) — 範囲 0〜80 / 初期 16
画面上端から何pxの位置で固定するか。固定ヘッダーがある場合はその高さ分を確保する。
04 — Vocab
position: sticky — スクロールに応じてrelativeとfixedを自動で行き来する配置。JS不要でピン留めできるが、効く範囲は親要素の中だけ。
overflow: clip — はみ出しを描画だけ断つ指定。overflow: hiddenは祖先にあるだけでstickyを殺すが、clipはスクロールコンテナ化しないので殺さない。
固定区間(pin distance) — 要素が固定されたまま消化されるスクロール量。「親の高さ − 固定要素の高さ」で決まり、親を高くするほど長く止まる。
top(しきい値) — stickyが発動する画面上端からの距離。top: 0で上端ピタ付き、固定ヘッダーの高さ分ずらすのが実務の定番。
05 — NG → OK examples
NG
言い方: 「「スクロールしたらこのブロックを画面に固定して」」
なぜNG: scrollイベントを監視してposition: fixedをJSで付け外しする壊れやすい実装が返ってきがち。ガタつき・iOSでのズレ・解除位置のバグの温床になるうえ、固定区間の長さも決まらない。
OK
言い方: 「「position: sticky; top: 16pxでピン留め。親セクションを200vhにして固定区間を確保。祖先にoverflow: hiddenを置かない(必要ならclip)。進捗バーはrAFでtransformのみ」」
なぜOK: 実装方式(sticky)・固定区間の作り方(親の高さ)・stickyを殺す罠の回避まで指定している。「overflow: clip」の一言が「なぜか固定されない」事故を防ぐ。
