clamp()の三つの値と本ツールの対象
CSSのclamp()は,clamp(最小値, 推奨値, 最大値)という三つの値を受け取ります.ブラウザは推奨値を基準にしながら,結果が最小値を下回らないようにし,最大値を上回らないようにします.このCSS clamp() レスポンシブフォント計算機は,画面幅に応じて文字サイズを線形に変えるための推奨値を計算します.
入力するのは,変化を始める最小ビューポート幅,変化を終える最大ビューポート幅,その二点に対応する最小・最大フォントサイズ,REM換算の基準となるルートフォントサイズです.初期値は360px,1280px,16px,48px,16pxです.この条件では,画面幅が360px以下なら最小値,360pxから1280pxの間なら一次式の値,1280px以上なら最大値が使われる形のCSSを作ります.
メディアクエリのように特定幅で値を段階的に切り替えるのではなく,指定した二点の間を直線で結びます.ただし,文字の読みやすさや適切な行長を自動判定するものではありません.最小値と最大値は,実際の文章量,フォント,配置する領域を見ながら利用者が決めます.
二点から傾きと切片を求める計算
X軸をビューポート幅,Y軸をフォントサイズとすると,入力した最小条件と最大条件は直線上の二点になります.傾きは「最大フォントサイズ−最小フォントサイズ」を「最大幅−最小幅」で割って求めます.初期値なら,(48−16)÷(1280−360)で,画面幅が1px増えたときのフォントサイズの増分を計算できます.
次に,最小フォントサイズから「傾き×最小幅」を引いてY切片を求めます.CSSのvwはビューポート幅の1%を表すため,傾きへ100を掛けた値をvwの係数にします.推奨値は「切片 + 係数vw」となり,PX版ではpx + vw,REM版では切片を指定ルートフォントサイズで割ったrem + vwとして出力します.
最小値と最大値も,PX版では入力したpx値,REM版では各フォントサイズを指定ルートフォントサイズで割ったrem値です.ルートフォントサイズを16pxと仮定して16pxを入力すると1rem,48pxは3remになります.実際のサイトでルートフォントサイズが異なる場合,REM版のpx相当値も変わるため,プロジェクト側の設定と同じ基準を入力してください.
入力条件と表示時の丸め
五つの入力値はすべて0より大きい数値である必要があります.また,最大ビューポート幅は最小幅より大きく,最大フォントサイズは最小値より大きい条件です.同じ値や逆転した値では右上がりの範囲を定義できないため,結果を表示せず,REM,PX,Tailwindのコピーボタンも無効にします.画面のメッセージを確認し,条件を修正してください.
計算自体はJavaScriptの数値で行い,出力文字列を作る段階で桁数を整えます.REM換算値,REM版の切片,vw係数は小数第4位まで,PX版の切片は小数第2位まで表示します.小数部の末尾に続く0は除くため,1.0000remは1remのように短くなります.PX版の最小値と最大値は入力値をそのまま文字列へ使います.
表示用に丸めた係数をCSSへ貼り付けるため,数学上の無限桁の直線と完全に同じではなく,指定した二点付近で小さな差が生じる場合があります.誤差ゼロや特別な高精度計算を保証するものではありません.厳密な社内基準がある場合は,出力された係数と端点での計算結果を確認し,必要な桁数へ調整してください.
REM版・PX版・Tailwind設定断片の使い分け
REM版は,最小値,最大値,固定の切片をremで表します.利用者の設定やサイトのルートフォントサイズを反映できる一方,本ツールへ入力したルートフォントサイズと適用先の設定が一致しているかを確認する必要があります.PX版は固定部分をpxで示すため,入力値との対応を読み取りやすい形式です.どちらもfont-sizeの値として使えるclamp()式だけを出力します.
Tailwind CSS欄は,REM版の式をresponsive-headingという名前へ割り当てたfontSizeオブジェクトの断片です.設定ファイル全体,プラグイン,import,ユーティリティクラスの登録手順までは生成しません.Tailwindの版や構成によって設定方法が異なるため,利用中の公式ドキュメントに沿って既存設定へ組み込みます.
各欄のコピーボタンはClipboard APIを使います.成功した場合だけ完了アイコンを表示し,ブラウザの権限などで失敗した場合は手動コピーの案内を出します.REM版,PX版,Tailwind断片は同じ入力を基にしていますが,プロジェクトへ三つすべてを同時に貼る必要はありません.採用するCSS環境に合う一つを選んでください.
想定画面幅スライダーによる確認
画面下部のスライダーは計算条件の入力欄ではなく,仮の画面幅で文字サイズを確認するためのシミュレーターです.設定した最小幅の100px手前を目安としつつ200pxを下限にし,最大幅の100px先まで動かせます.現在の想定幅と,その幅から計算した文字サイズを画面内に数値で表示します.
想定幅が最小ビューポート幅以下なら最小フォントサイズ,最大幅以上なら最大フォントサイズへ固定します.その間では,CSS文字列を読み直すのではなく,同じ傾きと切片をJavaScript側で計算してプレビューテキストのfont-sizeへ設定します.これにより,範囲内の線形変化と,両端で値が止まる関係を確認できます.
このスライダーはブラウザウィンドウやプレビュー領域そのものの幅を変更する機能ではありません.文字サイズだけを想定幅から求めるため,実際の折り返し,行間,コンテナ幅,他要素との重なりは再現しません.フォントファミリー,文字数,OS,ブラウザによって見え方も変わるので,最終確認は出力コードを実際のページへ適用して行ってください.
対応していない機能と利用時の注意
本ツールが生成するのは,フォントサイズ用の単一のclamp()式です.ブレイクポイント別のメディアクエリ,複数条件のプリセット,任意のCSS単位,要素の幅・高さ・余白用コードは生成しません.数式を別のプロパティへ応用する場合は,単位や最小・最大値がその用途に適切かを別途判断する必要があります.
可読性,アクセシビリティ,デザイン品質,すべての画面でのレイアウト維持も自動判定しません.文字が数式どおりの大きさでも,長い見出しが収まるとは限らず,小さな文字が読みやすいとも限りません.ブラウザのclamp()対応状況や古い環境向けフォールバックも出力しないため,対象ブラウザを決めてテストしてください.
入力値の保存,複数設定の履歴,ファイル出力,設定の読込はなく,ページを再読込すると初期値へ戻ります.式の計算とプレビューはこのコンポーネントのJavaScriptで行いますが,Webページや必要な資産の初回読込などサイト利用に伴う通信まで存在しないという意味ではありません.完全なオフライン動作や絶対的な安全性,生成コードの法的な利用条件を保証する機能でもありません.