バネアニメのパラメーター生成
スタイル処理はすべてブラウザ内で完結します。データは送信されません
3 つの物理量(質量・剛性・減衰)と初速を調整すると、Framer Motion の `spring` パラメーターと、60 点にサンプリングした CSS の `linear()` イージング関数が得られます —— これは現在の CSS でバネに最も近い書き方です。 バネは「時間 + イージング曲線」では言い表せません。`cubic-bezier` は決まった速さの形しか持たない一方、バネは行き過ぎることも、行き過ぎないことも、ゆっくり這うこともあり、この 3 つの印象は大きく違います。しかもその「時間」はパラメーターの一部ですらありません(バネは物理に従って自然に止まります)。 ⚠️ 判定は減衰比 ζ = c / (2·√(m·k)) だけを見ます:ζ < 1 は不足減衰(行き過ぎます)、ζ = 1 は臨界、ζ > 1 は過減衰(行き過ぎませんが戻りが遅い)。この値は下の説明に書き出されます。 ⚠️ 数値積分は固定ステップ(1/240 秒)の半陰的オイラー法です。剛性が大きく質量が小さいと、陽的な方法は `NaN` に発散し、`NaN` が `linear()` に入ると宣言ごと無効になります(画面では「アニメが動かない」としか見えません)。そこでパラメーターを先に安全な範囲へ収め、積分中に範囲を外れたらエラーにし、`NaN` は決して出力しません。減衰 0 のバネは永遠に振動して止まらないため、これも明確にエラーにします。
機能
- 質量・剛性・減衰・初速の 4 つを調整可能
- 公式のプリセット 5 種類:gentle / wobbly / stiff / slow / molasses
- Framer Motion の transition={{ type: "spring" }} コードを生成
- バネの応答を 60 点にサンプリングし、CSS の linear() として出力
- サンプリングに使った時間(バネが自然に止まるまでの時間)も表示
- ⚠️ 減衰比 ζ・固有振動数 ω0・「行き過ぎるかどうか」の判定を表示
- ⚠️ 固定ステップの半陰的オイラー法で、範囲外のパラメーターは NaN ではなくエラー
- プレビューの四角は行き来し続けるので、行き過ぎの大きさが一目で分かります
- すべてブラウザー内で完結し、何も送信しません
使い方
- プリセットを選ぶか、質量・剛性・減衰・初速を自分で調整します
- 下の減衰比と「行き過ぎるかどうか」の判定を確認します
- Framer Motion のコード、または linear() 入りの CSS をコピーします
- プレビューで四角の跳ね方を見て、行き過ぎの大きさを確かめます
よくある質問
- 減衰比 ζ とは何で、行き過ぎるかどうかをどう判定しますか?
- `ζ = c / (2·√(m·k))` で、c は減衰、m は質量、k は剛性です。ζ < 1 は不足減衰で、バネは目標を通り過ぎてから戻ります(行き過ぎ)。ζ = 1 は臨界減衰で、ちょうど行き過ぎず、最も速く戻ります。ζ > 1 は過減衰で、行き過ぎませんが戻りが遅くなります。この 3 つの数だけで決まり、初速とは関係ありません(初速は前半の形にだけ影響します)。
- CSS で linear() を使うのはなぜですか?
- CSS のイージング関数の中で `linear()` だけが進み具合を点ごとに指定でき、「行き過ぎてから戻る」という動きを表せるからです —— `cubic-bezier` も縦軸は 0〜1 を超えられますが、バネの応答を正確に合わせるのは難しいです。バネを 60 点にサンプリングして入れるのが、現在の CSS で最もバネに近い方法です。代わりに長さが固定なので、バネが自然に止まるまでの時間を併記します。
- 減衰を 0 にするとエラーになるのはなぜですか?
- 減衰 0 のバネは永遠に止まらないからです —— 同じ振幅で振動し続け、「安定した」瞬間がなく、サンプリングできる有限の時間もありません。実際の画面でもこんなアニメーションはあってはなりません(利用者はただ震え続けるものを見せられます)。減衰を少し上げて、最終的に止まるようにしてください。
- このパラメーターは Framer Motion でどう使いますか?
- 生成された行をそのまま使います:`transition={{ type: "spring", mass: ..., stiffness: ..., damping: ..., velocity: ... }}`。Framer Motion の spring はまさにこの物理モデルで、`velocity` はアニメーション開始時の初速です(ドラッグで投げたときによくあります)。プリセット名(gentle / wobbly など)は公式の代表値で、選ぶと上の 4 つの数値は計算に使われません。
関連ツール
ベジェ曲線
スタイル2つの制御点をドラッグしてイージング曲線を作り、動きをその場で確認。cubic-bezier() と transition / animation での書き方をコピーできます。
CSS トランジション
スタイル対象プロパティ・時間・イージング・遅延を選び、マウスを乗せてプレビューし CSS をコピー。出力では transition と :hover を分けて書きます。
CSS キーフレーム アニメ
スタイルキーフレームのプリセット七種(フェード・スライド・ポップ・パルス・シェイク・回転・浮遊)。時間と曲線を調整し、動きを減らす設定にも対応。
CSS グラデーション生成
スタイル角度・色・形状を調整してリアルタイムにプレビューし、CSS をコピー。線形・放射状・円錐の三種類に対応し、中間のカラーストップも使えます。
CSS 角丸ジェネレーター
スタイル四隅の角丸を調整し、プレビューを見ながら CSS をコピー。px・rem・% に対応。% が楕円になる理由もプレビューで分かります。
グラスモーフィズム生成
スタイルぼかし・透明度・彩度・枠線を調整してグラスモーフィズムをプレビューし、CSS をコピー。-webkit- 接頭辞つきで iOS でも実際にぼけます。