
スタッフブログ
CSSでスクロール同期アニメーションを実現する
こんにちは。田村です。
CSSアニメーションの機能でスクロール位置とCSSアニメーションを同期させることが可能になるのをご存知でしょうか。
view-timeline と animation-timelineのプロパティを使うと、スクロール位置とCSSアニメーションを同期させることが可能になります。
今回は、view-timeline と animation-timeline の基本的な使い方を解説します!
※2025年1月時点では、Google Chrome、Edgeは対応していますが、Firefox、Safariは対応していません。
view-timeline と animation-timeline とは?
view-timelineとは?
view-timeline は、スクロール領域(ビューポート)に基づいたタイムラインを定義するためのプロパティです。
これにより、特定の要素がビューポート内にどの程度見えているかを計算し、その進捗をタイムラインとして利用できます。
animation-timelineとは?
animation-timeline は、アニメーションの進行をタイムラインに同期させるためのプロパティです。
通常のアニメーションは時間(animation-duration)で進みますが、animation-timeline を使うとスクロール量やタイムラインの進行によってアニメーションをコントロールできます。
どんな場面で使えるのか?
スクロール連動アニメーション
スクロールに合わせて要素がフェードイン・スライドインする
パララックス効果
進捗バーのアニメーション
ページのスクロール量に応じてプログレスバーを伸ばす
基本的な使い方
view-timeline を定義
要素にスクロール軸に沿ったタイムラインを指定します。
.scroll-container {
view-timeline-name: scroll-timeline; /* タイムライン名 */
view-timeline-axis: block; /* 縦方向のスクロールを使用 */
}
アニメーションに animation-timeline を設定
アニメーションをタイムラインに同期させます。
.animated-element {
animation: fade-in 1s linear both; /* アニメーション基本設定 */
animation-timeline: scroll-timeline; /* タイムラインと同期 */
animation-range: contain 0% contain 100%; /* タイムラインの範囲 */
}
animation-rangeの動きは理解するのが難しいですので、View Timeline Ranges Visualizerツールを使うと視覚的に理解しやすいです。
確認してみてください。
注意点とブラウザ対応状況
2025年1月時点では、
Google Chrome、Edgeは対応していますが、Firefox、Safariは対応していません。
実際に使用する場合は、ブラウザの要件など確認して使用してください。
関連するタグ
この記事を書いた人

たむら しょうご
HTML&CSSコーダー
ウェブアクセシビリティ対応、フロントエンド開発、CMSを利用したウェブサイト制作を担当しています。
趣味はガーデニングです。
ましじめのスキルが必要ですか?
遠慮なくご相談ください。我々はあなたのプロジェクトに最善を尽くし、
あなたのウェブサイトの制作を強力にサポートいたします。