ui
pill expand / expanding pill button
小さな円がポンと現れ、そのまま横に伸びてラベル付きのカプセルになるボタン演出。容器が伸びきってから文字を出す「順番」だけで、動きの丁寧さが決まる。
02 — Prompt template
03 — Params
duration(幅が伸びる時間 s) — 範囲 0.1〜0.6 / 初期 0.24
0.2〜0.3sが軽快。0.4sを超えるとボタンが重く感じる。labelDelay(ラベルが出るまで s) — 範囲 0〜0.5 / 初期 0.26
durationとほぼ同じ値にすると、伸びきってから文字が出る。0にすると文字が容器からはみ出て見える。width(展開後の幅 px) — 範囲 90〜220 / 初期 140
ラベルの文字数で決める。畳んだ円の直径(40px)との差が大きいほど伸びが目立つ。origin(伸びる起点) — 選択: left / center / right(初期: left)
ライムの点が起点。画面端に置くピルは、端から内側へ伸びる向きを選ぶ。
04 — Vocab
pill(カプセル) — border-radius: 999pxで両端が半円になった形。幅が変わっても端の丸みが崩れないのが利点。
width vs scaleX — scaleXは軽いがラベルと角丸まで横に潰す。ピルはwidthを動かし、absoluteでリフローの影響範囲を閉じ込めるのが定石。
遅延の非対称 — 開くときは容器→ラベル、閉じるときはラベル→容器。同じ順番で往復させると閉じ際にもたつく。
transform-origin — scale(0)から出現する起点。画面左端のピルなら left にしないと、外側へはみ出して生まれる。
05 — NG → OK examples
NG
言い方: 「「ホバーでボタンが伸びてテキストが出るやつにして」」
なぜNG: 「伸びる」だけではscaleXで潰れた実装が返ってきて、ラベルと角丸が横に歪む。容器とラベルを同時に出す実装になり、伸びきる前に文字がはみ出す。
OK
言い方: 「「pill expandを実装。待機はscale(0)の円、ホバーでscale(1)→widthを140pxへ0.24sで伸長。transform-origin: left。widthをアニメ(scaleX禁止)、absoluteでリフロー隔離。ラベルは0.26s遅れてfade in、閉じるときは逆順」」
なぜOK: 伸ばす対象(width)・禁じ手(scaleX)・起点・容器とラベルの時間差・閉じる順番まで指定。この4点が揃うと実装者が違っても同じ動きになる。
