はじめに
小さなタイルの集合として見せる hover ギャラリーです。
この記事では document.createElement() でタイルを組み立てる部分を React の JSX に置き換え、GSAP はタイルの rotateY と奥行きの揺れだけを担当する形にしています。
今回作るもの
- 主役: 画像を分割して見せる3Dモザイクタイル
- トリガー: リスト項目の hover / focus
- 対象要素:
12 x 9のタイルグリッド - 再利用先: Works一覧、ギャラリー、実績リンク、ポートフォリオのプレビュー
画像の切り出しは background-position で行います。タイルごとに --x と --y を渡して、1枚の画像が分割されて見えるようにしています。
動きの組み立て
常時の動きは、各タイルの z を小さく揺らすだけです。これで静止画のグリッドに少しだけ奥行きが出ます。
hover 時は全タイルを rotateY で 180 度ずつ加算していきます。stagger.grid を使い、中心から外側へ反転が広がるようにしているのが見せ場です。
調整しやすい値
TILES_X: 横方向の分割数TILES_Y: 縦方向の分割数TILE_SIZE: 1タイルのサイズstagger.each: 反転が広がる速さduration: 1タイルの反転速度
画像は添付ファイル内のものではなく、Unsplash のフリー写真 URL に差し替えています。