GSAPでカードをくるっと回転|UIに動きを与えるアニメーション演出


WebサイトやアプリのUIに「くるっ」とした動きが加わるだけで、体験は一気にリッチになります。
今回は、JavaScriptアニメーションライブラリ GSAP(GreenSock Animation Platform)を使って、カード要素をX軸方向に回転させるアニメーションUIを構築する方法をご紹介します。

名刺のようなカードがクリックに反応して回転することで、ユーザーに動きと情報の切り替わりを自然に伝えられる──
そんなインタラクティブなUI演出が、たった数行のGSAPとCSSで実装可能です。


この記事で紹介する内容

  • カード要素がくるっと回転して切り替わる演出
  • 前後のカードを入れ替えながらアニメーションする方法
  • 回転軸と方向(transform-origin)の指定方法
  • ダークモードや立体感を取り入れた今風デザイン
  • クリックボタンで「次へ」「前へ」の切り替えを実装

また、この記事ではあえてコードを省略し、UIの動きそのものに焦点を当てて説明しています。実装はCodePenにて動作確認できます。


デモはこちら(CodePen)

See the Pen Untitled by masakazuimai (@masakazuimai) on CodePen.


回転アニメーションでUIに「躍動感」を

今回の回転UIは、名刺サイズのカードがY軸またはX軸を中心に回転することで、次のカードが「めくられる」ように登場する演出です。

これまでの記事では、カードを「沈みながら後ろに送る」という演出でしたが、
今回の別パターンではカードそのものが回転して切り替わることで、よりダイレクトでダイナミックな印象を与えることができます。


UI構成と動きの考え方

UIの構造は以下のようにシンプルです。

  • .card-holder:カード全体を包む領域。perspective を加えて立体的に
  • .card:背景画像付きのカード要素。複数重ねて表示
  • 「次へ」「前へ」ボタンで順番切り替え

▶ アニメーションの流れ(次のカード)

  1. 手前のカードが X軸に90度 回転して消える
  2. DOMの最後に移動して裏側でリセット
  3. 回転角 -90度 → 0度 に戻して再登場

▶ 前のカードに戻すとき

  1. 最後尾のカードを先頭に移動
  2. 初期状態で 90度 回転させておく
  3. 0度 まで回転して表示

このように、GSAPの .to().set() を活用することで、「視覚的には回転しながら切り替わっている」ように見せつつ、実際にはDOMを入れ替えて再利用しているのがポイントです。


回転の起点は「transform-origin」で指定する

カードの回転は、transform-origin の設定で表現が大きく変わります。

  • center bottom:下辺を支点に上に向かって回転(めくる感じ)
  • center top:上辺を支点に下に倒れるような回転
  • center center:中心からぐるりと回る回転(回転ドア風)

今回は名刺風のカードを「上にめくる」ように演出したかったため、
center bottom → 回転 → center top という切り替えを採用しています。


なぜGSAPを使うのか?

CSSでもtransform: rotateX()は使えますが、GSAPを使うメリットは圧倒的です。

  • イージングやタイミングの制御が簡単
  • 複数ステップのアニメーションが連続で記述できる
  • onCompleteイベントでDOM操作と連携しやすい
  • rotationX, rotationY などのプロパティが明確に扱える

GSAPは「回転」や「位置変更」などのトランスフォーム系アニメーションに極めて強く、柔軟に拡張しやすいのが特長です。


デザインはモダンでシンプルに

今回のデモは以下のデザイン要素を意識して調整しています:

要素スタイル
カードサイズ640px × 400px の名刺風比率
背景画像picsum.photos のランダム画像でおしゃれに見せる
ボタンブルー系のモダンな配色で存在感を
影と立体感box-shadow, perspective, backface-visibility を活用

これらを組み合わせることで、軽量でありながら視覚的に高品質なUIに仕上がります。


応用アイデア(発展編)

この「カード回転」アニメーションは、以下のように応用が可能です:

✅ 表裏の切り替え(名刺裏表)

カードの裏面に transform: rotateX(180deg) を指定し、表面と裏面を front / back クラスで切り替えると、フリップアニメーションになります。
「プロフィール表示」「連絡先情報」「商品詳細」などに最適です。

✅ スワイプ操作の追加

ボタンだけでなく、GSAPの Draggable プラグインを使えば、カードを指でスワイプしてめくるインタラクションも実現可能です。
スマホ対応を視野に入れるなら、UX向上につながる重要な要素です。

✅ タイムライン管理

複数のアニメーションを連続して発火させるなら、gsap.timeline() を使うと管理がしやすくなります。
回転と拡大縮小、opacityなどを複合的に組み合わせれば、もっと深みのある演出も実現可能です。


回転演出は「操作性」と「意外性」のバランスが良い

今回のような「くるっ」とした動きは、UIに変化を与えることで操作性を高めつつ、ちょっとした驚き(意外性)を与えられるのが最大の魅力です。

回転はインパクトがありながらも、ユーザーの注意を妨げず、次の情報に自然につながる動きです。

ビジュアルの切り替え、カードの再配置、ページ遷移演出など、さまざまな場面で活用できるアニメーション手法だと言えます。


まとめ|GSAP × 回転演出でUIをアップグレード

今回の「カード回転アニメーション」は、GSAPとCSSを使って比較的シンプルな構成で実装できます。

GSAPはスムーズな回転表現を得意としており、タイミング制御やDOMとの連携も柔軟です。
ちょっとした見た目の工夫で、ユーザー体験をアップグレードできる強力なツールと言えるでしょう。

まずは今回のサンプルをベースに、自分なりのレイアウトや演出にアレンジしてみてください。
少しの回転で、UIはもっと魅力的になります。

✪ 画像素材がないものはランダムで表示されるようになっています。フリー素材などでご用意ください。

おすすめChromeプラグイン一覧

プラグイン名特徴
GoFullPageウェブページ全体のスクリーンショットを簡単に取得できるブラウザ拡張機能です。
ColorZilla色を抽出するための拡張機能です。
WhatFontウェブページ上のフォントの情報を簡単に確認できるブラウザ拡張機能です。
PerfectPixelデザイナーが作成したデザインと実際にコーディングされたウェブページがどの程度一致しているかを確認・調整するためのブラウザ拡張機能です。

模写の手順

ステップ内容
ステップ 1構図を手書きか全画面スクショ(Go full page等)した後、ペイントツールで四角で囲い、大まかなclass,命名規則をあらかじめ決める。
ステップ 2HTMLの基本構造を作成する
ステップ 3CSSでレイアウトを模写する
ステップ 4 中級〜JavaScriptを追加して動きを再現する
ステップ 5最終調整を行い、検証ツールやPerfectPixel(chromeプラグイン)などで完成を確認する。