今回は画像背景に【filter+linear gradient】で美しいCSSエフェクトの実装方法をご紹介。簡単です。滑らかに動きます。画像一覧画面を作る際に役立ちます。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのアニメーション/エフェクトのコードはすべて完全オリジナルなのでコピペ大歓迎です。
この記事の目次
画像背景に【filter+linear gradient】で美しいCSSエフェクト
目次
1. 画像背景に【filter+linear gradient】で美しいCSSエフェクト
まずはアニメーションの動作から確認していきましょう
アニメーション動作の確認
動きは下の画像のような感じになります
実際の動きはこちら
コードの確認
<div class="images">
<div class="image left">
<img src="https://source.unsplash.com/1000x800" style="background-size:cover;">
<span>Beautiful</span>
<p>I Just Wanna Go There<br>I Just Wanna Go There</p>
</div>
<div class="image center">
<img src="https://source.unsplash.com/1000x801" style="background-size:cover;">
<span>Fantastic</span>
<p>I Just Wanna Go There<br>I Just Wanna Go There</p>
</div>
<div class="image right">
<img src="https://source.unsplash.com/1000x802" style="background-size:cover;">
<span>Awesome</span>
<p>I Just Wanna Go There<br>I Just Wanna Go There</p>
</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;
}
/* それぞれの画像で異なるグラデーションカラーを指定 */
.left {
/* 背景色指定 */
background : linear-gradient(41deg, white 1%, red) fixed;
}
.center {
/* 背景色指定 */
background : linear-gradient(41deg, white .1%, orange) fixed;
}
.right {
/* 背景色指定 */
background : linear-gradient(41deg, white 50%, green) fixed;
}
.image img {
/* アニメーション前の画像のサイズを指定 */
width: 100%;
/* アニメーション前の背景の位置を指定 */
height: calc(100% - 100vh);
/* 画像が伸縮せずに滑らかに表示されるように指定 */
object-fit: cover;
/* アニメーション速度を指定 */
transition: 1s;
}
/* 文字のスタイル指定 */
.image p {
margin-top:30px;
line-height: 2em;
font-weight:700;
font-size:14px;
color: #fff;
}
/* 背景のスタイル指定 */
.image span {
font-weight: bold;
color: #fff;
font-size: 15px;
display: block;
text-align: center;
height: 40px;
line-height: 2.6;
border-bottom: 1px solid #fff;
}
/* hover後の画像スタイル指定 */
.image:hover img {
/* フィルターでコントラスト・彩度のエフェクトを調整 */
filter: contrast(150%) saturate(110%);
/* hover後に画像が拡大するように指定 */
transform : scale(2,2);
width: 100%;
height: 100%;
}
ここがポイント!
- overflow: hiddenで枠に収まらないサイズの要素は隠す
- object-fit: coverで画像が伸縮せずに滑らかに表示されるように指定
- box-shadowで奥行きをつける
- background : linear-gradient()でグラデーションを指定
- フィルタープロパティでhover後のコントラスト・彩度のエフェクトを調整
- transform : scale(2,2)でhover後に画像サイズが拡大するよう指定
- transitionで滑らかなアニメーションを実現
参考
そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!
未経験からWeb制作で月50万稼げるようになったUdemy教材3選
でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!
完全無料で一人前のエンジニアになれるプログラミングスクールあります