【transform rotate(360deg)×flexbox】画像が回転+伸縮するCSSアニメーション3選

今回は【transform rotate(360deg)×flexbox】画像が回転+伸縮するCSSアニメーション3選をご紹介。シンプルかつ洗練されたデザイン。filterプロパティでエフェクト。アニメーションで複数の画像が動く。Web制作で使える。コピペOK。HTML, CSSだけ
動きを見ていただければ使いたくなること間違いなしです!

コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。

こちらのデザイン・コードはすべて完全オリジナルなのでコピペ大歓迎です。

Webデザインやフロントエンド初心者の方はWebデザイナー3ヶ月独学ロードマップを読んでから学習してもらえれば失敗しないと思います。

ふたご

 

1. 【縦回転】transform rotateX(360deg)×flexbox画像アニメーション

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

コードを見る
  <div class="images">
    <div class="image">
      <img src="https://images.unsplash.com/photo-1532699123275-37b5a57561cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1650&q=80">
      <span>Morning</span>
    </div>
    <div class="image">
      <img src="https://images.unsplash.com/photo-1513543806865-85e29a7c0352?ixlib=rb-1.2.1&auto=format&fit=crop&w=2775&q=80">
      <span>Day</span>
    </div>
    <div class="image">
      <img src="https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80">
      <span>Evening</span>
    </div>
  </div>
.images {
  /* 子要素を横並びに配置する */
  display: flex;
  margin: auto;
  width: 100%;
  padding: 3% 2%;
  box-sizing: border-box;
  height: 50vh;
}
.image {
  /* 要素位置の指定 */
  flex: 1;
  /* はみ出す箇所を隠す */
  overflow: hidden;
  /* アニメーション速度を指定 */
  transition: .8s;
  margin: 0 2%;
  /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
  box-shadow: 0 20px 30px rgba(0,0,0,.1);
  /* 文字の高さを指定 */
  line-height: 0;
}
.image > img {
  /* デフォルトでの画像のズーム率を指定 */
  width: 100%;
  /* 文字背景の高さを指定 */
  height: calc(100% - 5vh);
  /* imgをimageの枠にトリミングしてはめ込む */
  object-fit: cover;
  /* アニメーション速度を指定 */
  transition: .3s;
  /* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
  filter: blur(.5px) saturate(100%) brightness(100%) contrast(100%);
}
.image > span {
  font-size: 3vh;
  display: block;
  text-align: center;
  /* 文字の高さを指定 */
  line-height: 1.5;
}
.image:hover {
  /* hover後の画像のサイズを指定 */
  flex: 1 1 30%;
}
.image:hover > img {
  width: 100%;
  height: 100%;
  /* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
  filter: blur(0px) saturate(240%) brightness(110%) contrast(110%);
  /* 回転角度を調整 */
  transform: rotateX(-360deg);
  /* アニメーション速度を指定 */
  transition: .8s;
}
ここがポイント!
  1. flexboxとmargin: auto;でど真ん中に設置
  2. overflow: hiddenで枠に収まらないサイズの要素は隠す
  3. box-shadowで奥行きをつけて立体感を演出
  4. object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
  5. transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
  6. height: calcでimgの高さを詳細に指定
  7. flex: 1 1 30%+transform rotateで回転+ぎゅーっと伸縮するレイアウトを実現

 

2. 【横回転】transform rotateY(360deg)×flexbox画像アニメーション

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

コードを見る
  <div class="images">
    <div class="image">
      <img src="https://images.unsplash.com/photo-1532699123275-37b5a57561cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1650&q=80">
      <span>Morning</span>
    </div>
    <div class="image">
      <img src="https://images.unsplash.com/photo-1513543806865-85e29a7c0352?ixlib=rb-1.2.1&auto=format&fit=crop&w=2775&q=80">
      <span>Day</span>
    </div>
    <div class="image">
      <img src="https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80">
      <span>Evening</span>
    </div>
  </div>
.images {
  /* 子要素を横並びに配置する */
  display: flex;
  margin: auto;
  width: 100%;
  padding: 3% 2%;
  box-sizing: border-box;
  height: 50vh;
}
.image {
  /* 要素位置の指定 */
  flex: 1;
  /* はみ出す箇所を隠す */
  overflow: hidden;
  /* アニメーション速度を指定 */
  transition: .8s;
  margin: 0 2%;
  /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
  box-shadow: 0 20px 30px rgba(0,0,0,.1);
  /* 文字の高さを指定 */
  line-height: 0;
}
.image > img {
  /* デフォルトでの画像のズーム率を指定 */
  width: 100%;
  /* 文字背景の高さを指定 */
  height: calc(100% - 5vh);
  /* imgをimageの枠にトリミングしてはめ込む */
  object-fit: cover;
  /* アニメーション速度を指定 */
  transition: .3s;
  /* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
  filter: blur(.5px) saturate(100%) brightness(100%) contrast(100%);
}
.image > span {
  font-size: 3vh;
  display: block;
  text-align: center;
  /* 文字の高さを指定 */
  line-height: 1.5;
}
.image:hover {
  /* hover後の画像のサイズを指定 */
  flex: 1 1 30%;
}
.image:hover > img {
  width: 100%;
  height: 100%;
  /* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
  filter: blur(0px) saturate(240%) brightness(110%) contrast(110%);
  /* 回転角度を調整 */
  transform: rotateY(-360deg);
  /* アニメーション速度を指定 */
  transition: .8s;
}
ここがポイント!
  1. flexboxとmargin: auto;でど真ん中に設置
  2. overflow: hiddenで枠に収まらないサイズの要素は隠す
  3. box-shadowで奥行きをつけて立体感を演出
  4. object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
  5. transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
  6. height: calcでimgの高さを詳細に指定
  7. flex: 1 1 30%+transform rotateで回転+ぎゅーっと伸縮するレイアウトを実現

 

3. 【平面回転】transform rotateZ(360deg)×flexbox画像アニメーション

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

コードを見る
  <div class="images">
    <div class="image">
      <img src="https://images.unsplash.com/photo-1532699123275-37b5a57561cf?ixlib=rb-1.2.1&auto=format&fit=crop&w=1650&q=80">
      <span>Morning</span>
    </div>
    <div class="image">
      <img src="https://images.unsplash.com/photo-1513543806865-85e29a7c0352?ixlib=rb-1.2.1&auto=format&fit=crop&w=2775&q=80">
      <span>Day</span>
    </div>
    <div class="image">
      <img src="https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80">
      <span>Evening</span>
    </div>
  </div>
.images {
  /* 子要素を横並びに配置する */
  display: flex;
  margin: auto;
  width: 100%;
  padding: 3% 2%;
  box-sizing: border-box;
  height: 50vh;
}
.image {
  /* 要素位置の指定 */
  flex: 1;
  /* はみ出す箇所を隠す */
  overflow: hidden;
  /* アニメーション速度を指定 */
  transition: .8s;
  margin: 0 2%;
  /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
  box-shadow: 0 20px 30px rgba(0,0,0,.1);
  /* 文字の高さを指定 */
  line-height: 0;
}
.image > img {
  /* デフォルトでの画像のズーム率を指定 */
  width: 100%;
  /* 文字背景の高さを指定 */
  height: calc(100% - 5vh);
  /* imgをimageの枠にトリミングしてはめ込む */
  object-fit: cover;
  /* アニメーション速度を指定 */
  transition: .3s;
  /* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
  filter: blur(.5px) saturate(100%) brightness(100%) contrast(100%);
}
.image > span {
  font-size: 3vh;
  display: block;
  text-align: center;
  /* 文字の高さを指定 */
  line-height: 1.5;
}
.image:hover {
  /* hover後の画像のサイズを指定 */
  flex: 1 1 30%;
}
.image:hover > img {
  width: 100%;
  height: 100%;
  /* フィルタープロパティでぼやけ度合い・彩度・明るさ・コントラストを調整 */
  filter: blur(0px) saturate(240%) brightness(110%) contrast(110%);
  /* 回転角度を調整 */
  transform: rotateZ(-360deg);
  /* アニメーション速度を指定 */
  transition: .8s;
}
ここがポイント!
  1. flexboxとmargin: auto;でど真ん中に設置
  2. overflow: hiddenで枠に収まらないサイズの要素は隠す
  3. box-shadowで奥行きをつけて立体感を演出
  4. object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
  5. transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
  6. height: calcでimgの高さを詳細に指定
  7. flex: 1 1 30%+transform rotateで回転+ぎゅーっと伸縮するレイアウトを実現

参考

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

ふたご


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

ふたご

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

 

   話だけ聞いてみる