Webサイトでよく見かける、スクロールに合わせて「ふわっ」と表示されるアニメーション。あの動きが入るだけで、サイトが少しおしゃれに見えたりコンテンツが読みやすく感じたりしますよね。
ただ、
と感じる方も多いと思います。
でも実は、CSS と IntersectionObserver を組み合わせれば、比較的シンプルなコードだけで自然なスクロールアニメーションを実装できます。
この記事では、
を、初心者の方でも流れが追いやすいように、できるだけやさしく整理しました。
実際に当サイトのトップページでも使っている方法なので、
- サイトに自然な動きを入れたい
- 少しだけデザイン性を上げたい
- プラグインを増やしたくない
という方にもおすすめです。
まずは「どういう仕組みで動いているのか」をざっくり理解してみてください。後半では実際にそのまま使えるテンプレートコードをまとめています。
IntersectionObserverでスクロールアニメーションを作る仕組み

IntersectionObserverとは?
IntersectionObserver は、「要素が画面に入ったタイミングを検知してくれる機能」です。
たとえば、
- 画像が見えたらふわっと表示する
- 見出しが表示されたらスライド表示する
- 画面に入ったタイミングでアニメーション開始する
といった処理を作れます。
今回のスクロールアニメーションでは、「要素が見えたら active クラスを付ける」という役割を担当しています。
流れとしてはかなりシンプルで、
- 要素が画面に入る
- active クラスを追加
- CSSアニメーションが動く
だけです。
IntersectionObserverを使うメリット
scrollイベントでも似たことはできますが、スクロールのたびに何度も処理が走るため要素数が増えると重くなりやすいです。
その点、IntersectionObserverは「要素が画面に入った瞬間」だけを検知できるので必要なタイミングだけ処理できます。
特に、
- フェードイン
- スライド表示
- 画像の遅延表示(lazy load)
などとは相性が良いです。

実際に使ってみると、スクロール時のカクつきが減ったと感じます!
※今後Scroll-Timeline(CSSでスクロール連動アニメーション)が主流になる可能性がありますが、現時点では対応ブラウザが限られるためIntersectionObserverが使いやすいと思います。
サンプルコード(簡易版)
まずは「どんな流れで動いているか」だけ軽く見てみましょう。コードの意味はあとで解説します。
HTML(イメージ)
<div class="fade-in">フェードインする要素</div>
CSS(フェードの例)
.fade-in {
opacity: 0; /* 初期は非表示 */
transition: opacity 1s ease-in-out;
}
.fade-in.active {
opacity: 1; /* activeが付くとフェードイン */
}
仕組みのコード例(擬似版)
document.addEventListener("DOMContentLoaded", () => {
const targets = document.querySelectorAll(".fade-in");
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
// 実装ではここに処理を記述します
}
});
});
targets.forEach(target => observer.observe(target));
});
今回のポイントは、
という役割分担です。
そのため、JavaScriptが難しく感じる方でも比較的理解しやすく、あとからアニメーションだけ変更するのも簡単です。
スクロールアニメーションでよく使う動きサンプル|fade-inなどデモページでチェック
スクロールアニメーションは表示の仕方によっていくつかの種類があります。ここでは代表的なアニメーションを一部紹介します。
- サンプル用にボタンクリックで再生
- 実際のページではスクロールに合わせてアニメーション発火
ここで使っているアニメーションの仕組みと記述方法はこちらの記事で解説しています。
左からスライドイン
- 特徴:右からスライドインの逆、左側から表示
- 用途:左寄せレイアウトのコンテンツを自然に出現させたいとき
See the Pen スクロールアニメーション|左からスライドイン(slide-left) by Turicco (@Turicco) on CodePen.
拡大して表示(ズームイン)
- 特徴:小さい状態から徐々に拡大しながら表示
- 用途:見出しやアイキャッチ画像など目立たせたい要素に効果的
See the Pen スクロールアニメーション|拡大して表示(scale-up) by Turicco (@Turicco) on CodePen.
他の動きはデモページで確認できます
実際のサイトで使うイメージに近い形で動きを確認できるので、「どんな雰囲気になるか」をイメージしやすいと思います。
スクロールアニメーションの実装方法|IntersectionObserverでふわっと表示

スクロールアニメーションは、次の3ステップで動きます。
- HTMLにクラスを付ける
- CSSで動きを作る
- JavaScriptで「画面に入ったら動かす」設定をする
この3つを組み合わせるだけです。
編集方法については以下の記事にまとめています。Cocoonでの設定例を中心に紹介していますが、WordPressテーマなら基本的な仕組みはほぼ同じです。
HTMLにアニメーション用クラスを付ける
まずは、動かしたい要素にクラスを追加します。
<div class="scroll-fade-in">フェードイン</div>
<div class="scroll-fade-up">下から表示</div>
<div class="scroll-slide-right">右から表示</div>
<div class="scroll-slide-left">左から表示</div>
<div class="scroll-scale-up">拡大表示</div>
クラス名を変えるだけで、アニメーションの種類を切り替えられます。
たとえば、
- 下からふわっと表示 →
scroll-fade-up - 拡大しながら表示 →
scroll-scale-up
のように使います。
WordPressで設定する方法(簡単)
HTMLを書かなくても使えます。
ブロックエディタの「追加CSSクラス」に、クラス名を入力するだけです。
- 動かしたいブロックを選択
- 右側の「ブロック」設定を開く
- 「高度な設定」→「追加CSSクラス」に入力
- 例:
scroll-fade-up
- 例:
これで、スクロール時にアニメーションが動きます。
詳しい方法は → 追加CSSクラスの使い方
ブロックエディタで特定のブロックにだけデザインを当てる方法です。
CSSで動きを作る
次に、CSSでアニメーションを設定します。
最初は非表示にしておき、active クラスが付いたら表示する仕組みです。
を使うことで、なめらかに変化します。transition
ここまでで、スクロールアニメーションの基本的な仕組みを紹介しました。
ただ、実際にやってみると、
- 動くけどタイミングが不自然
- 表示タイミングの調整が難しい
- コードを少し変えたら動かなくなった
というところで止まりやすい部分でもあります。
特にoptions設定(「いつ」アニメーションを動かすか)は少し数値を変えるだけでも見え方が大きく変わります。
そこで有料パートでは、実際にそのまま使いやすい形に整理したコードをまとめています。
内容としては、
- 5種類のスクロールアニメーションCSS
- IntersectionObserver の実用コード
- 表示タイミング調整方法
- 一度だけ再生 / 繰り返し再生の切り替え
- WordPressでそのまま使いやすい構成
などを、コピペしやすい形で掲載しています。

「まずは動かしてみたい」という方は、テンプレートとして持っておくとラクになると思います。

以下は有料コンテンツのご案内および特定商取引法に基づく表記です。
■ サイト名
Turicco
■ サイトURL
https://turicco.com/
■ 運営者情報
運営責任者:はるみ
お問い合わせ先:https://turicco.com/contact/
■ 購入方法
コンテンツ販売サービス「codoc(コードク)」を利用しています。
詳しくは codoc購入者向けFAQ をご覧ください。
■ 納品方法
購入完了後、対象の記事が閲覧可能になります。
■ お支払い方法
・クレジットカード ・デビットカード ・プリペイド型クレジットカード ・Apple Pay ・Google Pay ・コンビニ決済
※決済はStripeを利用(SSL暗号化)。運営者はカード情報を保持しません。
■ 返金・キャンセルについて
codoc株式会社の利用規約第10条(返金)に基づき、原則としてご購入後のキャンセル・返金はできません。あらかじめご了承ください。
■ 販売価格
980円(税込)





Comment 記事の感想を書き込んでいただけると幸いです