CSS×JavaScriptでカードを本格シャッフル!本物の動きを再現するUIアニメーション作り方
スポンサーリンク

こんにちは!静岡県浜松市でWEBデザイナーをしています小瀧です。

CSS の transform と JavaScript のランダム値を組み合わせることで、
まるで本物のカードがシャッフルされているようなアニメーションを作ることができます。

今回は、クリックするだけで「カードが散らばる → 混ざる → 1つに戻る」という気持ちの良い動作を再現。
ゲームUIはもちろん、カードを使うコンテンツのアクセントにも最適です。
コピペで動かせるサンプルコード付きなので、そのまま実装できます。

完成デモの動き
  1. ボタンを押す
  2. カードが左右や上下にバラバラ飛ぶ
  3. 回転しながらランダムに散らばる
  4. 数秒後にきれいに揃って戻る

transform と transition だけで軽量動作

実際のコード

See the Pen
Untitled
by 小瀧賢 (@ekwwawpb-the-styleful)
on CodePen.

解説:なぜこれでシャッフルに見えるのか?

transform が滑らかな理由

CSS の transform(translate、rotate)は GPU が処理するため、
複数のカードが同時に動いても重くなりません。

ランダム値の生成が“混ざってる感”を演出

(Math.random() - 0.5) * 240

これにより、左右へ最大 120px 揺れ動く計算になります。
X・Y・回転の方向をバラバラにすることで、自然な「シャッ…」という動作に。

1枚に戻すと“まとまり”が生まれる

飛ばした後、setTimeout で束に戻すと「一度バラけて → まとまる」という見た目になり、まさにカードが混ぜられている演出になります。

発展アイデア

  • シャッフル動作に delay をつけて“時間差”を演出
  • 途中で中央に吸い込まれるような動きを入れる
  • z-index をバラバラにして前後関係を混ぜる
  • シャッという効果音を鳴らす
  • カード裏面を画像に変更し“トランプ感”を出す

アニメーション表現は数値を変えるだけで無限にアレンジできます。

まとめ

今回のシャッフルアニメーションは、
CSS の transform と JavaScript の乱数だけで簡単に作れる UI 演出です。
ゲーム系のサイトはもちろん、選択肢をカードで表現する UI にも応用でき、
使いどころの多いアニメーションなので、ぜひ活用してみてください。

 

satokotadesignキャンペーン実施中!

浜松市の飲食店限定|ホームページ無料作成サービス
ぶっちゃけ無料相談会!ホームページ制作の悩み話してみませんか?
satokotadesign4周年記念キャンペーン

静岡県浜松市でホームページ制作ならsatokotadesign
静岡県浜松市でホームページ制作ならsatokotadesign

スポンサーリンク
おすすめの記事