今回はhoverで画像がズームインする滑らかなCSSアニメーションを実装しました。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのエフェクトのコードはすべて完全オリジナルなのでコピペ大歓迎です。
この記事の目次
hoverで画像が浮き上がる画像一覧のCSSアニメーション
目次
1. hoverで景色が200%ズームインするCSSアニメーション
下の画像のようになります
実際の動きはこちら
コードの確認
<div class="images">
<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>Hover this Image</span>
</div>
</div>
.images {
display: flex;
/* 子要素を横並びにする */
width: 50%;
padding: 4% 2%;
box-sizing: border-box;
height: 48vh;
margin:0 auto;
}
.image {
flex: 1;
overflow: hidden;
/* はみ出す箇所を隠す */
transition: .5s;
/* アニメーションの時間を指定 */
margin: 0 2%;
box-shadow: 0 20px 30px rgba(0,0,0,.1);
/* ボックスに影をつける(左から水平方向の長さ、垂直方向の長さ、ぼかしの長さ、色) */
line-height: 0;
/* 文字の高さを指定 */
}
.image > img {
width: 200%;
/* デフォルトでの画像のズーム率を指定 */
height: calc(100% - 7vh);
/* 文字背景の高さを指定 */
object-fit: cover;
/* imgをimageの枠にトリミングしてはめ込む */
transition: .5s;
/* アニメーションの時間を指定 */
}
.image > span {
font-size: 3.5vh;
display: block;
text-align: center;
line-height: 2.0;
/* 文字の高さを指定 */
}
.image:hover {
flex: 1 1 50%;
}
.image:hover > img {
width: 100%;
height: 100%;
}
ここがポイント!
- flexで要素を横並びに指定
- box-shadowで奥行きをつけて立体感を演出
- transitionを細かく指定することで複雑なアニメーションを実現
- object-fit: coverでimgをimageの枠にトリミングしてはめ込み
- overflow: hiddenではみ出す箇所を隠した
参考
そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!
未経験からWeb制作で月50万稼げるようになったUdemy教材3選
でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!
完全無料で一人前のエンジニアになれるプログラミングスクールあります