media
card stack shuffle / deck cycle
扇状に重ねたカードの一番手前が横へ抜け、傾きながら縮んで束の背面へ回り込む演出。カルーセルと違い「トランプの束」というメタファーが効くので、3〜5枚の少数を省スペースで巡回させたいときに強い。
02 — Prompt template
03 — Params
interval(自動送りの間隔 s) — 範囲 0〜8 / 初期 3.2
0で自動送りなし。3〜4sが目安。カードに読ませたい文字が載るなら5s以上か、いっそ0にして手動送りにする。duration(1枚が背面へ回る時間 s) — 範囲 0.3〜1.6 / 初期 0.8
0.7〜0.9sが自然。0.5sを切ると「抜けて回り込む」経路が読めず、ただの瞬間入れ替えに見える。fan(扇の開き角 deg) — 範囲 0〜16 / 初期 9
手前と奥のカードの角度差。8〜10度で「無造作に置かれた束」に見える。0だと完全に重なり枚数が伝わらず、15度を超えると散らかって見える。scaleStep(奥のカードの縮小幅) — 範囲 0〜0.12 / 初期 0.05
1枚奥へ行くごとに縮む幅。0.04〜0.06が上品。0.1を超えると奥のカードが遠くに飛んで見え、束の一体感が切れる。
04 — Vocab
z-index — 重なり順。シャッフルでは「いつ最背面に落とすか」が肝で、経路の中盤で切り替えると束の下へ潜って見える。アニメーション内でも離散値として切り替えられる。
扇状に重ねる (fan out) — 同じ位置のカードを少しずつ回転・縮小させて束に見せる手法。角度差と縮小幅の2つだけで「枚数がある」ことが伝わる。
着地点の一致 — 送り出しアニメーションの終了状態を、そのカードが次に取る静止状態と同じtransformにすること。ズレると並び替えの瞬間にカクッと飛ぶ。
animation-fill-mode: forwards — アニメーション終了後も最終フレームの状態を保つ指定。これがないと終了直後に元の位置へ戻り、並び替えとの間で一瞬ちらつく。
05 — NG → OK examples
NG
言い方: 「「カードをトランプみたいにシャッフルさせて」」
なぜNG: 「シャッフル」だけでは、束から抜ける経路も角度も決まらない。カードが単にフェードで入れ替わるだけの実装や、z-indexを最初から落として「束の後ろを通らずに手前で消える」不自然な動きが返ってきがち。DOMを毎回並べ替えて位置がガタつく実装も定番の失敗。
OK
言い方: 「「カードを絶対配置で重ね、手前から rotate(-9deg)/scale(1) で 0.05 ずつ縮小した扇にする。手前の1枚を0.8sで translateX(-90%) へ逃がし、経路の中盤でz-indexを最背面に落として最奥の静止transformに着地。残りは0.1sずつ遅らせて繰り上げ。3.2s間隔で自動送り、transformとz-indexのみ、reduced-motionなら即時入れ替え」」
なぜOK: 扇の作り方(角度と縮小幅)、抜ける経路、z-indexを落とすタイミング、着地点の一致まで指定している。特に「最奥の静止transformに着地させる」の一言が、アニメーション終了と並び替えの継ぎ目を消す。
