Tailwind CSS v4
このスキルは、https://tailwindcss.com/docs にドキュメント化されている Tailwind CSS v4.x をカバーします。v4 は JavaScript ではなく CSS で設定を行い、v3 のクラス名やデフォルトの多くが変更されました。このスキルは、習慣と異なる点(CSS ファーストのセットアップ、意外なデフォルト、名称変更されたユーティリティ、ドキュメントが推奨するパターン)を保持しています。各リファレンスファイルの主張の末尾には、その主張の出典となるページが記載されています。
ナビゲーション方法
- 以下のルールを読んでください。これらは v4 で壊れる最も頻繁な v3 の習慣を捉えています。
- 末尾の表から、タスクに一致するリファレンスファイルを 1 つ開いてください。
- プロジェクトに
tailwind.config.js、@tailwindディレクティブ、または v3 のクラス名がある場合、または v3 の習慣を含む可能性のあるコードをレビューする場合は、最初にreferences/upgrade-from-v3.mdを読んでください。デフォルトの移行パスは、新しいブランチでのnpx @tailwindcss/upgrade、その diff のレビュー、ブラウザでのテストです。https://tailwindcss.com/docs/upgrade-guide#using-the-upgrade-tool
クイックスタート(CSS ファースト、Vite)
npm install tailwindcss @tailwindcss/vite
// vite.config.ts
import { defineConfig } from 'vite'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({ plugins: [tailwindcss()] })
/* app.css */
@import "tailwindcss";
@theme {
--color-midnight: #121063;
--font-display: "Oswald", sans-serif;
}
@custom-variant dark (&:where(.dark, .dark *));
- セットアップ全体は、パッケージ、プラグイン、そして 1 つの
@import "tailwindcss";です。インストール手順では、tailwind.config.jsもcontent配列も使用しません。https://tailwindcss.com/docs/installation/using-vite - Tailwind はソースファイルを自身でスキャンします。
.gitignore、node_modules、CSS ファイル、ロックファイル内のファイルはスキップされます。https://tailwindcss.com/docs/detecting-classes-in-source-files#which-files-are-scanned - Next.js、Angular、およびその他の非 Vite バンドラーは、代わりに PostCSS プラグインを使用します:
npm install tailwindcss @tailwindcss/postcss postcss、次にplugins: { "@tailwindcss/postcss": {} }。https://tailwindcss.com/docs/installation/using-postcss - フォント URL の
@import(Google Fonts など)は、@import "tailwindcss"の上に最初に記述し、その後でフォントファミリーを@themeで宣言します。https://tailwindcss.com/docs/font-family#customizing-your-theme @theme変数はユーティリティを作成します:--color-midnightはbg-midnight、text-midnight、fill-midnightを生成し、--font-displayはfont-displayを生成します。https://tailwindcss.com/docs/theme#what-are-theme-variables
最も重要なルール
セットアップと設定
- PostCSS プラグインは
@tailwindcss/postcssであり、tailwindcssではありません。autoprefixerやpostcss-importを追加しないでください:インポートとベンダープレフィックスは組み込まれています。https://tailwindcss.com/docs/upgrade-guide#using-postcss - Vite 設定では、フレームワークガイドは
pluginsの最初にtailwindcss()をリストし、その後にフレームワークプラグイン(React Router、SvelteKit、SolidJS、Qwik)を配置します。ドキュメントは順序要件を述べていません。https://tailwindcss.com/docs/installation/framework-guides/react-router https://tailwindcss.com/docs/installation/framework-guides/sveltekit - CSS で
@themeを使用してカスタマイズします。JS 設定は検出されなくなり、@config "../../tailwind.config.js";を介してのみロードされますが、corePlugins、safelist、separatorは使用できません。https://tailwindcss.com/docs/upgrade-guide#using-a-javascript-config-file @source inline("{hover:,}bg-red-{50,{100..900..100},950}");でセーフリストします。https://tailwindcss.com/docs/detecting-classes-in-source-files#safelisting-specific-utilitiesnode_modules内で Tailwind を使用してビルドされたライブラリはスキャンされません:@source "../node_modules/@acmecorp/ui-lib";(スタイルシートからの相対パス)を追加してください。https://tailwindcss.com/docs/detecting-classes-in-source-files#explicitly-registering-sources- クラス名を動的に構築(
`bg-${color}-600`)しないでください。値を完全なクラス文字列にマッピングしてください。https://tailwindcss.com/docs/detecting-classes-in-source-files#dynamic-class-names - Vue、Svelte、または Astro の
<style>ブロックと CSS モジュールは個別にコンパイルされます。そこで@applyを使用する前に、@reference "../app.css";を追加するか、代わりにvar(--color-blue-500)を使用してください。https://tailwindcss.com/docs/compatibility#explicit-context-sharing https://tailwindcss.com/docs/compatibility#vue-svelte-and-astro - Tailwind v4 は Sass、Less、または Stylus などの CSS プリプロセッサと一緒に使用するようには設計されていないため、Vue、Svelte、または Astro のスタイルシートや
<style>ブロックにそれらを使用することはできません。https://tailwindcss.com/docs/compatibility#sass-less-and-stylus - v4 には Safari 16.4+、Chrome 111+、Firefox 128+ が必要です。古いブラウザの場合は v3.4 を使用してください。https://tailwindcss.com/docs/upgrade-guide#browser-requirements
テーマとカスタム CSS
- テーマ変数が別の変数を参照する場合は、
@theme inline { --font-sans: var(--font-inter); }と記述します。そうしないと、値は--font-sansが定義されている場所で解決されます。https://tailwindcss.com/docs/theme#referencing-other-variables --color-*: initial;でデフォルトの名前空間を削除し、--*: initial;でテーマ全体を削除します。https://tailwindcss.com/docs/theme#overriding-the-default-theme- カスタムユーティリティは
@utility name { ... }で宣言します。@layer utilitiesではありません。これにより、バリアントがそれらに対して機能します。https://tailwindcss.com/docs/upgrade-guide#adding-custom-utilities - カスタム CSS および JS 内のテーマ値は、CSS 変数(
var(--color-red-500))として読み取ります。theme(colors.red.500)やresolveConfigは使用しません。https://tailwindcss.com/docs/upgrade-guide#theme-values-in-javascript - すべてのブレークポイントに同じ単位(デフォルトのように rem)を使用します。そうしないと、ブレークポイントが互いに上書きされます。https://tailwindcss.com/docs/responsive-design#customizing-your-theme
クラス構文
- CSS 変数のショートハンドは括弧を使用します:
bg-(--brand-color)、bg-[--brand-color]ではありません。https://tailwindcss.com/docs/upgrade-guide#variables-in-arbitrary-values text-(--my-var)は曖昧(フォントサイズか色か)なため、タイプヒントを追加します:text-(length:--my-var)またはtext-(color:--my-var)。同じヒントがfont-(family-name:--f)、border-(length:--w)、bg-(image:--img)、shadow-(color:--c)にも存在します。https://tailwindcss.com/docs/adding-custom-styles#resolving-ambiguities https://tailwindcss.com/docs/font-family https://tailwindcss.com/docs/border-width https://tailwindcss.com/docs/background-image https://tailwindcss.com/docs/box-shadow- important 修飾子は末尾に付けます:
bg-red-500!。https://tailwindcss.com/docs/upgrade-guide#the-important-modifier - 積み重ねられたバリアントは左から右に適用されます:
*:first:pt-0、first:*:pt-0ではありません。https://tailwindcss.com/docs/upgrade-guide#variant-stacking-order - 接頭辞のないクラスはすべてのサイズをターゲットにします。
sm:はモバイルを意味しません:text-center sm:text-leftと記述します。https://tailwindcss.com/docs/responsive-design#targeting-mobile-screens hover:はホバーできるデバイスにのみ適用されます(@media (hover: hover))。ホバーは拡張機能として扱います。https://tailwindcss.com/docs/upgrade-guide#hover-styles-on-mobile
変更されたデフォルト
- ボーダーとディバイドの色はデフォルトで
currentColorになります:常にborderで色を設定します。https://tailwindcss.com/docs/upgrade-guide#default-border-color ringは 1px のcurrentColorです。v3 の外観にするにはring-3 ring-blue-500と記述します。https://tailwindcss.com/docs/upgrade-guide#default-ring-width-and-color- フォーカスアウトラインを非表示にするには
outline-hiddenを使用します(forced-colors モードでは維持されます):v3 のfocus:outline-noneはfocus:outline-hiddenになります。outline-noneはアウトラインを完全に削除するようになりました。https://tailwindcss.com/docs/upgrade-guide#renamed-outline-utility - スケールが変更されました:v3 の
shadow-sm、rounded-sm、blur-smは現在-xsであり、v3 の裸のshadow、rounded、blurは現在-smです。https://tailwindcss.com/docs/upgrade-guide#updated-shadow-radius-and-blur-scales - グラデーションは
bg-linear-to-rであり、さらにbg-radialとbg-conic-<angle>があります。https://tailwindcss.com/docs/background-image#adding-a-linear-gradient containerは中央揃えもパディングも行いません:container mx-auto px-4と記述します。https://tailwindcss.com/docs/max-width#using-breakpoints-container- グリッド、折り返しレイアウト、またはカスタム順序の子要素には、
space-x-*とspace-y-*の代わりにgapを使用します。https://tailwindcss.com/docs/margin#limitations - ボタンは
cursor: defaultを持ちます。https://tailwindcss.com/docs/upgrade-guide#buttons-use-the-default-cursor - プレースホルダーは現在のテキストカラーを 50% の不透明度で使用します。https://tailwindcss.com/docs/upgrade-guide#new-default-placeholder-color
- 表示クラスは
hidden属性をオーバーライドしなくなりました:要素を表示するにはhiddenを削除します。https://tailwindcss.com/docs/upgrade-guide#hidden-attribute-takes-priority
クラスを使用したダークモード
@import "tailwindcss";
@custom-variant dark (&:where(.dark, .dark *));
// ページがレンダリングされる前に <head> 内にインラインで記述
document.documentElement.classList.toggle(
"dark",
localStorage.theme === "dark" ||
(!("theme" in localStorage) && window.matchMedia("(prefers-color-scheme: dark)").matches),
);
localStorage.theme = "dark" または "light" を設定し、システムに従うには localStorage.removeItem("theme") を呼び出します。https://tailwindcss.com/docs/dark-mode#with-system-theme-support
リファレンスファイル
| ファイル | 読むタイミング |
|---|---|
| references/installation-and-frameworks.md | Tailwind のインストール、Vite/PostCSS/CLI の選択、フレームワーク固有の手順、CSS モジュール、エディタツール |
| references/upgrade-from-v3.md | v3 プロジェクトの移行、v3 クラス名または設定を含むコードのレビュー |
| references/utilities-and-variants.md | クラスの記述:任意値、競合、状態バリアント、group と peer、レスポンシブ、コンテナクエリ、ダークモード |
| references/theme-and-colors.md | 色、フォント、ブレークポイント、スペーシング、アニメーション、テーマ名前空間の追加またはオーバーライド |
| references/custom-styles.md | ベーススタイル、Preflight、コンポーネントクラス、@utility、関数型ユーティリティ、@custom-variant、@variant |
| references/directives-and-source-detection.md | @apply、@reference、--alpha()、--spacing()、@config、@plugin、@source、インポートオプション(prefix、important、source) |
| references/layout-flexbox-grid.md | 表示、位置、inset、z-index、columns、flex、grid、配置と -safe 配置 |
| references/spacing-and-sizing.md | パディング、マージン、スペース、幅、高さ、サイズ、コンテナスケール、ビューポート単位、論理サイズ |
| references/typography.md | フォント、フォントサイズと行の高さ、文字間隔、テキストラップ、オーバーフローラップ、装飾、コンテンツ |
| references/backgrounds-and-borders.md | グラデーション、背景画像、サイズと位置、半径、ボーダー幅と色、アウトライン |
| references/effects-and-filters.md | シャドウ、リング、テキストシャドウ、不透明度、ブレンドモード、マスク、フィルターとバックドロップフィルター |
| references/transitions-transforms-tables.md | トランジション、ディスクリートトランジション、アニメーション、回転、スケール、移動、3D、ズーム、テーブル |
| references/interactivity-and-svg.md | カラースキーム、フィールドサイジング、スクロールバー、スクロールスナップ、カーソル、will-change、SVG の fill と stroke、forced colors |