Tailwind CSS・使いどころを判断する

使うと得な場面・損な場面

Tailwindは万能ではありません。長く育てるサイトでは強く、1枚もののページでは重い。判断の基準を場面別にまとめ、クラスが長すぎるときの対処と、素のCSSと混ぜるときの線引きも扱います。

ここまでの回で、Tailwindの書き方はひととおり手に入りました。最後は使う・使わないの判断です。

Tailwindは万能ではありません。向いている場面ではとても強く、向いていない場面では素のCSSより手間が増えます。この見分けができるようになれば、道具として使いこなせている状態です。

判断の軸はひとつ

いろいろな比較ができますが、いちばん効く問いはこれです。

つまり判断はこうなります。

  • 長く育てる・人が入れかわる・部品を使い回すTailwindが効く
  • 1回作って終わり・自分ひとり・ページが数枚素のCSSで十分

場面別の判断

作るものおすすめ理由
CSSを学習中の練習ページ素のCSSプロパティを自分で書くことが練習になる
ポートフォリオ・1枚もののLP素のCSSビルドを増やす価値が薄い
数ページの小さなサイトどちらでも好みで決めていい規模
何十ページある企業サイトTailwind余白や色がそろう。CSSが太らない
長く運用するサービスTailwind「消せる」が効いてくる
ReactやVueで部品を作るTailwind部品とスタイルが同じ場所にある
チームで開発するTailwind命名で悩まない。刻みが共通言語になる
デザインが1枚1枚違う作品サイト素のCSS使い回しがないので利点が出ない
WordPressの既存テーマを直す素のCSS既存のCSSに合わせるほうが安全

クラスが長すぎるときの対処

Tailwindの最大の不満は「HTMLが長くなる」ことです。対処には順番があります。上から試してください。

①並べる順番を決める(まずこれ)

<!-- 接頭辞なし → md: → lg: の順にそろえる -->
<div class="grid grid-cols-1 gap-4 p-4 md:grid-cols-2 md:gap-6 lg:grid-cols-3">

これだけで体感の読みやすさが大きく変わります。 何も導入せずにできる対処なので、まずここから。

②部品(コンポーネント)として切り出す

同じクラスの並びを3回以上書いているなら、それは部品にすべきサインです。ReactやVue、あるいはWordPressのテンプレートパーツでもいいので、繰り返しているHTMLごとまとめます。

// クラス列は1か所だけ。使う側は短い
function Button({ children }) {
  return (
    <button className="px-6 py-3 bg-orange-500 text-white font-bold rounded-full hover:bg-orange-600 transition">
      {children}
    </button>
  );
}

Tailwindが本領を発揮するのはこの形です。 「クラスが長い」問題は、部品化で解けるように設計されています。

@applyでまとめる(最後の手段)

CSSの中で@applyを使うと、ユーティリティをまとめて1つのクラスにできます。

.btn {
  @apply px-6 py-3 bg-orange-500 text-white font-bold rounded-full;
}

短くなって嬉しく見えますが、これをやるとTailwindの利点がほぼ消えます

  • .btnどこで使われているか分からなくなる(=消せなくなる)
  • HTMLを見ても見た目が分からなくなる(CSSを開きに行くことになる)
  • 結果として、素のCSSに戻ってビルドの手間だけが残る

使うとしても、本当に何十か所で使うボタン1種類のような場面に限ってください。「クラスが長いから@applyで全部まとめる」を始めると、Tailwindを使う理由がなくなります。

素のCSSと混ぜるときの線引き

混ぜて構いません。実際、多くのプロジェクトが混ぜています。大事なのはどちらで書くかの線引きを決めることです。

おすすめの分け方はこうです。

内容どちらで書くか
配置・余白・幅(レイアウト)Tailwind
色・文字サイズ・角丸Tailwind
ホバーやフォーカスの変化Tailwind
複雑な@keyframesアニメーション素のCSS
::before::afterを凝った装飾素のCSS
サイト全体の文字・リンクの既定スタイル素のCSS
印刷用のスタイル素のCSS

ユーティリティで素直に書けるものはTailwind、書きにくいものは素のCSSというだけの話です。無理にTailwindで表現しようとして[&>*:nth-child(3)]:mt-[13px]のような読めないクラスになるくらいなら、素のCSSで数行書くほうが親切です。

べんりワザCSSが反映されないときの調べ方どちらが勝っているか分からなくなったときの調べ方はこちら

Tailwindを学んで、素のCSSに返ってくるもの

このコースをここまで進めた人には、素のCSSに戻っても残る収穫があります。

  • 余白を刻みで考えるクセ——13pxではなく16px24px。これは素のCSSでも変数にすれば同じことができます
  • モバイルファーストの型——min-widthだけで書く癖がつきます
  • 「消せるか」という視点——素のCSSを書くときも、消せる構造を意識するようになります

つまりTailwindを使わない選択をしたとしても、学んだことは無駄になりません。道具の思想だけ持ち帰って、素のCSSで実践するのも立派な使い方です。

べんりワザSassは今も必要?同じ「使う・使わない」の判断は、Sassについてもまとめています

このレッスンのまとめ

  1. 判断の軸は「そのCSS、半年後に誰かが消せるか
  2. 長く育てる・部品を使い回す・チームで開発ならTailwindが効く
  3. 1枚もの・学習中・既存サイトの改修なら素のCSSが素直
  4. クラスが長いときは「順番をそろえる → 部品化する」の順。@applyは最後の手段
  5. @applyを多用すると、Tailwindの利点が消えて素のCSSに戻る
  6. 混ぜてよいが、同じプロパティを両方から指定しない
  7. 刻みで考える・モバイルファースト・消せる構造——素のCSSに戻っても残る収穫

道具は、選べる状態になったときにはじめて道具になります。使う理由と使わない理由の両方を言えるようになったなら、このコースの目的は達成です。

よくある質問

Tailwindは使ったほうがいいですか?
長く育てるサイトや、部品を使い回すアプリでは効きます。逆に1枚もののページや、CSSを学習中の段階では素のCSSのほうが素直です。判断の軸は「そのCSSを半年後に誰かが消せるか」です。
クラスが長すぎて読めません。どうすればいいですか?
まず並べる順番を決める(接頭辞なし→md:→lg:)だけでかなり読めます。それでも同じ並びを何度も書くなら、その部分をコンポーネント(部品)として切り出すのが正解です。@applyでまとめるのは最後の手段です。
@applyでまとめてしまえばいいのでは?
多用すると、Tailwindの利点である「消せる」「HTMLを見れば分かる」が失われます。素のCSSに戻るだけで、ビルドの手間だけが残ります。使うとしても、ボタンのように本当に何十か所で使うものに限ってください。
素のCSSと混ぜてもいいですか?
混ぜて構いません。ただし線引きを決めてください。おすすめは「配置と余白はTailwind、複雑なアニメーションや疑似要素を多用する装飾は素のCSS」です。同じ要素の同じプロパティを両方から指定するのだけは避けます。