今回は【flexboxのjustify−content:space-between】美しいCSS画像アニメーションをご紹介。BootstrapVueを使っています。エフェクトがついてます。誰でも簡単です。動きます。オシャレな画像一覧を作れます。レスポンシブ対応。
htmlとcssだけしか使っていません。
動きを見ていただければ使いたくなること間違いなしです!
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのアニメーション/エフェクトのコードはすべて完全オリジナルなのでコピペ大歓迎です。
この記事の目次
【flexboxのjustify−content:space-between】美しいCSS画像アニメーション
目次
【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);
}
ここがポイント!
- 画像を複数用意しflexboxで等間隔で中央に配置する(justify-content: space-between)
- 各々のwidth, heightを%表記としレスポンシブ対応
- hover前後のtransform: scaleを調整することで画像が拡大・縮小
- hover前後のopacityとfilter: blur(ぼかし) saturate(彩度)を調整しhoverされた画像のみを強調
- transitionで滑らかなアニメーションを実現
参考
そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!
未経験からWeb制作で月50万稼げるようになったUdemy教材3選
でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!
完全無料で一人前のエンジニアになれるプログラミングスクールあります