
UI/UX
公開 読了まで 約10分

「スクロールしたら、カードがふわっと出てくる感じで」。デザインを渡すときにそう書いて、エンジニアから「ふわっと、ってどこからどこまでですか」「それ JS のライブラリが要りますね」と返された経験はないでしょうか。
CSS のスクロール連動アニメーション(Scroll-driven Animations)は、2026年10月27日の Firefox 159 で既定で有効になり、web.dev では Baseline Newly available(主要ブラウザの最新版でそろった状態)と紹介されました。CSS だけで頼める動きが増えたぶん、デザイナーの指定が曖昧だと、そのまま曖昧な動きになります。
この記事では、スクロールの動きを、物差し(scroll/view)を決めたうえで「範囲(どこからどこまで)・対象(何が)・量(どれだけ)」の3点で指定し、動きを減らす設定とあわせて渡す方法をまとめます。
web.dev の「New to the web platform in October」(2026年10月29日)によると、Chrome・Edge 115、Safari 26、Firefox 159 で使えるようになり、Baseline Newly available になりました。
| ブラウザ | 対応したバージョン |
|---|---|
| Chrome / Edge | 115 |
| Safari | 26 |
| Firefox | 159(2026年10月27日リリース) |
ここで気をつけたいのは、Newly available は「最新版でそろった」という意味で、古いバージョンを使う人には届かないことです。そのため指定書には「動かない環境では、最初から完了の状態で表示する」と一行入れておくのが安全です。動きが付かなくても、内容はすべて読める。これを前提にしておけば、使える場面はぐっと広がります。
なお、仕様(CSS Scroll-driven Animations Module Level 1)は W3C では Working Draft(草案)の段階です。
スクロール連動の動きは、何を物差しにするかで2種類に分かれます。

指定するときは、まず「この動きはページ全体の進み具合に合わせるのか、その要素が見えている間に合わせるのか」を決めます。ここが決まると、エンジニアは書き方を迷いません。CSS では animation-timeline: scroll() や animation-timeline: view() のように指定します。
view() を使うとき、動きの始まりと終わりは animation-range で決めます。MDN の「Understanding timeline range names」の説明を、デザイナーの言葉に置き換えると次のとおりです(縦スクロールの場合)。
| 範囲の名前 | いつ 0% → 100% か |
|---|---|
| cover | 要素の上端が画面の下端に入った瞬間から、要素の下端が画面の上端から出きるまで(全体。何も指定しないときはこれ) |
| contain | 要素が画面に完全に収まっている間(画面より大きい要素なら、画面を完全に覆っている間) |
| entry | 要素の上端が画面の下端を越えてから、要素がすべて入りきるまで(画面より大きい要素は、上端が画面の上端に届くまで) |
| exit | 要素の上端が画面の上端を越えてから、要素がすべて出きるまで |
| entry-crossing | 要素が画面の下端をまたいでいる間 |
| exit-crossing | 要素が画面の上端をまたいでいる間 |
entry と entry-crossing は、要素が画面より小さいときは同じ範囲で、画面より大きい要素(背の高いセクションなど)で違いが出ます。

範囲にはパーセントも付けられます。たとえば entry 0% entry 100% は「入り始めから入りきるまで」、entry 20% cover 50% のように組み合わせることもできます。デザインの段階では、「カードの上端が画面の下から入り始めたら開始、カードが全部見えたら完了」のように、要素と画面の端の関係で書けば十分です。名前はエンジニアが当てはめられます。
動かす対象と量は、始まりと終わりの2つの状態で書きます。
対象は、位置・大きさ・回転(transform)と透明度(opacity)を基本にすると、エンジニアと話が早くなります。Chrome for Developers の解説「Animate elements on scroll with Scroll-driven animations」でも、メインスレッドから外して動かせることが利点に挙げられ、例では幅(width)ではなく transform を動かしています。幅や高さ、余白を動かすと周りのレイアウトも動くので、どうしても必要なときだけにしましょう。
時間(秒)は書かなくて構いません。スクロール連動では、動きの進み具合はスクロールの量で決まるからです。そのかわり、範囲の中での変化を一定にするか(linear)を決めておきます。ゆっくり始まる動き(ease-in など)を指定すると、時間ではなくスクロールの量に対してかかります。
OS には動きを減らす設定(iPhone の「視差効果を減らす」など)があり、CSS では prefers-reduced-motion で読み取れます。スクロール連動の動きは、この設定がオンの人には止めるのが基本です。
WCAG 2.2 の達成基準 2.3.3 Animation from Interactions(レベル AAA)は、操作で起こる動きのアニメーションを止められるようにすることを求めています(機能や情報の伝達に欠かせない動きを除く)。AAA は多くのサイトの目標(AA)より上の段階ですが、スクロールで起こる動きはまさにこの「操作で起こる動き」です。視差効果(パララックス)は、Understanding のページで多くの場合は欠かせない動きではない例として挙げられています。
デザイナーが決めておくのは、動きを減らす設定がオンのときに見せる「止まった状態」です。ふつうは完了の状態(透明度 1、位置 0)にします。開始の状態で止めてしまうと、内容が見えないままになるので注意してください。
ここまでの内容を、1つの動きにつき1行の表にまとめると、そのまま実装の材料になります。
| 項目 | 書く内容の例 |
|---|---|
| 物差し | 要素の見え具合(view) |
| 対象 | 「お知らせカード」レイヤー全体 |
| 範囲 | カードの上端が画面の下端に入ってから、カードが全部見えるまで(entry 0% → entry 100%) |
| 量 | 透明度 0 → 1、下へ 48px → 0。変化は一定(linear) |
| 動きを減らす設定がオン | 動かさず、完了の状態で表示 |
| 動かない環境 | 同じく、完了の状態で表示 |

この表を実装すると、たとえば次のような CSS になります(Chromium 153 で、スクロール位置ごとの透明度と位置を確かめました。Firefox では確かめていません)。
/* 動かすのは、対応していて、動きを減らす設定がオフのときだけ */
@supports (animation-timeline: view()) {
@media (prefers-reduced-motion: no-preference) {
.news-card {
animation: fade-up linear both;
animation-duration: 1ms; /* Firefox 向け(下の補足) */
animation-timeline: view();
animation-range: entry 0% entry 100%;
}
}
}
@keyframes fade-up {
from { opacity: 0; transform: translateY(48px); }
to { opacity: 1; transform: translateY(0); }
}
動かない環境と、動きを減らす設定がオンの環境では、アニメーションの指定がまるごと読まれないので、カードは最初から完了の状態で表示されます。指定書の最後の2行が、そのままこの書き方に対応しています。
animation-duration には補足があります。MDN は、Firefox では animation-duration の指定がないと動きが付かないため 1ms を指定するよう勧めています。一方、Chrome for Developers の解説(2023年公開)は auto を指定するよう書いています。どちらにするかは、エンジニアが対象のブラウザで確かめて決める項目として、指定書では触れなくて構いません。
Figma で動きの見本を作るなら、Figma Sites のヘルプ「Add interactions to an element」に、スクロールに合わせて大きさ・位置・透明度・回転を変える Scroll transform が載っています。Figma Sites は、同じヘルプで Config 2025 にオープンベータとして公開されたと書かれていて、使えるプランもヘルプに条件があるので、先に確かめてください。ただし見本の動きと CSS の範囲の名前は一対一ではないので、見本に加えて上の表を渡すと確実です。
動きの指定書を、デザインシステムのルールとして整えたいときは、MODS BASE にもご相談ください。
MODS BASE
MODS BASEは、長野県上伊那郡辰野町を拠点に、WEB 制作、WEB 集客の運用代行、UI/UX デザイン・プロダクト開発、ブランディング・グラフィック、AI 導入支援を手がけるデザイン・開発スタジオです。全国のお客様にオンラインで対応しています。
WEB 制作
何を伝え、どう動いてもらうか。UX の設計から考えるホームページ制作。
( Related )