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

Tailwind 用 clamp() ジェネレーター

プラグインなしで Tailwind CSS にフルードな文字サイズを導入できます。マークアップにそのまま貼れる text-[clamp(…)] クラスと、テーマ用の CSS 変数を出力します。

入力単位
出力単位

よく使うプリセット

clamp() の値

clamp(1.5rem, 1rem + 2.5vw, 3rem)

傾き: 2.5vw · 切片: 1rem

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

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

ビューポート別の表示サイズ
ビューポートサイズ (px)サイズ (rem)
320px241.5
375px25.381.5859
768px35.22.2
1024px41.62.6
1280px483
1440px483
1920px483

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

ライブプレビュー

ビューポート 1024px で 41.6px

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

Tailwind の任意値でフルードなサイズを

Tailwind では、角かっこの中に任意の CSS の値を書けます。スペースはクラスの区切りになるため、値の中のスペースはアンダースコアで書き、CSS を生成するときに Tailwind がスペースに戻します。ツールはこれを自動で処理し、text-[clamp(1rem,0.8333rem_+_0.8333vw,1.5rem)] のようなクラスを出力します。プラス記号の前後のアンダースコアは重要です。CSS では数学関数の中の + と − の前後に空白が必要だからです。

テーマに登録する

任意値のクラスは、1 か所だけの見出しに最適です。同じサイズを何か所でも使うなら、テーマに移しましょう。Tailwind v4 では、@theme ブロックに --text-fluid-lg: clamp(…) のような変数を追加すれば、どこでも text-fluid-lg が使えます。Tailwind v3 では、tailwind.config.js の theme.extend.fontSize に値を追加します。

フルードなサイズをテーマにまとめておけば、信頼できる情報源が 1 つになります。デザインが変わっても 1 行を直すだけで、すべてのコンポーネントに反映されます。

余白のユーティリティ

同じ出力は余白にも使えます。ツールを余白モードに切り替えると p-[clamp(…)] が出力されるので、必要に応じて px-、py-、m-、gap-、space-y- に書き換えてください。フルードな余白とフルードな文字を組み合わせれば、ほとんどのページでサイズのためのレスポンシブ接頭辞が不要になります。

よくあるつまずき

text-[…] クラスが効かない場合は、値に通常のスペースが含まれていないか、また Tailwind がソースファイル内でクラス名全体を検出できるかを確認してください。文字列の連結で組み立てたクラス名は検出されません。Tailwind が値を色として解釈してしまう場合は、text-[length:clamp(…)] と書いて型を明示しましょう。

よくある質問

Tailwind でフルードな文字を使うのにプラグインは必要ですか?

不要です。Tailwind v3 と v4 の任意値は、標準で clamp() に対応しています。プラグインは名前を便利にするだけです。

クラスにアンダースコアが入っているのはなぜですか?

クラス名にはスペースを含められないからです。Tailwind は CSS を生成するときにアンダースコアをスペースに変換するので、clamp() 内の + の前後に CSS が求める空白が入ります。

Tailwind v4 のテーマにフルードなサイズを追加するには?

@theme の中で --text-fluid-xl: clamp(…); と宣言すると、Tailwind が text-fluid-xl ユーティリティを自動で生成します。

md: のようなレスポンシブ接頭辞と併用できますか?

できますが、サイズのために使うことはまずありません。clamp() の値は、それだけであらゆるビューポート幅に適応します。