scroll-timeline は CSS Scroll-driven Animations 仕様(Chrome 115以降で実装)が提供する革新的なプロパティです。従来 JavaScript の scroll イベントや Intersection Observer で実装していた「スクロール連動アニメーション」を、純粋な CSS だけで実現できます。
【仕組みの核心】
CSSのanimationは通常「時間」で進みますが、Scroll-driven Animationsでは「スクロール位置」がアニメーションの進行を制御します。ページを下にスクロールするにつれてアニメーションが進み、上にスクロールすると逆再生されます。
【2種類のタイムライン】
① scroll-timeline(スクロールタイムライン)
スクロールコンテナの「全体のどこにいるか」が軸になります。
ページのプログレスバー(上部に表示するスクロール進行インジケーター)が最もシンプルな例です。
② view-timeline(ビュータイムライン)
「対象要素がビューポートに対してどのくらい見えているか」が軸になります。
要素がビューポートに入ってきたときにフェードインするアニメーションなど、intersection-observer-like な演出に使います。
Chromeのみの対応状況を考慮し、@supports でのフォールバック実装が実務では必須です。