CSSのpow()関数が便利! フォントサイズをレスポンシブ対応にするCSSの新しいテクニック

CSSでレスポンシブ対応のフォントサイズを実装する最近のテクニックとしてpow()関数を使用すると、ビューポートやコンテナサイズに応じて動的にフォントサイズが調整される流動的なタイポグラフィを実装できます。

メディアクエリやブレイクポイントの設定は不要で、あらゆるWebサイト、スマホアプリで利用できます。

フォントサイズをレスポンシブ対応にするCSSの新しいテクニック

Fluid Modular Type Scale -GitHub

ではさっそく、そのCSSを紹介します。

CSSのpow()関数を使用すると、最小ビューポート幅と最大ビューポート幅の間でフォントサイズをスムーズに拡大縮小ができます。

親要素またはroot要素に以下のカスタムプロパティを設定します。

  • --font-size-min: 最小ビューポートでの基本フォントサイズ(単位なしpx、例: 16)
  • --font-size-max: 最大ビューポートでの基本フォントサイズ(単位なしpx、例: 20)
  • --font-ratio-min: 最小ビューポートでの文字拡大縮小率(例: 1.2 -Minor Third)
  • --font-ratio-max: 最大大きなビューポートでの文字拡大縮小率(例: 1.333 -Perfect Fourth)
  • --font-width-min: 拡大縮小を開始するビューポートの幅(単位なしpx、例: 320)
  • --font-width-max: 拡大縮小を終了するビューポートの幅(単位なしpx、例: 1440)

要素ごとのカスタムプロパティは、下記の通り。

  • --font-level: スケールのステップ(0=body、1=1段階上、2=2段階上など)
  • --variable-unit: 補間に使用するビューポート単位(デフォルトは100vi: コンテナクエリベースの場合は100cqiに設定)

CSSのpow()関数とはCSS Values and Units Module Level 4に定義されており、カンマで区切られた2つの数値を引数として累乗を返す関数です。

2026年現在、pow()関数はすべてのブラウザにサポートされています。

サイトのキャプチャ

pow()関数のサポートブラウザ

CSSの各行で何をしているのか見てましょう。

Step 1: 各レベルの最小フォントサイズと最大フォントサイズを計算し、スケール比率を現在のレベルの累乗にします。

レベル0は、pow(ratio, 0) = 1となり、基本サイズが得られます。レベル1はスケールを1段階上げ、レベル2は2段階上げるなどします。

最小値と最大値に異なる比率を使用すると、階層構造が圧縮されます。小さなビューポートでは圧縮効果が顕著になり、大きなビューポートではより顕著になります。

Step 2: 傾き(変化率)を計算します。ビューポートの幅が1ピクセル変化するごとに、フォントサイズが何ピクセル変化するかを示します。

可変範囲 (font-width-minfont-width-max) 全体にわたって変化します。

Step 3: clamp(min, preferred, max)を設定します。clamp()では、フォントサイズがminを下回ったりmaxを上回ったりしないようにします。preferredは線形補間です(y = mx + b)。

  • -m = --fluid-preferred: ステップ2で設定した傾き
  • -x = ビューポートの単位: デフォルトは100vi, 100cqiに変更可能
  • -b = y切片: 線を固定するためのremオフセット。

--font-width-min--fluid-minに正確に一致するように調整します。

/ 16 * 1rem」という数式は、単位のないpx値をremに変換するもので、1rem = 16px(ブラウザのデフォルト値)であることを前提としています。

元ネタは、下記ポストより。

sponsors

top of page

©2026 coliss