CSSツール

無料 CSS progress()関数カリキュレーター

スクロール駆動アニメーションと値マッピングのためのCSS progress()関数の値を計算します。

ツールを読み込み中...

CSS progress()関数カリキュレーターとは

CSSのprogress()関数(Chrome 138+)は、入力値をある数値範囲から0〜1の進行値に変換する数学的なマッピング関数です。たとえば、progress(scroll-position from 0 to 500)は、スクロール位置が0のときに0、500に達したときに1、250のときに0.5を返します。この進行値は任意の数値CSSプロパティを制御でき、スクロール連動エフェクト、ビューポート相対サイズ調整、カスタムプロパティの補間における複雑なcalc()チェーンを不要にします。

クイックアンサー

CSSのprogress(input from min to max)を使用して、任意の数値を0〜1の進行範囲にマッピングします。スクロール位置、ビューポート寸法、カスタムプロパティに基づいて、opacity、scale、transform、color-mixのパーセンテージ、または数値を受け入れる任意のCSSプロパティを制御できます。Chrome 138+。出力を制限するにはclamp(0, ..., 1)でラップします。

Last updated: 2026-05-30

制限事項

  • progress()はChrome 138+が必要です。Firefox、Safari、および古いバージョンのChromeはサポートしていません。クロスブラウザ対応のフォールバックとして、スクロール駆動アニメーションのキーフレームまたはJavaScriptベースのスクロールリスナーを使用してください。
  • この関数は数値CSSプロパティでのみ機能します。カラーストップ、グラデーション角度、シェイプ関数を直接制御することはできません。色の遷移には、progress()とcolor-mix()を組み合わせ、進行値を混合パーセンテージとして使用してください。
  • progress()のscroll-positionはデフォルトでドキュメントのスクロール位置を測定し、要素のスクロールコンテナは測定しません。特定のスクロールコンテナにはself-scroll-positionを使用しますが、コンテナがスクロール可能で定義されたスクロール範囲を持っていることを確認してください。

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

使い方

  1. 入力ソースとその範囲を指定します。scroll-position、viewport width/height、viewport inline/block size、または最小値と最大値を持つカスタムCSSプロパティから選択できます。
  2. 制御したいターゲットCSSプロパティと、progress 0およびprogress 1における値を設定します。たとえばopacity 0から1、またはscale 0.5から1.5などです。
  3. 必要に応じてclamp()ラッピングを有効にし、入力が定義範囲を超えた場合でも結果を出力範囲内に制限します。
  4. 生成されたCSSをコピーしてスタイルシートに追加します。出力にはprogress()ルールと完全なプロパティ宣言の両方が含まれます。

主な用途

  • ユーザーがページを0から200ピクセルスクロールするのに合わせて、スティッキーヘッダーの不透明度を完全透明から不透明に変化させます。
  • ビューポート幅が320pxから1920pxに拡大するのに合わせてヒーロー画像を1から1.2に拡大し、ワイド画面で微妙なズーム効果を生み出します。
  • ユーザーがセクションをどの程度スクロールしたかに基づいて、color-mix()の混合パーセンテージを制御し、ある色から別の色に遷移させます。

用途

使用例

progress()によるスクロールフェードイン

ヒーローセクションを、ユーザーが最初の300ピクセルをスクロールするにつれてフェードインさせます。progress(scroll-position from 0 to 300)をopacityにマッピングします。ページ上部では要素は完全に透明(progress=0)、300pxのスクロール後は完全に不透明(progress=1)になります。IntersectionObserverやスクロールイベントリスナーは不要です。

ビューポートに応じたカードのレスポンシブ拡大

カードグリッドで、ビューポート幅320pxのとき各カードを0.9、1440pxのとき1.1に拡大縮小します。入力としてprogress(100vw from 320 to 1440)を、ターゲットプロパティとしてscaleを使用します。ビューポートが広がるにつれてカードが微妙に拡大し、メディアクエリなしでレスポンシブなグリッドを実現します。

よくあるミス

  • progress()が生の0〜1の値を返すことを理解せずに使用する。ほとんどのプロパティは進行値を目的の出力範囲に変換するために追加のcalc()やスケーリングを必要としますが、このツールがそのマッピングを自動処理します。
  • scroll-positionがデフォルトでドキュメントのスクロール位置を基準にすることを忘れる。要素のスクロールコンテナの場合は、代わりにprogress(self-scroll-position from 0 to N)を使用してください。
  • progress()がすべてのCSSプロパティで機能すると思い込む。数値またはパーセンテージを受け入れるプロパティでは機能しますが、rgb()などの色関数では直接機能しません(代わりにcolor-mix()を使用してください)。

検証

  1. DevToolsで要素を検査し、ターゲットプロパティの計算値が既知の入力位置で期待値と一致することを確認します(たとえば、正確に200pxスクロールして、0〜400の範囲でopacityが0.5になることを確認)。
  2. エッジケースをテストします。最小および最大の入力範囲境界でのプロパティ値を確認し、ラッピングが有効な場合は範囲を超えた入力値でclamp()の動作をテストします。

FAQ

CSS progress()関数カリキュレーターのFAQ

progress()はview-timelineを使用したスクロール駆動アニメーションのタイムラインとどう違いますか?

progress()は純粋な数学関数で、ある数値範囲を0〜1にマッピングします。アニメーションタイムライン、キーフレーム、animation-rangeとは関係ありません。progress()は、scroll-timelineを作成せずに任意のCSSプロパティで宣言的な値マッピングを行うために使用します。複数のステップ、イージング、方向制御を伴う本格的なキーフレームベースのスクロール駆動アニメーションが必要な場合は、view-timelineとanimation-rangeを使用してください。

入力値が定義範囲外の場合、どうなりますか?

入力がfrom-to範囲外の場合、progress()は0〜1以外の値を返します。たとえば、progress(x from 0 to 100)はx=150のとき1.5を返します。出力を制限するには、結果をclamp(0, ..., 1)でラップします。このツールには、これを自動処理するオプションのclamp()ラッピングトグルが含まれています。

progress()はカスタムプロパティを入力として参照できますか?

はい。任意のCSSカスタムプロパティを入力値として使用できます。たとえば、progress(--scroll-offset from 0 to 500)のようにします。これは、JavaScriptで設定したカスタムプロパティに基づいて値を制御したり、中間カスタムプロパティを介して複数のprogress()計算を連鎖させたりする場合に便利です。

関連ツール

その他のcssツール

こちらもお試しください

こちらもお試しください