transition
zoom through transition
クリックした要素に向かって画面ごとズームインし、突き抜けた先で次のページに切り替わるトランジション。サムネイルから詳細ページへの遷移で「その要素の中に入っていく」文脈を作れる。鍵はtransform-originをクリック要素の中心に合わせること。
02 — Prompt template
03 — Params
duration(ズームの時間 s) — 範囲 0.3〜1.5 / 初期 0.7
0.5〜0.8sが目安。ズームは体感速度が速く、1sを超えると酔いやすい。zoom(最終倍率) — 範囲 2〜10 / 初期 5
3未満だと「突き抜けた」感が出ない。4〜6で十分。上げすぎても後半は速すぎて視認できない。
04 — Vocab
transform-origin — 拡大の不動点。クリック要素の中心に合わせると「その要素へ飛び込む」動きになる。既定の中央のままだとただの全画面ズーム。
ease-in — 加速するイージング。ズームスルーは後半ほど速くなると突き抜ける勢いが出る。ease-outにすると失速して見える。
レイヤー重ね — 遷移中は旧ページを上・新ページを下に重ねる。旧ページのフェードが遅れると2画面が混ざるので、拡大の後半にフェードを重ねる。
getBoundingClientRect — クリック要素の画面内座標を取る標準API。originの%換算(要素中心 ÷ ビューポート寸法 × 100)に使う。
05 — NG → OK examples
NG
言い方: 「「クリックしたらズームして次のページに行くようにして」」
なぜNG: どこを起点に・何倍まで・何秒でがすべて未定義。transform-originが既定の中央のままで、クリックした要素と無関係な場所へ吸い込まれる実装や、フェードがなくズームの果てで画面がぶつ切りになる実装が返ってきがち。
OK
言い方: 「「zoom throughを実装。クリック要素の中心をtransform-originに、現在ページをscale 1→5・0.7s・ease-inで拡大、後半でopacity 0。下に次ページを敷いておき、完了後にレイヤー破棄。reduced-motionは即時切替」」
なぜOK: originの決め方・倍率・時間・フェード開始点・後始末まで指定されている。「クリック要素の中心をoriginに」が、この動きの成否を分ける一文。
