今回は【CSSアニメーション】画像をhoverするとグラデーション背景が閉まるアニメーションをご紹介。エフェクトがついてます。簡単です。動きます。オシャレな画像一覧を作れます。レスポンシブ対応。
htmlとcssだけしか使っていません。
コードの説明や実際の動きも詳しくまとめてみたので自由にお使いください。
こちらのアニメーション/エフェクトのコードはすべて完全オリジナルなのでコピペ大歓迎です。
この記事の目次
【CSSアニメーション】画像をhoverするとグラデーション背景が閉まるアニメーション
※突然ですが超オトクな『無料プレゼント』のお知らせです・・
今から3日以内に『転職実績No. 1のプログラミングスクール DMM WEBCAMP』へ無料カウンセリング申込&参加された方のみ限定でもれなく【Amazonギフト券1,000円分】をGETできるキャンペーン
完全オンラインレッスンで個別メンター付き。1月中なら期間限定で5万円のキャッシュバックも
【CSSアニメーション】画像をhoverするとグラデーション背景が閉まるアニメーション
アニメーション動作の確認
動きは下の画像のような感じになります
実際の動きはこちら
コードの確認
<div class="container">
<!-- 画像と背景・文字を複数配置 -->
<div class="bg-pic">
<div class="pic" style="background-image : url('https://cdn.pixabay.com/photo/2017/01/17/23/05/valetta-1988455_1280.jpg');">
<div class="screen-left"></div>
<div class="screen-right"></div>
<div class="fonts">
<h1>Malta's capture</h1>
<p>this is a photo in malta <br><br><br>Have A Good Time</p>
</div>
</div>
</div>
<div class="bg-pic">
<div class="pic" style="background-image : url('https://images.unsplash.com/photo-1519221739757-4df89b4d0efe?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1650&q=80');">
<div class="screen-left"></div>
<div class="screen-right"></div>
<div class="fonts">
<h1>Malta's capture</h1>
<p>this is a photo in malta <br><br><br>Have A Good Time</p>
</div>
</div>
</div>
<div class="bg-pic">
<div class="pic" style="background-image : url('https://images.unsplash.com/photo-1551607117-21fa129a211d?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1720&q=80');">
<div class="screen-left"></div>
<div class="screen-right"></div>
<div class="fonts">
<h1>Malta's capture</h1>
<p>this is a photo in malta <br><br><br>Have A Good Time</p>
</div>
</div>
</div>
</div>
/* 要素全体のサイズ・配置を指定 */
.container {
width : 100%;
margin-top: 30px;
}
.container:after{
clear : both;
display : table;
content : '';
}
.bg-pic {
width : 440px;
height : 300px;
background-color: white;
cursor : pointer;
/* 複数画像を中央に配置 */
margin: 0 auto;
}
.pic {
/* 画像が美しく見えるようにエフェクト(明るさ・コントラスト・彩度)を調整 */
filter: brightness(110%) contrast(105%) saturate(120%);
width : 440px;
height : 300px;
/* 相対的位置を指定 */
position: relative;
/* 枠に収まらない要素を隠す指定 */
overflow: hidden;
background-color: #102B46;
background-size: cover;
/* .pic全体に画像が表示されるように指定 */
}
/* ↓hover後に浮き出てくる文字と背景の設定 */
.fonts {
text-align: center;
background : linear-gradient(41deg, purple 25%, orange 50%, rgba(255, 107, 0, 0.48)) fixed;
width : 440px;
height : 300px;
padding : 10px;
top : 0;
left: 0;
color : #fff;
/* hover前のの文字の不透明度を指定 */
opacity : 0;
transition : opacity .8s;
/* hover後カーソルを外した際に文字と背景が消える時間を指定 */
}
.fonts h1 {
font-size: 28px;
margin-top: 50px;
margin-bottom : 40px;
}
.fonts p {
font-size : 14px;
font-style: italic;
text-align: center;
line-height : 20px;
}
.pic:hover .fonts {
/* hover後の文字の不透明度を指定 */
opacity : 1;
transition : opacity .2s .3s;
/* hover後に文字と背景が現れる時間を指定 */
}
.pic div {
position : absolute;
/* .pic div(hover後に現れる文字と背景)の位置を指定 */
}
.screen-right , .screen-left{
/* 文字と背景が現れるまでの繋ぎのアニメーション */
width : 50%;
height: inherit;
background : linear-gradient(41deg, purple 25%, orange 50%, rgba(255, 107, 0, 0.48)) fixed;
top : 0;
transition : all .3s;
/* hover後カーソルを外した際にアニメーションが消えるまでの時間を指定 */
}
.screen-right {
left : 100%;
}
.screen-left {
right : 100%;
}
.pic:hover .screen-right {
transition : all .3s;
/* アニメーションが現れるまでの時間を指定 */
left : 50%;
}
.pic:hover .screen-left {
transition : all .3s;
/* アニメーションが現れるまでの時間を指定 */
right : 50%;
}
ここがポイント!
- 画像を複数用意し画面中央に縦並びに配置する
- background-imageの中にscreen-right/screen-leftクラスとfontsクラスを置いて画像背景の準備OK
- 背景にlinear-gradient(41deg, purple 25%, orange 50%, rgba(255, 107, 0, 0.48)) fixedでグラデーションをつける
- hover時に画像背景のscreen-rightとscreen-leftが閉まるように互いにright/leftを50%に指定
- transitionプロパティを指定することで滑らかなアニメーションを実現
参考
そもそもWebデザインの基礎がわからない。。
そんなあなたにはこれ!
ふたご
未経験からWeb制作で月50万稼げるようになったUdemy教材3選
でもなあ、独学だと心配だしプログラミングスクールで学びたい!。かといってお金はかけたくないし。。
そんなあなたにはこれ!
ふたご
完全無料で一人前のエンジニアになれるプログラミングスクールあります