【transform style:preserve 3d】失敗しないCSS画像アニメーション

今回はtransform style:preserve 3dで絶対に失敗しない洗練されたCSS画像アニメーションをご紹介。box shadowでリアルです。拡大します。超動きます。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。

こちらのアニメーション/エフェクトのコードはすべて完全オリジナルなのでコピペ大歓迎です。

この記事の目次

【transform style:preserve 3d】失敗しないCSS画像アニメーション

  1. アニメーション動作の確認
  2. コードの確認
  3. このアニメーションのポイント!

 

1. 3D画像が2D画像に変化するシンプルなhoverアニメーション

まずはアニメーションの動作から確認していきましょう

アニメーション動作の確認

動きは下の画像のような感じになります

実際の動きはこちら

 

コードの確認

<div class="container">
  <div class="image">
    <img src="https://source.unsplash.com/1000x800" style="background-size:cover;" class="img" alt="">
  </div>
</div>
* {
  padding: 0;
  margin: 0;
}
.container {
  width: 100%;
  min-height: 100vh;
}
.image {
  perspective: 3000px;
  /* 3D変形の奥行きの指定 */
  width: 50%;
  position: absolute;
  transform: translate(43%, 45%);
  /* 画像の位置調整 */
  transform-style: preserve-3d;
  /* 要素の3D指定 */
}
.image img {
  transform: rotateX(50deg) rotateZ(-30deg) translate3d(-120px, -80px, 30px);
   /* 画像の角度調整 */
  box-shadow: -30px 30px 15px 5px rgba(0,0,0,0.4);
  transition: all 1.0s;
   /* 動きの速度調整 */
  transform-style: preserve-3d;
  width: 45%;
   /* 画像の大きさ調整 */
}
.image:hover img {
  transform: rotateX(0deg) rotateZ(0deg) translate3d(-120px, -100px, 0px);
  /* hover後の画像の角度調整 */
  box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.0);
  /* hover後の影の打ち消し */
  width: 60%;
  /* hover後の画像の大きさを調整(今回は1.5倍に変形するように調整) */
}
ここがポイント!
  1. 画像4つ各々にスタイルを指定していく
  2. transfromプロパティとbox-shadowを使って画像を3Dに変形
  3. hover時にそれらを打ち消す+widthを1.5倍に設定することで拡大しながら2D画像に変化
  4. transitionプロパティを指定することで滑らかなアニメーションを実現

参考

そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!

ふたご


でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!

ふたご

完全無料で一人前のエンジニアになれるプログラミングスクールあります
  1. プログラミング学習&サポートが無料!
  2. 誰もが知っている超優良企業への就職サポート付き!
  3. 学習言語:Java、PHP、HTML、CSSなど

 

   話だけ聞いてみる