写真を印象的に見せる!CSSだけでできる4つの画像アニメーション演出

CSS、JavaScript

はじめに

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%に伸びる */
}
  • animation-delay を調整することで、ラインが描かれるテンポを早くしたり遅くしたりできます。
  • ラインの色 (background-color) を白やアクセントカラーに変更すれば、サイトのテーマに合わせた演出が可能です。
  • line 要素を太くすると、モダンで力強い印象になります。

ポイント

  • アニメーション順に4辺を描くことで期待感を演出
  • 最後に画像を表示することで印象が強まります

サンプル

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; } /* 画像をフェードイン */
}
  • .gray-bar の色を変更すれば、ブランドカラーに応じたスライド演出が可能。
  • width: 100%height: 100% に変更して、縦方向にスライドさせる演出にもアレンジできます。
  • 複数の.gray-barを重ねてレイヤー風にすると、より複雑な演出もできます。

ポイント

  • .gray-bar にアニメーションを加えて動きを出す
  • アニメーション完了後に画像をフェードイン

このアニメーションでは、最初にグレーの帯が左から右にスライドし、その後に画像がフェードインします。グレー帯がスライドして表示された後に、画像が見えるようになります。

サンプル

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(●px) の値を大きくすれば、さらに幻想的な表現に。
  • animation-duration を長くすると、よりゆったりとした印象になります。
  • 背景画像と組み合わせて、前景の写真だけが浮かび上がるような演出にも応用可能。

ポイント

  • filter: blur()opacity を組み合わせて演出
  • ブラー具合はお好みで調整可能です

画像が最初にぼやけて表示され、時間の経過とともに鮮明になっていくアニメーションです。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
  • scale(1.2)scale(1.05) にすれば、控えめで品のある拡大に変更可能。
  • box-shadow を複数組み合わせると、よりリアルな影に調整できます。
  • transitionease-in-out にすることで、さらに自然な動きに。

ポイント

  • 拡大 → フェードイン → シャドウという流れを時間差で表現
  • 高級感や重厚感を演出できます

CodePen

See the Pen test4 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.


まとめ

CSSアニメーションを使うだけで、写真や画像の魅せ方が大きく変わります。今回は、シンプルで効果的な画像アニメーション4種類を紹介しました。これらのアニメーションを取り入れることで、サイトのビジュアルがより印象的に仕上がるでしょう。

ぜひ、これらのアニメーションを自分のWebサイトに取り入れて、表現の幅を広げてみてください!

タイトルとURLをコピーしました