本文へスキップ
FluidClamp
言語: 日本語

フルードタイポグラフィのための CSS clamp() 計算ツール

最小サイズと最大サイズ、その間のビューポート範囲を入力するだけ。そのまま貼り付けられる clamp() の値、ライブプレビュー、主要なブレークポイントごとの表示サイズが得られます。

入力単位
出力単位

よく使うプリセット

clamp() の値

clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem)

傾き: 0.8333vw · 切片: 0.8333rem

CSS
clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem)
CSS カスタムプロパティ
--fluid-size: clamp(1rem, 0.8333rem + 0.8333vw, 1.5rem);
Tailwind クラス
text-[clamp(1rem,0.8333rem_+_0.8333vw,1.5rem)]

最大値は最小値の 1.5 倍で、WCAG 1.4.4「テキストのサイズ変更」の目安である 2.5 倍以内です。

ビューポート別の表示サイズ
ビューポートサイズ (px)サイズ (rem)
320px161
375px16.461.0286
768px19.731.2333
1024px21.871.3667
1280px241.5
1440px241.5
1920px241.5

設定は URL に保存されるので、この結果をそのままブックマークしたり共有したりできます。

ライブプレビュー

ビューポート 1024px で 21.87px

フルードな文字は画面に合わせてなめらかに変化します。

clamp() 計算ツールのしくみ

指定するのは 2 つの点です。いちばん狭い画面でのサイズと、いちばん広い画面でのサイズ。ツールはその 2 点を直線で結び、最小値・推奨値・最大値の 3 つからなる 1 つの CSS clamp() 式に変換します。最小ビューポートより狭いと最小値のまま、最大ビューポートより広いと最大値のまま、その間ではメディアクエリなしでなめらかに変化します。

傾きは、ビューポート幅が 1px 増えるごとに値が何 px 増えるかを表し、vw 単位で書きます(1vw はビューポート幅の 1%)。切片は、その直線が幅 0 の画面でとる値です。この 2 つで中央の引数、たとえば 0.8333rem + 0.8333vw ができあがります。

出力に rem を使う理由

推奨値に rem の成分を含めると、フルードな文字が、読み手がブラウザで設定したフォントサイズに追従し続けます。vw だけで作ったサイズはこの設定を無視し、ズームの効果も弱めてしまいます。そのため既定の出力は rem です。デザイントークンを px で管理している場合は px も選べます。html のフォントサイズを変更しているプロジェクトでは、ルートフォントサイズ欄に値を入れてください。

プレビュー、ブレークポイント、アクセシビリティ

ビューポートのスライダーを 320〜1920px の間で動かすと、その幅で表示されるサイズの文字を確認できます。表には、スマートフォン向けの 320・375px、タブレット向けの 768・1024px、デスクトップ向けの 1280・1440・1920px での計算結果が並ぶので、見出しがスマートフォンで窮屈になっていないか、大きなモニターで大きすぎないかを確かめられます。

WCAG の達成基準 1.4.4 は、コンテンツを損なわずに文字を 200% まで拡大できることを求めています。ブラウザのズームは CSS ピクセルで測ったビューポート幅も縮めるため、変化の大きすぎるフルードタイポグラフィは、ズームしても思ったほど大きくならないことがあります。最大値を最小値の 2.5 倍以内に収めるのが広く使われる目安で、超えるとツールが警告します。

共有とエクスポート

設定はすべてページの URL に保存されるので、結果をブックマークしたりチームメンバーに送ったりできます。clamp() の値そのもの、:root 用の CSS カスタムプロパティ、Tailwind の任意値クラスをコピーできます。サイズ一式が必要なら、タイプスケールモードに切り替えてモジュラースケールを CSS 変数として書き出しましょう。

よくある質問

CSS clamp() は何をするものですか?

clamp(MIN, VAL, MAX) は VAL を返しますが、MIN を下回ることも MAX を上回ることもありません。VAL にビューポート単位を含めると、画面に合わせて大きくなり、指定した上下限で止まります。すべてのモダンブラウザで使えます。

フォントサイズには clamp() とメディアクエリのどちらが良いですか?

メディアクエリは決まったブレークポイントで段階的にサイズを切り替えます。clamp() は 1 行の CSS で連続的に変化し、急なジャンプを避けられます。ブレークポイントでレイアウト自体が変わる場合は併用もできます。

clamp() には px と rem のどちらを使うべきですか?

最小値・最大値・推奨値の固定部分には rem を使い、文字がユーザーのフォントサイズ設定に従うようにしましょう。vw の部分がフルードな変化を担います。

ビューポートの範囲はどう選べばよいですか?

多くのサイトは、最も狭いスマートフォンの 320〜375px から始め、メインコンテンツのコンテナが広がらなくなる 1200〜1440px で止めています。それより広い画面で文字を大きくしても、読みやすさはほとんど向上しません。

データはサーバーに送信されますか?

いいえ。計算はすべてブラウザ内で行われます。Vercel Analytics が記録するのは、Cookie を使わない匿名のページビューとボタン操作だけです。