transition
circle reveal / clip-path circle transition
クリック地点から円が広がり、次の画面が中から現れるページ遷移。clip-pathのcircle()を0%→150%へ動かすだけで実装でき、「押した場所から世界が切り替わる」因果が体感として伝わるのが強み。
02 — Prompt template
03 — Params
duration(円が広がる時間 s) — 範囲 0.4〜1.2 / 初期 0.6
0.5〜0.8sが目安。円は面積が半径の2乗で増えるため、体感は数値より速く感じる。origin(円の発火原点) — 選択: click / center / top-left / bottom-right(初期: click)
clickはクリック地点が円の中心になる。ボタン起点ならclick、演出優先ならプリセットを使う。
04 — Vocab
clip-path: circle() — 要素を円形に切り抜くCSS。circle(半径 at x y) の半径を動かすだけで円形遷移になる。切り抜きなので中身は変形しない。
発火原点(origin) — 円が広がり始める中心点。クリック座標をatに渡すと「押した場所から開く」因果が生まれ、遷移の理由が伝わる。
半径150% — 原点が画面の隅にあっても対角まで届く安全値。100%では覆い残しが出ることがあるため、最終半径は余裕を持たせる。
面積の非線形 — 円の面積は半径の2乗で増えるため、線形に半径を動かしても後半が一気に開いて見える。easingは強くかけすぎない。
05 — NG → OK examples
NG
言い方: 「「クリックしたら丸く広がって画面が切り替わるやつを作って」」
なぜNG: 原点・最終半径・時間がすべて未定義。中央固定の円しか出ない、半径100%指定で四隅が覆い切れず旧画面の角が残る、円形divをscaleで拡大して端がぼやける、といった実装が返ってきやすい。
OK
言い方: 「「circle revealを実装。次画面をclip-path: circle(0% at クリック座標)で重ね、0.6sのease-in-outでcircle(150%)へ。clip-pathのみで動かし、完了後はclip-pathを外して旧画面を破棄。reduced-motionは即時切替」」
なぜOK: 原点の決め方・最終半径・時間・後始末まで指定できている。「150%」の一言が四隅の覆い残し事故を防ぐ。
