Tailwind CSS・書き方をおぼえる

クラス名の読み方

呪文に見えるクラス名には規則があります。数字のスケール、色の濃さ、接頭辞の意味。この3つが分かると覚える量が激減し、知らないクラスも意味が推測できるようになります。

p-4 mt-8 text-blue-500 rounded-xl——初めて見ると呪文ですが、規則は3つだけです。これが分かると、覚える量が激減して、知らないクラスも意味が推測できるようになります。

Tailwind CSSTailwind CSSって何?Tailwindがそもそも何なのかは、前の回へ

規則1:クラス名は「何を・どれだけ」の2部構成

ほとんどのクラスは、この形をしています。

p-4
│ └── どれだけ(値)
└──── 何を(プロパティ)

「何を」の部分は、CSSのプロパティ名の頭文字や略語です。

接頭辞CSSのプロパティ
p-paddingp-4
m-marginm-4
w-widthw-full
h-heighth-screen
bg-background-colorbg-white
text-font-size または colortext-lg / text-red-500
border-borderborder-2
rounded-border-radiusrounded-lg
gap-gapgap-4
flex-flexflex-col

方向を絞りたいときは、接頭辞に1文字足します。 ここは規則的なので、覚えるのは一度だけです。

足す文字方向
t上(top)pt-4 mt-8
b下(bottom)pb-4 mb-8
l / r左 / 右pl-4 pr-4
x左右(横)px-4
y上下(縦)py-4

つまりpx-4 py-2は「左右に1rem、上下に0.5rem」。素のCSSのpadding: 0.5rem 1rem;と同じです。このxyは出番が非常に多いので、ここだけは早めに手になじませてください。

規則2:数字は「px」ではなく「刻みの番号」

いちばん最初につまずくのがここです。p-4は4pxではありません。

数字は「何番目の刻みか」を表しています。初期設定では1刻み=0.25rem(16px設定なら4px相当)なので、こうなります。

クラス実際の値pxでいうと
p-10.25rem4px
p-20.5rem8px
p-30.75rem12px
p-41rem16px
p-61.5rem24px
p-82rem32px
p-123rem48px
p-164rem64px

覚え方は「4倍するとpxになる」p-4=16px、p-6=24px、p-8=32px。これだけで暗算できます。

数字ではない特別な値

長さ系には、数字以外の便利な値もあります。

クラス意味
w-fullwidth: 100%
w-screen画面の幅いっぱい
h-screen画面の高さいっぱい(100vh
w-fit中身に合わせた幅
m-automargin: auto(中央寄せに使う)
p-px1px

規則3:色は「名前+濃さ」

色は色名-濃さの形です。

bg-blue-500
│  │    └── 濃さ(50〜950)
│  └─────── 色名
└────────── 何に使うか(背景色)

濃さは50がいちばん薄く、950がいちばん濃いという並びです。

濃さ見え方よく使う場面
50 100ごく薄い背景の色づけ、選択中の行
200 300薄い枠線、区切り線
500基準ブランドカラーの本体
600 700濃い文字色、ボタンの背景
800 900かなり濃い見出しの文字色

実務でいちばん使うのは50〜100(背景)と600〜700(文字)です。500はロゴやアクセントに使い、文字色に500を使うと薄くて読みにくいことが多いので注意してください。

<!-- 薄い背景に濃い文字=読みやすい定番の組み合わせ -->
<p class="bg-blue-50 text-blue-800 p-4">お知らせ</p>

色名はslate gray red orange amber yellow lime green emerald teal cyan sky blue indigo violet purple fuchsia pink rose全部覚える必要はなく、使う3〜4色だけ決めておけば足ります。

文字サイズは番号ではなく名前

数字の刻みとは違い、文字サイズは服のサイズのような名前です。

クラス実際の値pxでいうと
text-xs0.75rem12px
text-sm0.875rem14px
text-base1rem16px(標準)
text-lg1.125rem18px
text-xl1.25rem20px
text-2xl1.5rem24px
text-3xl1.875rem30px
text-4xl2.25rem36px

baseが標準の16pxで、そこからsmxsと小さく、lgxl2xlと大きくなります。2xl以降は数字で増えるので、大きい見出しはtext-3xltext-4xlを使います。

決まった値で足りないとき

どうしても既定の刻みに無い値が必要なときは、角かっこで任意の値を書けます。

<div class="p-[13px] text-[#ff8a3d] w-[420px]">
  任意の値
</div>

便利ですが、多用すると規則の恩恵が消えます(余白がばらつく元に戻ってしまう)。使うのは「デザインデータで指定された固有の値」など、理由があるときだけにしてください。

読めるかテストしてみる

規則が入ったか確かめてみましょう。次のクラス列は、素のCSSで何をしているでしょうか。

<button class="px-6 py-3 bg-orange-500 text-white text-lg font-bold rounded-full">
  送信する
</button>

答えはこうです。

button {
  padding: 0.75rem 1.5rem;   /* py-3 px-6 → 12px 24px */
  background-color: #f97316; /* bg-orange-500 */
  color: #fff;               /* text-white */
  font-size: 1.125rem;       /* text-lg */
  font-weight: 700;          /* font-bold */
  border-radius: 9999px;     /* rounded-full */
}

上から順に読み下すだけです。1クラス1宣言なので、翻訳作業に近い読み方ができます。

上のクラス列を手で定義しただけの見た目です。クラス名を読めば、この形が想像できるようになるのが目標です。

このレッスンのまとめ

  1. クラス名は「何を-どれだけ」の2部構成。方向はx y t b l rで絞る
  2. 数字はpxではなく刻みの番号p-4=16px、4倍するとpx
  3. 刻みしか選べないことが、サイト全体の余白をそろえる仕組みになっている
  4. 色は「色名-濃さ」。濃さは50が薄く950が濃い。文字は600〜700、背景は50〜100が定番
  5. text-サイズと色の二役。続く語で判断する
  6. 足りなければp-[13px]と角かっこで書けるが、多用は規則の恩恵を消す

次は、この規則を使ってFlexboxとGridのレイアウトを組みます。CSSで書いたことと1対1で並べていきます。

よくある質問

p-4の「4」は4pxですか?
違います。4は「4番目の刻み」を表す番号で、初期設定では1が0.25rem(4px相当)なので、p-4は1rem(16px相当)です。覚え方は「4倍するとpxになる」——p-4は16px、p-2は8px、p-8は32pxです。
blue-500の「500」は何ですか?
色の濃さです。50がいちばん薄く、950がいちばん濃い。500が基準の濃さになっていて、文字色なら600〜700、背景色なら50〜100あたりがよく使われます。
text-はなぜ文字サイズと文字色の両方に使われるのですか?
text-lgのようにサイズの名前が続けばサイズ、text-blue-500のように色の名前が続けば色、と続く語で判断される仕組みです。慣れると混乱しませんが、最初はここでつまずきます。
決まった値になくて困ったときはどうしますか?
角かっこで任意の値を書けます。p-[13px] や text-[#ff8a3d] のように書くと、その値がそのまま効きます。ただし多用すると規則の恩恵が消えるので、既定の刻みで足りないか先に考えるのが定石です。