今回は【徹底解説】height calcで滑らかなCSS画像アニメーションを実装する方法をご紹介。簡単です。超動きます。画像一覧画面を作る際に役立ちます。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのアニメーション/エフェクトのコードはすべて完全オリジナルなのでコピペ大歓迎です。
この記事の目次
【徹底解説】height calcで滑らかなCSS画像アニメーションを実装する方法
目次
1. 【徹底解説】height calcで滑らかなCSS画像アニメーションを実装する方法
まずはアニメーションの動作から確認していきましょう
アニメーション動作の確認
動きは下の画像のような感じになります
実際の動きはこちら
コードの確認
<div class="images">
<div class="image">
<img src="https://source.unsplash.com/1000x800" style="background-size:cover;">
<span>Beautiful</span>
</div>
<div class="image">
<img src="https://source.unsplash.com/1000x801" style="background-size:cover;">
<span>Fantastic</span>
</div>
<div class="image">
<img src="https://source.unsplash.com/1000x802" style="background-size:cover;">
<span>Awesome</span>
</div>
</div>
/* 画像の配置・サイズを指定 */
.images {
display: flex;
width: 80%;
padding: 4% 2%;
height: 40vh;
}
.image {
/* 画像の配置を指定(指定しないと読み込みの際にサイズが崩れる) */
flex: 1;
/* 範囲からはみ出た要素を隠す指定 */
overflow: hidden;
/* 画像間の間隔を指定 */
margin: 0 2%;
/* ボックスシャドウで奥行きをつける */
box-shadow: 0 20px 30px rgba(0,0,0,.1);
/* 文字配置の調整 */
line-height: 0;
background : #fffcfc;
}
.image img {
/* アニメーション前の画像のサイズを指定 */
width: 100%;
/* アニメーション前の背景の位置を指定 */
height: calc(100% - 100vh);
/* 画像が伸縮せずに滑らかに表示されるように指定 */
object-fit: cover;
/* アニメーション速度を指定 */
transition: .6s;
}
/* 背景のスタイル指定 */
.image span {
font-weight: 300;
color: #888888;
font-size: 15px;
display: block;
text-align: center;
height: 5vh;
line-height: 13.6;
}
/* hover後の画像スタイル指定 */
.image:hover img {
/* フィルターで明るさ・コントラスト・彩度のエフェクトをつける */
filter: brightness(120%) contrast(150%) saturate(120%);
width: 100%;
height: 100%;
}
ここがポイント!
- flexboxでcontainerの中身をど真ん中に設置
- overflow: hiddenで枠に収まらないサイズの要素は隠す
- box-shadowで奥行きをつける
- object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
- フィルタープロパティでhover後の明るさ・コントラスト・彩度を指定
- transitionで滑らかなアニメーションを実現
参考
そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!
未経験からWeb制作で月50万稼げるようになったUdemy教材3選
でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!
完全無料で一人前のエンジニアになれるプログラミングスクールあります