画像をhoverすると背景が上から降ってきて積み上がるCSSアニメーション実装【コピペだけ】

今回は画像をhoverするとブロックが積み上がっていくCSSアニメーションを実装しました。

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

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

 

この記事の目次

hoverで画像が浮き上がる画像一覧のCSSアニメーション

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

 

1. hoverするとゲームみたいにブロックが積み上がるCSSアニメーション

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

実際の動きはこちら

 

コードの確認

 

<div class="container">
  <div class="bg-pic">
    <div class="pic" style="background-image : url('https://cdn.pixabay.com/photo/2017/01/17/23/05/valetta-1988455_1280.jpg');">
      <div class="screen one"></div>
      <div class="screen two"></div>
      <div class="screen three"></div>
      <div class="screen four"></div>
      <div class="fonts">
        <h1>Malta's Building</h1>
        <p>this is a photo in malta <br><br><br>Have A Good Time</p>
      </div>
    </div>
  </div>
</div>
body {
  background-color: #E43;
}
.container {
  width  : 960px;
  margin : 0 auto;
  /* flexboxでcontainerの中身をど真ん中に設置 */
  display:flex;
  align-items:center;
  justify-content:center;
}
.container:after{
  clear   : both;
  display : table;
  content : '';
}
.bg-pic {
  width  : 500px;
  height : 500px;
  margin : 20px;
  background-color: white;
  float  : left;
  cursor : pointer;
  box-shadow : 3px 3px 5px 0px rgba(0,0,0,0.5);
  /* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、ぼかしの広さ、色) */
}
.pic {
  width  : 500px;
  height : 500px;
  position: relative;
  overflow: hidden;
  /* はみ出る部分を隠す */
  background-color: #102B46;
}
.fonts {
  background-color : #ffffff;
  width            : 500px;
  height           : 500px;
  padding          : 10px;
  top : 0;
  left: 0;
  font-family : georgia;
  color       : #888888;
  opacity : 0;
  /* 透明度を調整 */
  transition : opacity .8s;
  /* アニメーションの時間を調整 */
}
.fonts h1 {
  margin-top: 100px;
  margin-bottom : 40px;
}
.fonts p {
  font-size : 14px;
  font-style: italic;
  text-align: center;
  line-height : 20px;
}
.pic:hover .fonts {
  opacity : 1;
  /* 透明度を調整 */
  transition : opacity .5s .7s;
  /* アニメーションの時間を調整 */
}
.pic div {
  position : absolute;
  /* 親要素との絶対位置を指定 */
}
.screen {
  width  : inherit;
  /* 親要素のwidthを受け継ぐ */
  height : 130px;
  background-color: #fff;
  transition : all .4s;
  /* アニメーションの時間を調整 */
  top : -140px;
}
/* 各ブロックのアニメーション時間を指定 */
.screen.one {
  transition : all .1s;
}
.screen.two {
  transition : all .1s .1s;
}
.screen.three {
  transition : all .1s .2s;
}
.screen.four {
  transition : all .1s .3s;
}
.pic:hover .one {
  top : 390px;
  transition : all .2s;
}
.pic:hover .two {
  top : 260px;
  transition : all .2s .2s ;
}
.pic:hover .three {
  top : 130px;
  transition : all .2s .4s ;
}
.pic:hover .four {
  top : 0px;
  transition : all  .2s .6s;
}
ここがポイント!
  1. display:flexでど真ん中に設置 
  2. box-shadowで奥行きをつけて立体感を演出
  3. opacityでhover前とhover時で透明度を調整
  4.  transitionを細かく指定することで複雑なアニメーションを実現

参考

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

ふたご


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

ふたご

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

 

   話だけ聞いてみる