ui
Ticket stub tear-off / Ticket punch / Perforated tear-off
01Demo触って、数値を決める
0.25〜0.4sで「パチン→ビリッ」の2拍に分かれて読める。0だと穴と半券が同時に動いて穴が見えず、0.6sを超えると押してから反応が鈍く感じる。
0.8〜1.2sが紙の落ち方。ease-in で加速するので、0.5sを切ると落下ではなく弾き飛ばしに見え、1.5sを超えると宙を漂う。
落ちきるまでに半券が回る量。30〜45degで「ちぎれて片側から外れた」と読める。0だと切り離しが真下へ滑るだけになり、70degを超えるとひらひら舞う紙吹雪寄りになる。
半券の後に本体が手前へ寄る大きさ。1.15〜1.3で「受け取った」になる。1.0だと半券が落ちるだけで次の画面への橋渡しにならず、1.4を超えると舞台からはみ出す。
02Prompt数値はスライダーと連動
03 Vocab この動きを構成する語彙
perforation — ミシン目。半券の境目に並べた点線。radial-gradient を repeat-y で敷くと画像なしで描ける。
mask: radial-gradient — 円形の透明部分で要素を抜く指定。チケットの境目の上下の切り欠き(ノッチ)に使う。
chad — 穴を開けたときに抜け落ちる紙片。穴と別要素にして落とすと「穴を開けた」が一目で伝わる。
staggered sequence — 複数の部品の開始を少しずつずらして1つの出来事に見せる組み方。ここでは穴→紙片→半券→本体。
ease-in (加速) — 始めゆっくり終わり速いイージング。重力で落ちる物に使う。半券は cubic-bezier(0.5, 0, 0.9, 0.5)。
04 NG → OK 伝え方の差分
NG
言い方: 「ボタンを押したらチケットがビリッと破れる感じにして」
なぜNG: 「ビリッと」では何がどこから破れるのか決まらない。チケット全体がフェードアウトするだけか、全体を左右に割る(=torn paper reveal)実装が返り、穴開け→半券の落下→本体の持ち上げの時間差が抜けて「もぎって受け取った」に見えない。
OK
言い方: 「ticket stub tear-offで。穴をscale 0→1の0.12s、0.32s遅れで半券を1s ease-inでtranslate(60%,260%) rotate(36deg)へ落とし、0.45s遅れで本体をscale(1.25)へ持ち上げる。transformのみ」
なぜOK: 3つの部品(穴・半券・本体)の順番と遅延、落ち方のイージングと最終位置を値で指定した。時間差が「パチン→ビリッ→受け取る」の3拍を作る。
