ウェブエンジニア問題集
第5章

text-lg・text-baseは何px?Tailwind CSS文字サイズ一覧

14
この章の目次開く

Tailwind CSSの文字サイズは、text-basetext-lg のようなクラスで指定します。たとえば text-base は16px、text-lg は18pxです。

テキストの大きさ・太さ・行間・色——読みやすさを左右する要素は、Tailwindでは text-* font-* leading-* tracking-* といったユーティリティで指定します。

CSSプロパティとしての font-sizeline-heightwhite-spaceoverflow-wrap を先に確認したい場合は、テキスト・フォント・改行制御を参照してください。この章では、それらをTailwindのユーティリティとしてどう使うかに絞ります。

学習者学習者

文字まわりのクラスが多すぎて、どれを使えば「それっぽく」なるのか分からない…。

先生先生

まずは2つの型だけ。見出しは text-2xl font-bold leading-tight、本文は text-base leading-relaxed。これだけで一気に整って見えるよ。

テキストのスタイリングを確認しているイメージ

よく使う組み合わせ早見表

Tailwindの文字系クラスは単体で覚えるより、UIの用途ごとに組み合わせで覚える方が実務で使えます。

用途クラス例役割
ページ見出しtext-2xl font-bold leading-tight text-slate-900大きく、太く、行間を締める
セクション見出しtext-lg font-semibold leading-snug text-slate-900本文より目立たせる
本文text-base leading-relaxed text-slate-70016pxを基準に読みやすい行間にする
補足文text-sm leading-6 text-slate-500主文より弱く見せる
ラベルtext-xs font-semibold uppercase tracking-wide text-slate-500小さくても識別しやすくする
1行省略truncate一覧のタイトル崩れを防ぐ
複数行省略line-clamp-2 / line-clamp-3カードの高さを揃える
<h1 class="text-2xl font-bold leading-tight text-slate-900">
  Tailwind CSSの文字サイズ
</h1>
<p class="mt-3 text-base leading-relaxed text-slate-700">
  本文は16pxを基準に、読みやすい行間を合わせます。
</p>
html

font-size: text-lg / text-base の実値一覧

検索でよく調べられる text-lgtext-basetext-sm は、Tailwindのデフォルトテーマでは次の値です。

クラスfont-sizepx換算デフォルトのline-height主な用途
text-xs0.75rem12px1rem / 16pxラベル、注釈
text-sm0.875rem14px1.25rem / 20px補足文、小さめ本文
text-base1rem16px1.5rem / 24px本文の基本
text-lg1.125rem18px1.75rem / 28pxセクション見出し、強調本文
text-xl1.25rem20px1.75rem / 28px小さめ見出し
text-2xl1.5rem24px2rem / 32px見出し
text-3xl1.875rem30px2.25rem / 36px大きな見出し
text-4xl2.25rem36px2.5rem / 40pxヒーロー見出し
text-5xl3rem48px1大きなタイトル
text-6xl3.75rem60px1かなり大きなタイトル
text-7xl4.5rem72px1ビジュアル重視のタイトル
text-8xl6rem96px1特大表示
text-9xl8rem128px1最大級の表示
text-base は16px、text-lg は18px。本文は text-base、少し強めたい本文や小見出しは text-lg が使いやすい基準です。
<p class="text-sm">14px(0.875rem)</p>
<p class="text-base">16px(1rem)デフォルト</p>
<p class="text-lg">18px(1.125rem)</p>
<p class="text-xl">20px(1.25rem)</p>
<p class="text-2xl">24px(1.5rem)</p>
<p class="text-3xl">30px(1.875rem)</p>
<p class="text-4xl">36px(2.25rem)</p>
html
text-sm / text-base / text-lg の見え方

text-sm: 補足文やメタ情報に向いた小さめの文字です。

text-base: 本文の基本サイズです。長めの説明文はこのサイズから考えると安定します。

text-lg: 本文より少し目立たせたい導入文や小見出しに使えます。

Tailwindのタイポグラフィは、単体のクラスより組み合わせで覚えると実務で使いやすくなります。本文は text-base leading-relaxed text-slate-600、見出しは text-2xl font-bold leading-tight text-slate-900 がよく使う出発点です。


レスポンシブ対応のテキストサイズ

画面幅に応じて文字サイズを変えるときは、sm: md: lg: などのブレークポイントプレフィックスを付けます。詳しい考え方は レスポンシブデザイン で扱いますが、文字サイズでも書き方は同じです。

<h1 class="text-2xl font-bold leading-tight md:text-4xl lg:text-5xl">
  画面幅に合わせて大きくなる見出し
</h1>
 
<p class="mt-4 text-base leading-relaxed md:text-lg">
  スマートフォンでは16px、md以上では18pxで表示します。
</p>
html
レスポンシブな見出し

Responsive

小さい画面では控えめに、大きい画面ではしっかり見せる

text-2xl md:text-4xl のように書くと、画面幅が広いときだけ見出しを大きくできます。

Tailwindはモバイルファーストです。text-2xl md:text-4xl は「スマートフォンで text-2xl、768px以上で text-4xl」という意味になります。


font-family

フォントの種類は font-sansfont-seriffont-mono で指定します。

クラスCSS上の意味主な用途
font-sanssans-serif系通常のUI、本文、見出し
font-serifserif系記事タイトル、引用、少し文芸的な表現
font-monomonospace系コード、数値、ログ、ID
<p class="font-sans">通常のUIテキスト</p>
<p class="font-serif">少し雰囲気を変えたい見出し</p>
<p class="font-mono">npm run dev</p>
html
font-family の違い

font-sans: 管理画面やアプリUIの本文に向いています。

font-serif: 引用や読み物らしい見出しで使うことがあります。

font-mono: const size = "text-lg"

実務では、多くのUIを font-sans で統一し、コードや数値だけ font-mono にするのが扱いやすいです。サイト全体のフォントを変えたい場合は、テーマ側で font-sans などの中身を設定します。


font-weight

文字の太さは font-* で指定します。見出しは太く、本文は通常、ラベルは少し太くすると読みやすくなります。

<p class="font-normal">通常(400)</p>
<p class="font-medium">やや太め(500)</p>
<p class="font-semibold">セミボールド(600)</p>
<p class="font-bold">ボールド(700)</p>
html
クラス太さ主な用途
font-normal400本文
font-medium500ボタン、控えめな強調
font-semibold600小見出し、ラベル
font-bold700見出し、強い強調

line-height

行間は leading-* で指定します。本文は少しゆとりを持たせ、見出しは締めるとバランスが取りやすくなります。

<p class="leading-tight">行間狭い(1.25)— 見出し向け</p>
<p class="leading-normal">通常(1.5)</p>
<p class="leading-relaxed">ゆとりあり(1.625)— 本文向け</p>
<p class="leading-loose">広め(2)</p>
html
<h2 class="text-2xl font-bold leading-tight">
  複数行になっても締まって見える見出し
</h2>
<p class="mt-3 text-base leading-relaxed">
  長めの本文では行間を少し広げると、行を追いやすくなります。
</p>
html

letter-spacing: tracking-*

文字間隔は tracking-* で指定します。小さな英字ラベルや大きな見出しで使うことが多いです。

クラス変化主な用途
tracking-tighterかなり詰める大きな英字見出し
tracking-tight少し詰める見出し
tracking-normal標準本文
tracking-wide少し広げるラベル、バッジ
tracking-wider広げる英字の見出し・ナビ
tracking-widestかなり広げる短い英字ラベル
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">
  Typography
</p>
<h2 class="text-3xl font-bold tracking-tight">
  読みやすい見出し
</h2>
html
tracking-tight と tracking-wide

tracking-tight の見出し

tracking-wide label

日本語の本文に tracking-wide を強く使うと読みにくくなることがあります。まずは英字ラベルや短い見出しに限定すると失敗しにくいです。


text-align / text-color

文字揃えは text-lefttext-centertext-right、文字色は text-slate-700text-blue-600 のような色クラスで指定します。

<p class="text-center">中央揃え</p>
<p class="text-right">右揃え</p>
 
<p class="text-slate-600">落ち着いた本文色</p>
<p class="text-blue-600">リンクや強調に使う青</p>
<p class="text-red-500">エラーや警告の赤</p>
html

本文色は真っ黒にせず、text-slate-700text-slate-600 から始めると、画面全体が少し柔らかく見えます。色の考え方は次章の カラーシステム で詳しく扱います。


whitespace / word-break

改行や長い単語の折り返しは、whitespace-*break-* で制御します。カードタイトル、URL、テーブルセルでよく使います。

クラス役割主な用途
whitespace-normal通常どおり折り返す本文
whitespace-nowrap折り返さないボタン、短いラベル
whitespace-pre-line改行文字を反映し、空白は通常扱い入力された複数行テキスト
break-normal通常の改行ルール基本
break-words必要なら長い単語を折り返すURL、長い英単語
break-allどこでも折り返す幅が厳しい表のセル
<!-- ボタン内の短いラベルを1行に保つ -->
<button class="whitespace-nowrap rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white">
  今すぐ登録
</button>
 
<!-- 長いURLでカード幅が壊れないようにする -->
<p class="break-words text-sm text-slate-600">
  https://example.com/very/long/path/that/should/wrap
</p>
html

whitespace-nowrap は便利ですが、スマートフォンで横にはみ出しやすい指定です。短いラベルやボタンだけに使い、本文には基本的に使いません。


テキスト省略

1行で省略するなら truncate、複数行で省略するなら line-clamp-* を使います。カード一覧や検索結果のタイトルでよく使います。

<!-- 1行で省略 -->
<p class="truncate">長いテキストが...で省略されます</p>
 
<!-- 複数行で省略 -->
<p class="line-clamp-2">2行で省略されるテキスト...</p>
<p class="line-clamp-3">3行で省略されるテキスト...</p>
html
truncate と line-clamp の見た目

truncate

とても長いタイトルが1行に収まらない場合は末尾が省略されます

line-clamp-2

カードの説明文など、複数行で高さを揃えたい場合はline-clampを使います。長い文章でも一覧の見た目が崩れにくくなります。

truncateoverflow: hiddentext-overflow: ellipsiswhite-space: nowrap をまとめて指定するクラスです。複数行では効かないので、2行や3行で止めたいときは line-clamp-2 のように書きます。


@tailwindcss/typography プラグイン

マークダウン・ブログ記事など長文コンテンツには prose クラスが便利です。

npm install @tailwindcss/typography
bash
<article class="prose prose-lg max-w-none">
  <!-- 見出し・段落・リスト・コードが美しくスタイリングされる -->
</article>
html

prose は記事本文全体に効くスタイルです。アプリのボタンやカードを作るためのものではなく、Markdownから出力される見出し・段落・リスト・コードなどを読みやすく整えるために使います。


よくあるハマりどころ

学習者学習者

leading-none を使ったら見出しが詰まって見えるし、prose の中で色を変えたのに思った通りにならないことがあります…。

leading-none で上下が窮屈になる

leading-none は行間を1にするため、複数行の日本語見出しでは上下が窮屈に見えることがあります。大きな見出しでも、まずは leading-tight から試すのがおすすめです。

<!-- 詰まりすぎることがある -->
<h2 class="text-4xl font-bold leading-none">長い見出し</h2>
 
<!-- まずはこちらから試す -->
<h2 class="text-4xl font-bold leading-tight">長い見出し</h2>
html

prose 内の見た目が上書きされる

prosearticle 内の h2pa などにまとめてスタイルを当てます。そのため、普通のUI部品を prose の中に入れると余白や文字サイズが想定と変わることがあります。

<article class="prose max-w-none">
  <h2>記事の見出し</h2>
  <p>記事本文...</p>
 
  <div class="not-prose">
    <button class="rounded-md bg-blue-600 px-4 py-2 text-sm font-semibold text-white">
      proseの影響を受けないボタン
    </button>
  </div>
</article>
html

prose の中にカードやボタンを置くときは、必要に応じて not-prose で囲みます。

truncate が効かない

truncate は、要素に幅の制約がないと省略されません。親要素や本人に max-w-*w-*min-w-0 などが必要です。

<div class="flex min-w-0 gap-3">
  <p class="truncate text-sm font-medium">
    とても長いタイトルがここで省略されます
  </p>
</div>
html

ちゃんと使うためのポイント

  • 本文は text-base leading-relaxed、見出しは text-2xl font-bold leading-tight が基本形
  • text-base は16px、text-lg は18px。迷ったら本文は text-base から始める
  • 画面幅で見出しを変えるなら text-2xl md:text-4xl のように書く
  • 小さなラベルは text-xs font-semibold tracking-wide にすると読みやすい
  • 長いURLや英単語で崩れるときは break-words、1行省略は truncate、複数行省略は line-clamp-*
  • 長文コンテンツには @tailwindcss/typographyprose が強力

参考リンク

次の章では、**カラーシステム**を学びます。

Tailwind CSSクイズに挑戦するこの章で学んだTailwind CSSの知識を、4択クイズでアウトプットして定着させよう