hoverすると画像が150%拡大!flexでぎゅーっとしたレイアウトになるCSSアニメーション

今回は背景をhoverすると画像が150%拡大してflexでぎゅーっとしたレイアウトになるアニメーションを実装しました。

overflow: hiddenやtransitionを使用しておりコードの解説を見ながら簡単にカスタマイズができます

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

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

 

この記事の目次

画像が150%拡大して現れるCSSアニメーションレイアウト

  1. エフェクトの確認
  2. コードの確認
  3. このエフェクトのポイント!

 

1. hoverすると画像が150%拡大&flexでぎゅーっとしたレイアウト

下の画像のような3D画像になります

実際の動きはこちら

 

コードの確認

 

<div class="images">
  <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-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80">
    <span>Evening</span>
  </div>
</div>
.images {
  display: flex;
  width: 80%;
  padding: 4% 2%;
  box-sizing: border-box;
  height: 60vh;
  margin:0 auto;
}
.image {
  flex: 1;
  /* 画像の配置を指定(指定しないと読み込みの際にサイズが崩れる) */
  overflow: hidden;
  /* 範囲からはみ出た要素を隠す指定 */
  margin: 0 2%;
  box-shadow: 0 20px 30px rgba(0,0,0,.1);
  /* ボックスシャドウで奥行きをつける */
  line-height: 0;
  transition-duration:.8s;
  /* アニメーションの開始から終了までの時間を指定 */
}
.image img {
  width: 200%;
  height: calc(100% - 8vh);
  /* アニメーション前の背景の位置を指定 */
  object-fit: cover;
  /* 画像が伸縮せずに滑らかに表示されるように指定 */
  transition-duration:.8s;
  /* アニメーションの開始から終了までの時間を指定 */
}
.image span {
  background : linear-gradient(41deg, purple 25%, orange 50%, rgba(255, 107, 0, 0.48)) fixed;
  /* グラデーションカラーを指定 */
  font-weight: bold;
  color: #fff;
  font-size: 3.0vh;
  display: block;
  text-align: center;
  height: 8vh;
  line-height: 2.6;
  border-top: 2px solid #fff;
}
/* hover後の画像スタイル指定 */
.image:hover { flex: 1 1 50%; }
.image:hover > img {
  width: 100%;
  height: 100%;
}
ここがポイント!
  1.  flexboxとmargin:0 auto;でど真ん中に設置
  2.  overflow: hiddenで枠に収まらないサイズの要素は隠す
  3.  box-shadowで奥行きをつけて立体感を演出
  4.  background : linear-gradient() fixedでグラデーションの指定
  5.  object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
  6.  transitionで開始から終了までの十分な時間を設定し滑らかなアニメーションを実現
  7. height: calcでimgの高さを詳細に指定
  8. widthとheightを調整しレイアウトを整えた
  9. flex: 1 1 50%でhoverした画像としてない画像の比率を3:1にしてぎゅーっとしたレイアウトを実現

参考

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

ふたご


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

ふたご

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

 

   話だけ聞いてみる