CSSアニメーションでフェードインを実装する方法と応用テクニック

Webサイトを訪れたときに、要素がふわっと表示されるような演出を見たことはありませんか?それは「フェードイン」と呼ばれるアニメーション効果の一つです。派手すぎず、ユーザーに自然な印象を与えるこの効果は、CSSアニメーションを使えば簡単に実装できます。この記事では、CSSだけでできる基本的なフェードインの書き方から、スクロール連動や遅延付きなどの応用方法まで、初心者にもわかりやすく解説します。


フェードインとは?どんなときに使う?

フェードイン(Fade In)は、透明な状態から徐々に要素が表示されるように見せるアニメーション効果です。
以下のようなシーンでよく利用されます。

  • ページ読み込み時に画像や見出しを表示する
  • スクロールしてきたときに要素を目立たせる
  • モーダルウィンドウやポップアップを自然に表示させる

視覚的に自然で、ユーザーの注意を引きやすいため、Webデザインでは定番の演出方法です。


CSSでフェードインを実装する基本構文

CSSだけでフェードインを行うためには、@keyframesを使ってアニメーションを定義し、opacityプロパティで透明度を変化させます。

例:基本的なフェードインの書き方

<div class="fade-in">こんにちは!</div>
.fade-in {
opacity: 0;
animation: fadeIn 2s ease-in-out forwards;
}

@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
  • opacity: 0; で初期状態を透明にします。
  • animation プロパティでアニメーション名と時間、動きの種類(イージング)を指定。
  • forwards をつけることでアニメーション終了後もその状態(表示された状態)を維持できます。

アニメーションに遅延を加える方法

フェードインを少し遅らせて表示したい場合は、animation-delay プロパティを使います。

.fade-in {
opacity: 0;
animation: fadeIn 2s ease-in-out forwards;
animation-delay: 1s;
}

例えば、ページ内の複数の要素を順番に表示させたいときに便利です。


スクロール時にフェードインさせる方法(JavaScript併用)

CSSだけではスクロール連動のフェードインは実現できないため、JavaScriptと組み合わせて使います。

HTMLとCSS

<div class="scroll-fade-in">スクロールで表示されます!</div>
cssコピーする編集する.scroll-fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: all 1s ease-out;
}

.scroll-fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

JavaScript

const elements = document.querySelectorAll('.scroll-fade-in');

const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
}
});
});

elements.forEach(el => observer.observe(el));

これにより、要素が画面に入ったタイミングでvisibleクラスが追加され、CSSのトランジションでフェードイン効果が実行されます。


応用:複数要素に順番にフェードインを適用する

リスト項目やギャラリーの画像を、1つずつ順番にフェードインさせるには、アニメーションの遅延を個別に設定します。

<ul>
<li class="fade-in delay-1">Item 1</li>
<li class="fade-in delay-2">Item 2</li>
<li class="fade-in delay-3">Item 3</li>
</ul>
.fade-in {
opacity: 0;
animation: fadeIn 1s ease forwards;
}

.delay-1 {
animation-delay: 0.3s;
}
.delay-2 {
animation-delay: 0.6s;
}
.delay-3 {
animation-delay: 0.9s;
}

これにより、視覚的に心地よい連続表示が可能になります。


CSSライブラリを使って簡単にフェードインを導入する

自分でアニメーションを書くのが面倒な方には、CSSアニメーションライブラリの使用もおすすめです。代表的なものに「Animate.css」があります。

Animate.cssを使った例

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"/>

<div class="animate__animated animate__fadeIn">アニメーション付き!</div>
  • animate__animated でアニメーションを有効化
  • animate__fadeIn でフェードイン効果

数行の記述でさまざまなアニメーションを実現でき、時間指定や遅延もクラスで簡単に行えます。


よくあるトラブルと対処法

フェードインが機能しない

  • opacity: 0;animation の設定がCSSで正しく適用されているか確認。
  • JavaScriptでクラスを追加する場合、対象要素が正しく選択されているかチェック。
  • アニメーションのforwardsを忘れてしまうと、終了後に元に戻ってしまいます。

実際の制作現場での活用例

  • コーポレートサイト:ヒーロー画像やキャッチコピーの表示
  • ポートフォリオサイト:作品紹介の画像やテキストの演出
  • ランディングページ:CTAボタンを目立たせる演出

自然な演出で離脱を防ぎ、サイトの滞在時間を増やすために、フェードインは非常に効果的です。


まとめ:フェードインは「見せ方」の第一歩

CSSで作るフェードインは、簡単なのに視覚的なインパクトを与える優れたアニメーション手法です。基本の書き方をマスターすれば、さまざまな応用にもつなげられます。Webデザインの魅力を高めるために、まずはフェードインから始めてみましょう。

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