BLOG

【Tailwind CSS】デザインとコードを直結させるスペーシングについて

Written by mizuishi

INDEX

Tailwind CSSを使っていて、こんなことはありませんか?

  • デザインに「22px」という中途半端な数値が出てきて、渋々 mt-[22px]と書く
  • デザイン調整でArbitrary valuesだらけになって、可読性が下がる
  • レビュー時に「この px-6って何pxだっけ?」と計算し直す

今回は、--spacingを1px相当に定義することで、デザインの再現度と実装スピードを同時に引き上げる方法を紹介します。

--spacingの再定義

Tailwind CSS v4の大きな変更点は、設定がJSからCSS(@themeブロック)へ移ったことです。そのため、プロジェクトの基盤となるCSSファイルに以下を追加するだけで、すべてのスペーシング・ユーティリティが「1px相当ベース」に変わります。

css
@theme {
  --spacing: 0.0625rem; /* 1px相当 (1/16rem) */
}

なぜ 0.0625remなのか?

ブラウザのデフォルトフォントサイズは通常 1rem = 16px です。なので、1px をrem換算すると以下になります。

1px ÷ 16px = 0.0625rem

この定義により、Tailwindの計算ロジックがシンプルになります。

  • デフォルト: 数値 × 0.25rem (4px) → p-4は16px
  • 1px設定: 数値 × 0.0625rem (1px) → p-16は16px(見たままの数値になります)

メリット

デザインとコードが一致する

Figmaのプロパティパネルに表示された数値をそのまま打ち込めるので、実装時の迷いが無くなり実装スピードがあがります。

  • my-32 → 32pxの上下マージン
  • px-16 → 16pxの左右パディング
  • max-w-640 → 640pxの最大幅

コードの可読性が上がる

記述した数値がそのままの値となるため、p-[13px]top-[21px]といった任意値(Arbitrary values)を使う必要がなくなります。

クラス名が標準的な記法に統一されるので、HTMLがスッキリしますし、後から見直した時も意図がすぐ分かります。

レビューが楽になる

「この p-6 って何pxだっけ?」と考えたりすることが無くなります。コードに mt-24とあれば、シンプルに24pxであることを確認するだけになるので、分かりやすさく、チーム全体でレビューがしやすくなります。

デメリット

デフォルトのスケールが使えない

Tailwind CSS標準のp-1 (4px)などの感覚は捨てなければなりません。Tailwind CSSを使い慣れていると、最初は逆に混乱する可能性があります。

デザインシステムの制約が弱まる

自由度が高まる分、Tailwind CSS本来のデザインシステムとしての担保が崩れやすくなります。サイト全体でかっちりと「4の倍数」という規律でspacingが決まっている場合は、設定から外れる値を見分けづらくなってしまうため、使わないほうが好ましいです。

まとめ

Tailwind CSSのデザインシステムを用いて「4の倍数」という規律に従うことも一つのやり方ですが、Figmaの数値をそのままコードに落とし込める「直感的な1px単位」がもたらす開発体験と品質の向上は、多くのプロジェクトで強力な武器になるかと思うので、一度お試しください。

参照

https://zenn.dev/amon/articles/c928d3a5faa955

https://tailwindcss.com/docs/padding

https://tailwindcss.com/docs/margin

https://evoworx.dev/blog/what-is-tailwindcss/

https://evoworx.dev/blog/upgrade-tailwindcss-v3-to-v4/