使い方
- プロパティを選び、最小のサイズと最大のサイズを入力してから、サイズの単位を選びます。
- サイズが最小になるビューポートの幅とサイズが最大になるビューポートの幅に2つの幅を入力し、その単位を選びます。
- どこかでremを使った場合は、ルートのフォントサイズ(px)を確認します。サイトが別の大きさを設定していなければ、ブラウザは16pxを使います。
- CSSの宣言をコピーするか、計算の手順とよく使われる幅でのサイズを見て、各幅での結果を確かめます。
clamp()で、サイズを流動的にする仕組み
clamp(MIN, VAL, MAX)は、最小値、望ましい値、最大値の3つを受け取ります。CSS値と単位の仕様(英語)は、これがmax(MIN, min(VAL, MAX))とまったく同じ値を表すとしています。そのため、サイズはMINを下回らず、MAXを上回りません。その間では、VALに従います。ここでのVALは、ビューポートの幅に応じて変わる直線です。
この直線は、最小のビューポート幅での最小のサイズから、最大のビューポート幅での最大のサイズまで伸びます。その2つの幅の外では、サイズは変わりません。
slope = (largest size - smallest size) / (largest viewport - smallest viewport); intercept = smallest size - slope x smallest viewport; preferred value = intercept + slope x 100vw
傾き、切片、vwの項
傾きは、ビューポートの幅が1ピクセル増えるごとに、サイズがどれだけ増えるかを示します。切片は、同じ直線がビューポートの幅ゼロで達する位置です。vw単位はビューポート幅の1%なので、傾きに100を掛けた値が、ウィンドウに従う項になります。
傾きを求める前に、2つのビューポート幅と2つのサイズはピクセルに換算されます。remの値はルートのフォントサイズを掛けて換算されるので、ルートが16pxのとき、同じデザインはremでもpxでも同じ結果になります。
- 最大のサイズは、最小のサイズ以上にしてください。このツールは小さい最大のサイズを拒否します。画面が広がると直線が縮んでしまうからです。
- vwの項は、訪問者の文字サイズの設定に従いませんが、remの切片は従います。200%の拡大で確かめ、可能な限り切片はremで書いてください。
計算例:16pxから24pxまでのフォント
320pxのビューポートと1200pxのビューポートの間で、フォントは16pxから24pxまで大きくなります。傾きは (24 − 16) ÷ (1200 − 320) = 8 ÷ 880で、小数第4位までで0.0091です。切片は16 − 0.0091 × 320 = 13.0909px、ビューポートの項は0.9091vwです。
値は clamp(16px, 13.0909px + 0.9091vw, 24px) なので、CSSの宣言は font-size: clamp(16px, 13.0909px + 0.9091vw, 24px); です。remの単位では、20remから75remの間で1remから1.5remになり、ルートが16pxなら clamp(1rem, 0.8182rem + 0.9091vw, 1.5rem) になります。
よくある質問
ビューポートが最小の幅より狭いとき、サイズはどうなりますか?
サイズは最小のサイズのままです。clamp()の式は値を最小値より下に下げないので、文字は最も狭い幅で設定したサイズを保ちます。
ビューポートの部分がvwで書かれるのはなぜですか?
vw単位はビューポート幅の1%なので、ブラウザのウィンドウの大きさに応じて変わります。ピクセルやremの値はウィンドウに合わせて変わらないので、サイズはそれに従えません。
コードでvwの部分が先に書かれることがあるのはなぜですか?
切片が負のとき、コードはvwの部分を先に書き、切片を引く形にすると読みやすくなります。どちらの形も同じ値になります。
この値を余白やマージン、ギャップに使えますか?
はい。プロパティでパディング、マージン、ギャップを選んでください。同じ直線はどの長さにも使えるので、余白もフォントサイズと同じようにビューポートに応じて広がります。
どのブラウザがclamp()に対応していますか?
現在の主要なブラウザはすべてclamp()に対応しています。古いバージョンの利用者がいる場合は、流動的なサイズに頼る前に、そのバージョンでページを確かめてください。
入力した内容は保存されたり、サーバーに送られたりしますか?
いいえ。値はブラウザの中で計算され、入力した内容は当社のサーバーに保存も送信もされません。ページを離れる前に宣言をコピーしてください。
出典
- W3C(英語):CSS Values and Units Level 4, clamp()
- W3C(英語):CSS Values and Units Level 4, viewport-relative lengths
- MDN(英語):clamp()
数値と文章の最終確認日:2026年11月10日火曜日。