【flexboxのjustify−content:space-between】美しいCSS画像アニメーション

今回は【flexboxのjustify−content:space-between】美しいCSS画像アニメーションをご紹介。BootstrapVueを使っています。エフェクトがついてます。誰でも簡単です。動きます。オシャレな画像一覧を作れます。レスポンシブ対応。
htmlとcssだけしか使っていません。
動きを見ていただければ使いたくなること間違いなしです!

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

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

この記事の目次

【flexboxのjustify−content:space-between】美しいCSS画像アニメーション

  1. BootstrapVueの導入方法
  2. アニメーション動作の確認
  3. コードの確認
  4. このアニメーションのポイント!

 

【flexboxのjustify−content:space-between】美しいCSS画像アニメーション

まずはBootstrapVueの導入方法から説明していきます。
すでにインストール済みの方はアニメーション動作の確認からご覧ください

BootstrapVueの導入

BootstrapVueの導入がまだの方のために導入方法を説明します

とりあえず下記をコピペして環境を整えてください

main.js

import BootstrapVue from 'bootstrap-vue'
import 'bootstrap/dist/css/bootstrap.css'
import 'bootstrap-vue/dist/bootstrap-vue.css'

Vue.use(BootstrapVue)

ターミナル

npm install vue bootstrap-vue bootstrap

以上でBootstrapVueの導入は完了です

 

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

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

実際の動きはこちら

 

コードの確認

  <div class="pic-background">
    <!-- BootstrapVueの公式サイトに記載のカードコンポーネントを再利用し、複数並べる -->
    <div class="pic">
      <b-card
        title="Title"
        img-src="https://source.unsplash.com/1000x802"
        img-alt="Image"
        img-top
        tag="article"
        style="max-width: 20rem;"
      >
        <b-card-text>
          description <br>description <br>description
        </b-card-text>
      </b-card>
    </div>
    <div class="pic">
      <b-card
        title="Title"
        img-src="https://source.unsplash.com/1000x801"
        img-alt="Image"
        img-top
        tag="article"
        style="max-width: 20rem;"
      >
        <b-card-text>
          description <br>description <br>description
        </b-card-text>
      </b-card>
    </div>
    <div class="pic">
      <b-card
        title="Title"
        img-src="https://source.unsplash.com/1000x800"
        img-alt="Image"
        img-top
        tag="article"
        style="max-width: 20rem;"
      >
        <b-card-text>
          description <br>description <br>description
        </b-card-text>
      </b-card>
    </div>
  </div>
/* 画像一覧をflexboxで横並びにする */
.pic-background{
  margin-top: 2%;
  display: flex;
  /* 垂直方向で中央に揃える */
  align-items:center;
  /* 水平方向で等間隔で中央に揃える */
  justify-content: space-between;
}
.pic img {
  width:100%;
  height: 100%;
}
.pic{
  /* 立体感を出すため少し影をつける */
  box-shadow:0 2px 3px 0px rgba(0,0,0,0.25);
  /* アニメーション速度を指定 */
  transition:.2s all;
}
/* 画像一覧全体のhover後の指定 */
.pic-background:hover .pic{
  /* フィルターでぼかし・彩度を調整する */
  filter: blur(3px) saturate(10%);
  /* 不透明度を調整 */
  opacity:.5;
  /* 画像のサイズを縮小 */
  transform: scale(.9);
  /* 影をなくす */
  box-shadow:none;
}
/* hoverされた画像の指定 */
.pic-background:hover .pic:hover{
  /* 画像のサイズはそのまま */
  transform:scale(1);
  /* フィルターでぼかし・彩度を調整する */
  filter:blur(0px) saturate(120%);
  /* 不透明度を調整 */
  opacity:1;
  /* 浮かせて強調するため影を大きくつける */
  box-shadow:0 8px 20px 0px rgba(0,0,0,0.125);
}
ここがポイント!
  1. 画像を複数用意しflexboxで等間隔で中央に配置する(justify-content: space-between)
  2. 各々のwidth, heightを%表記としレスポンシブ対応
  3. hover前後のtransform: scaleを調整することで画像が拡大・縮小
  4. hover前後のopacityとfilter: blur(ぼかし) saturate(彩度)を調整しhoverされた画像のみを強調
  5. transitionで滑らかなアニメーションを実現

参考

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

ふたご


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

ふたご

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

 

   話だけ聞いてみる