はじめに
Webサイトのデザインで重要なのは、視覚的な印象を与える要素です。特に画像の見せ方を工夫することで、サイト全体の印象が大きく変わります。この記事では、CSSだけで簡単に実装できる画像アニメーションを4種類紹介します。これらのアニメーションは、どれもシンプルで視覚的に効果的な方法です。
実際に動作を試すためのコードも掲載しているので、コードをコピー&ペーストしてすぐに使ってみてください。さらに、各アニメーションに関するCodePenリンクも提供しています。
1. ラインアニメーション → フェードイン表示
特徴
枠線が順番に描かれ、その後に画像がフェードインするアニメーションです。ギャラリーやポートフォリオのページに最適な演出となります。
HTML / CSSコード
<div class="image-wrapper line-animate">
<img src="https://as1.ftcdn.net/v2/jpg/00/40/54/84/1000_F_40548431_HB2JazyfQblmMg1sRsVNX1Ta1LMbyiE6.jpg" alt="Sample Photo"><!-- 画像 -->
<span class="line top"></span>
<span class="line right"></span>
<span class="line bottom"></span>
<span class="line left"></span>
</div>
.image-wrapper {
position: relative;
width: 300px;
height: 200px;
overflow: hidden;
}
.image-wrapper img {
width: 100%;
height: 100%;
opacity: 0;
}
.line {
position: absolute;
background-color: gray;
}
/* アニメーションでフェードインさせる */
.line-animate img {
animation: showImage 0.5s ease 2s forwards;
}
@keyframes showImage {
from { opacity: 0; }
to { opacity: 1; }
}
.top, .bottom {
height: 2px;
width: 0%; /* 初期状態は幅が0% */
}
.left, .right {
width: 2px;
height: 0%; /* 初期状態は高さが0% */
}
.top {
top: 0; left: 0;
animation: drawTop 0.5s forwards;
}
.right {
top: 0; right: 0;
animation: drawRight 0.5s 0.5s forwards; /* 右のアニメーションを0.5秒遅れで開始 */
}
.bottom {
bottom: 0; right: 0;
animation: drawBottom 0.5s 1s forwards; /* 下のアニメーションを1秒遅れで開始 */
}
.left {
bottom: 0; left: 0;
animation: drawLeft 0.5s 1.5s forwards; /* 左のアニメーションを1.5秒遅れで開始 */
}
@keyframes drawTop {
to { width: 100%; } /* 上のラインが100%に広がる */
}
@keyframes drawRight {
to { height: 100%; } /* 右のラインが100%に伸びる */
}
@keyframes drawBottom {
to { width: 100%; left: auto; right: 0; } /* 下のラインが100%に広がる */
}
@keyframes drawLeft {
to { height: 100%; } /* 左のラインが100%に伸びる */
}
ポイント
サンプル
See the Pen test-1 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
2. グレー帯でマスク → 写真をフェードイン
特徴
左からグレーのバーがスライドして、その後に画像が表示されます。スライドショーやインパクトのある切り替え演出にぴったりです。
HTML / CSSコード
<div class="reveal-wrapper">
<div class="gray-bar"></div>
<img src="https://as1.ftcdn.net/v2/jpg/00/40/54/84/1000_F_40548431_HB2JazyfQblmMg1sRsVNX1Ta1LMbyiE6.jpg" alt="Photo"><!-- 画像 -->
</div>
.reveal-wrapper {
position: relative;
width: 300px;
height: 200px;
overflow: hidden;
}
.reveal-wrapper img {
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
position: relative;
z-index: 1;
animation: fadeInPhoto 1s ease forwards;
animation-delay: .8s; /* グレー帯が終わったあとに画像を表示 */
}
.gray-bar {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 0%;
background-color: gray;
z-index: 2;
animation: slideBar 1s forwards;
}
@keyframes slideBar {
to { width: 100%; opacity: 0; } /* グレー帯が100%に広がるとともに透明になる */
}
@keyframes fadeInPhoto {
from { opacity: 0; }
to { opacity: 1; } /* 画像をフェードイン */
}
ポイント
このアニメーションでは、最初にグレーの帯が左から右にスライドし、その後に画像がフェードインします。グレー帯がスライドして表示された後に、画像が見えるようになります。
サンプル
See the Pen test-2 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
3. ブラーしながら表示されるアニメーション
特徴
画像がぼやけた状態から、徐々に鮮明になっていくアニメーションです。やわらかく印象的な表現が可能です。
HTML / CSSコード
<div class="blur-reveal">
<img src="https://as1.ftcdn.net/v2/jpg/00/40/54/84/1000_F_40548431_HB2JazyfQblmMg1sRsVNX1Ta1LMbyiE6.jpg" alt="Photo">
</div>
.blur-reveal {
width: 300px;
height: 200px;
overflow: hidden;
}
.blur-reveal img {
width: 100%;
height: 100%;
object-fit: cover;
filter: blur(10px); /* 初期状態で画像がぼやけている */
opacity: 0;
animation: blurFadeIn 1.5s ease forwards;
}
@keyframes blurFadeIn {
0% {
filter: blur(10px);
opacity: 0;
}
100% {
filter: blur(0px); /* 徐々に鮮明に */
opacity: 1; /* 画像を完全に表示 */
}
}
ポイント
画像が最初にぼやけて表示され、時間の経過とともに鮮明になっていくアニメーションです。filter: blur()
とopacity
を使用して、ぼやけ具合と透明度を調整し、滑らかな変化を実現します。
CodePen
See the Pen test-3 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
4. 拡大&フェードイン → シャドウで立体感
特徴
最初に画像が少し拡大し、その後にドロップシャドウが表示される一連のアニメーションです。商品紹介などに最適な演出です。
HTML / CSSコード
<div class="reveal-box">
<img src="https://as1.ftcdn.net/v2/jpg/00/40/54/84/1000_F_40548431_HB2JazyfQblmMg1sRsVNX1Ta1LMbyiE6.jpg" alt="画像">
</div>
.reveal-box {
width: 300px;
height: 200px;
overflow: visible; /* ここを変更 */
animation: shadowFadeIn 0.5s ease forwards;
animation-delay: 1.5s; /* 画像のアニメ後に影を出す */
}
.reveal-box img {
width: 100%;
height: 100%;
object-fit: cover;
opacity: 0;
transform: scale(1.2); /* 初期状態で拡大 */
filter: blur(2px); /* 初期状態でぼやけている */
transition: all 1.5s ease;
animation: zoomFadeIn 1.5s ease forwards;
}
@keyframes zoomFadeIn {
0% {
opacity: 0;
transform: scale(1.2);
filter: blur(2px);
}
100% {
opacity: 1;
transform: scale(1); /* 最終的に元のサイズに戻る */
filter: blur(0); /* ぼやけを解除 */
}
}
@keyframes shadowFadeIn {
from {
box-shadow: none;
}
to {
box-shadow: 0 10px 20px rgba
ポイント
CodePen
See the Pen test4 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
まとめ
CSSアニメーションを使うだけで、写真や画像の魅せ方が大きく変わります。今回は、シンプルで効果的な画像アニメーション4種類を紹介しました。これらのアニメーションを取り入れることで、サイトのビジュアルがより印象的に仕上がるでしょう。
ぜひ、これらのアニメーションを自分のWebサイトに取り入れて、表現の幅を広げてみてください!