CLAMP

CLAMP

VALUES

VIEWPORT

clamp(1rem, 0.8182rem + 0.9091vw, 1.5rem)
PREVIEW

あいうえお AaBbCc 123

LIVE

この行には生成した clamp() をそのまま当てています。ウィンドウ幅を変えると本当に動きます。

LEARN CLAMP

3 つの値を渡す

clamp() は 最小値 / 推奨値 / 最大値 の 3 つを受け取ります。 推奨値が最小と最大の間に収まっていればその値を使い、外に出たら近い側の端で止まります。

最小値
1rem
推奨値
0.8182rem + 0.9091vw — vw があるので幅に比例して伸びる
最大値
1.5rem
最小値で固定幅に応じて可変最大値で固定320px1200px16px24px760pxサイズビューポート幅
760px → 20px

clamp(1rem, 0.8182rem + 0.9091vw, 1.5rem)

320px で 16px、1200px で 24px になる例。図をなぞるかスライダーを動かすと、その幅で実際に採用されている引数が光ります。

vw だけでは足りない

推奨値に 0.9091vw だけを書くと、320px のときは 2.9px にしかなりません。 vw は「幅の何%」でしかないので、傾きは決められても位置を決められないからです。

そこで定数の 0.8182rem を足し、320px でちょうど 16px を通るように高さを合わせます。 一次関数 y = ax + bb にあたる部分です。 このツールは入力した 4 つの値からこの b を計算しています。

メディアクエリとの違い

メディアクエリはブレークポイントで値が飛びます。clamp() は区間の中を連続的に変わるので、途中のどの幅でも破綻しません。 中間の幅のためにブレークポイントを増やしていく必要もなくなります。

出力が rem な理由

px で固定すると、ブラウザの文字サイズ設定を大きくしても値が変わりません。 rem はルート要素のフォントサイズを基準にするので、その設定に追従します。 このツールが px で入力できても出力は rem なのはこのためです。