これは簡単で便利! CSSのclamp()関数を使ったレスポンシブ対応のフォントサイズの定義ができるツール -Type Scale Generator
Post on:2025年3月12日
フォントのサイズをレスポンシブ対応にするときに、最近よく使用されている実装方法はclamp()
関数による流体タイポグラフィのテクニックです。CSSのclamp()
関数を使用するとビューポートをベースにしてフォントサイズの最小値と最大値を定義してその間の値を流動的に設定することができます。
たとえば、小さいスクリーンでは最小値の16px
に、大きいスクリーンでは最大値の24px
に設定し、その間はスクリーンサイズに応じてフォントサイズが変化する、という感じに実装できます。また、メディアクエリが一切不要というのもいいですね。
CSSのclamp()
関数を使用したレスポンシブ対応のフォントサイズを簡単に定義できるオンラインツールを紹介します。

これまでにも同様のツールを紹介してきましたが、今回紹介するのはType Scale Generatorです。利用にあたっては登録など面倒なことは一切不要で、簡単に利用できます。

使い方は簡単です。
サイドバーにベースとなるフォントのサイズを設定し、変化のスケール、ビューポートの最小値と最大値を設定します。最初はデフォルトのままで試してみてください。

設定はサイドバーで
上部の「Preview」で表示するテキストを変更できます。今回は宮沢賢治のテキストに変更してみました。

レスポンシブ対応のフォントサイズをプレビュー
テキストは、見出しのh1
-h6
に加え、body
やcaption
などのテキストも同時に設定できます。

レスポンシブ対応のフォントサイズをプレビュー
ブラウザのサイズを変更して、フォントのサイズがどのように変化するか見てましょう。最小値が36px
、最大値が48px
で、その間でフォントサイズが変化しています。

フォントのサイズがどのように変化するかを確認
生成したCSSは上部から、コードが生成されます。
- CSS
- SCSS
- Tailwind CSS
- WordPress
CSSの書き出しは普通にありますが、SCSSやTailwind CSS、さらにはWordPress用まで生成されるのはかなり珍しいですね。

CSSの書き出し
生成したCSSは、下記の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
/* * Typography Scale CSS * Generated with Type Scale Generator */ /* Fluid Typography Settings * Min Viewport: 320px * Max Viewport: 1200px * Note: Only applies to text larger than 1rem */ :root { --base-size: 16px; --scale-ratio: 1.2; --body-font: "Noto Serif"; --body-weight: 500; --body-line-height: 1.5; --body-letter-spacing: normal; --body-color: #222222; --body-background: #FFFFFF; --heading-font: var(--body-font); --heading-weight: 700; --heading-line-height: 1.25; --heading-letter-spacing: normal; --heading-color: var(--body-color); } /* Base styles */ body { font-family: var(--body-font); font-size: var(--base-size); line-height: var(--body-line-height); letter-spacing: var(--body-letter-spacing); color: var(--body-color); background: var(--body-background); } /* Type scale */ .smallest { font-size: 0.694rem; } .caption { font-size: 0.833rem; } .body { font-size: 1rem; } h6 { font-size: clamp(0.9rem, 0.791rem + 0.545vw, 1.2rem); } h5 { font-size: clamp(1.08rem, 0.949rem + 0.655vw, 1.44rem); } h4 { font-size: clamp(1.296rem, 1.139rem + 0.785vw, 1.728rem); } h3 { font-size: clamp(1.555rem, 1.367rem + 0.943vw, 2.074rem); } h2 { font-size: clamp(1.866rem, 1.64rem + 1.131vw, 2.488rem); } h1 { font-size: clamp(2.24rem, 1.968rem + 1.357vw, 2.986rem); } /* Headings */ h6, h5, h4, h3, h2, h1 { font-family: var(--heading-font); font-weight: var(--heading-weight); line-height: var(--heading-line-height); letter-spacing: var(--heading-letter-spacing); color: var(--heading-color); } |
sponsors