【スクロールくどうアニメーション】

スクロール駆動アニメーション とは?

💡 スクロールがアニメーションの指揮者になる、CSSだけで実現するリッチ演出
📌 このページのポイント
スクロール駆動アニメーション scroll() タイムライン 40% ページ全体のスクロール量 = アニメーション進行率 用途: プログレスバー パララックス効果 view() タイムライン ビューポート 要素 要素の表示範囲 0%〜100% 用途: フェードイン スライドイン効果 JSのスクロールイベント不要 → コンポジタースレッドで60fps描画
スクロール駆動アニメーションのイメージ
ひよこ ひよこ

スクロールでアニメーションするサイトってよくあるけど、今まではどうやって作ってたの?

ペンギン先生 ペンギン先生

JavaScriptでscrollイベントやIntersection Observerを使って、スクロール量を監視してアニメーションを制御していたんだ。でもJavaScriptの処理はメインスレッドで動くから、スクロールがカクつくこともあったんだよ

ひよこ ひよこ

CSSだけでできるようになったってこと?

ペンギン先生 ペンギン先生

そうだよ。animation-timelineプロパティにscroll()やview()を指定するだけで、スクロール位置に連動したアニメーションが作れるんだ。ブラウザのコンポジタースレッドで処理されるから、60fpsのなめらかな動きが実現できるよ

ひよこ ひよこ

scroll()とview()って何が違うの?

ペンギン先生 ペンギン先生

scroll()はスクロールコンテナ全体の位置に連動するタイムラインで、プログレスバーのような用途に向いているよ。view()は特定の要素がビューポートに入ってから出るまでの間を0%〜100%として使えるんだ。要素のフェードインなどに便利だね

ひよこ ひよこ

@keyframesはそのまま使えるの?

ペンギン先生 ペンギン先生

まさにそこがポイントで、既存の@keyframesをそのまま流用できるんだ。animation-timelineを追加するだけで、時間ベースだったアニメーションがスクロールベースに切り替わる。既存のアニメーション資産を活かせるのが嬉しいところだね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
スクロール駆動アニメーション」って出てきたら「スクロールに連動してCSSアニメーションが動く仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Scroll-driven Animations」 = スクロール駆動のアニメーション
💬 driven は「駆動される」という意味。スクロールという操作がアニメーションを「駆動」する、つまり動かすエンジンになるということだよ
← 用語集にもどる