PR

Tailwind CSS v4でリセットCSS部分を読み込ませない方法

HTML/CSSを学ぶ

こんにちは。 Tailwind CSSにはデフォルトでリセットCSSが組み込まれています。Preflightと呼ばれるもので、modern-normalizeをベースに制作されているようです。

ですが、他のリセットCSSを使ってるなど場合によってはこのPreflightが邪魔な時もありますよね。出力させない方法を紹介します。

結論

input側のCSSの初期設定を、@import “tailwindcss”; から以下に変更するだけです。

@layer theme, base, components, utilities;

@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/utilities.css" layer(utilities);

他のリセットCSSを使う場合は@layerで囲った上でリセットCSS→Tailwindの順で読み込むようにしてください。

@layer reset {
  // ここにリセットの内容
}
<link rel="stylesheet" href="./resources/styles/style.css" />
<link rel="stylesheet" href="./resources/styles/utility.css" />

CSSファイルの初期設定を変更する

Tailwind CSS v4での初期設定は以下です。

@import "tailwindcss";

これは内部的には以下のコードを指定したのと同じ意味になります。

@layer theme, base, components, utilities;

@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/preflight.css" layer(base);
@import "tailwindcss/utilities.css" layer(utilities);

これはカスケードレイヤーを利用しています。詳しくはこちらの記事に解説を譲りますが、Tailwindは生成するコードを以下の4つのカテゴリーに分けて管理しています。

レイヤー名内容生成例
themeカスタムプロパティ系--color-red-500: oklch(...);
baseリセットCSS(preflight)html { font-family: ... }
components.btn.card など再利用パーツ.btn { @apply ... }
utilities.p-4.text-center などのユーティリティ.p-4 { padding: 1rem }

そしてこれをtheme→base→components→utilitiesの順で優先するようにしています。utilitiesが最優先です。

さて、baseレイヤーにはpreflight.cssが割り当てられていますね。コードをもう一度見てみましょう。4行目です。

@layer theme, base, components, utilities;

@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/preflight.css" layer(base); // これ
@import "tailwindcss/utilities.css" layer(utilities);

これを削除すればpreflight.cssは出力されません。

@layer theme, base, components, utilities;

@import "tailwindcss/theme.css" layer(theme);
@import "tailwindcss/utilities.css" layer(utilities);

仕組みを知れば簡単ですね。

注意:他のリセットCSSと組み合わせる場合

Preflightが邪魔なケースは要するに他のリセットを使っているからが多いと思いますが、注意点があります。

それはTailwindが出力するCSSは全てレイヤーに属するということです。結果だけ言えば、普通にリセットCSS→Tailwindの順で読み込んだだけではTailwindが効かない場合が出てきます。

<link rel="stylesheet" href="./resources/styles/reset.css" />
<link rel="stylesheet" href="./resources/styles/utility.css" />

こうした時に、reset.cssが記述しているプロパティはTailwindから上書きできません。

// reset.cssの例
h1 {
  margin: 0;
}
<h1 class="mt-4">見出し1</h1> <!-- このmt-4が効かない -->

これはレイヤー付きCSSよりレイヤー無しCSSの方が読み込み順に関わらず優先されてしまうからです。したがってreset.css側をレイヤー付きにしておいてください。

@layer reset {
  // ここにリセットの内容
}

▼ 詳しく理解するにはこちら

まとめ

ということでTailwind CSSのリセットCSS部分を読み込ませない方法でした。覚えて仕舞えば簡単ですが知らないと苦労します。特に設定方法が3系とだいぶ違っていますので気をつけてください。

▼ Tailwind CSS v4の基本を覚えたい方はこちら

この記事を書いた人
小林 秀樹

Web制作フリーランス9年目|ディレクター・フロントエンドエンジニア
「世界一初心者に優しい」→セカヤサ。

コーポレートサイトやLP、メディア立ち上げまで幅広く対応。コーディングを軸に、UX設計・SEOライティング・サイト運用まで一貫対応。

法律系オウンドメディア立ち上げ支援では、特定のキーワードでのSEO1位を実現し問い合わせ獲得に貢献。また大手専門学校サイトの大規模リニューアル(100ページ超)でのディレクションと実装の両面の経験あり。

最近では、AIツールによる自社サービスUI制作や、ChatGPTを活用した記事執筆フローの構築など、AI時代に対応した制作手法の実践にも注力している。

zenn:
https://zenn.dev/hideki_climax

制作実績:
https://tan-band-c66.notion.site/37abe7077b184b338fd8f53f6873ca1d

小林 秀樹をフォローする
HTML/CSSを学ぶ
スポンサーリンク
シェアする
小林 秀樹をフォローする

コメント

タイトルとURLをコピーしました