p-4 mt-8 text-blue-500 rounded-xl——初めて見ると呪文ですが、規則は3つだけです。これが分かると、覚える量が激減して、知らないクラスも意味が推測できるようになります。
規則1:クラス名は「何を・どれだけ」の2部構成
ほとんどのクラスは、この形をしています。
p-4
│ └── どれだけ(値)
└──── 何を(プロパティ)「何を」の部分は、CSSのプロパティ名の頭文字や略語です。
| 接頭辞 | CSSのプロパティ | 例 |
|---|---|---|
p- | padding | p-4 |
m- | margin | m-4 |
w- | width | w-full |
h- | height | h-screen |
bg- | background-color | bg-white |
text- | font-size または color | text-lg / text-red-500 |
border- | border | border-2 |
rounded- | border-radius | rounded-lg |
gap- | gap | gap-4 |
flex- | flex 系 | flex-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;と同じです。このxとyは出番が非常に多いので、ここだけは早めに手になじませてください。
規則2:数字は「px」ではなく「刻みの番号」
いちばん最初につまずくのがここです。p-4は4pxではありません。
数字は「何番目の刻みか」を表しています。初期設定では1刻み=0.25rem(16px設定なら4px相当)なので、こうなります。
| クラス | 実際の値 | pxでいうと |
|---|---|---|
p-1 | 0.25rem | 4px |
p-2 | 0.5rem | 8px |
p-3 | 0.75rem | 12px |
p-4 | 1rem | 16px |
p-6 | 1.5rem | 24px |
p-8 | 2rem | 32px |
p-12 | 3rem | 48px |
p-16 | 4rem | 64px |
覚え方は「4倍するとpxになる」。p-4=16px、p-6=24px、p-8=32px。これだけで暗算できます。
数字ではない特別な値
長さ系には、数字以外の便利な値もあります。
| クラス | 意味 |
|---|---|
w-full | width: 100% |
w-screen | 画面の幅いっぱい |
h-screen | 画面の高さいっぱい(100vh) |
w-fit | 中身に合わせた幅 |
m-auto | margin: auto(中央寄せに使う) |
p-px | 1px |
規則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-xs | 0.75rem | 12px |
text-sm | 0.875rem | 14px |
text-base | 1rem | 16px(標準) |
text-lg | 1.125rem | 18px |
text-xl | 1.25rem | 20px |
text-2xl | 1.5rem | 24px |
text-3xl | 1.875rem | 30px |
text-4xl | 2.25rem | 36px |
baseが標準の16pxで、そこからsm→xsと小さく、lg→xl→2xlと大きくなります。2xl以降は数字で増えるので、大きい見出しはtext-3xlやtext-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宣言なので、翻訳作業に近い読み方ができます。
このレッスンのまとめ
- クラス名は「何を-どれだけ」の2部構成。方向は
xytblrで絞る - 数字はpxではなく刻みの番号。
p-4=16px、4倍するとpx - 刻みしか選べないことが、サイト全体の余白をそろえる仕組みになっている
- 色は「色名-濃さ」。濃さは50が薄く950が濃い。文字は
600〜700、背景は50〜100が定番 text-はサイズと色の二役。続く語で判断する- 足りなければ
p-[13px]と角かっこで書けるが、多用は規則の恩恵を消す
次は、この規則を使ってFlexboxとGridのレイアウトを組みます。CSSで書いたことと1対1で並べていきます。