💡 摘要
该技能为Tailwind CSS v4提供了以CSS为中心的配置和指令,便于从v3迁移。
🎯 适合人群
🤖 AI 吐槽: “看起来很能打,但别让配置把人劝退。”
风险:Medium。建议检查:是否发起外网请求(SSRF/数据外发)。以最小权限运行,并在生产环境启用前审计代码与依赖。
name: tailwindcss-v4 description: "Tailwind CSS v4 patterns: CSS-first config, @theme/@utility/@variant directives, migration from v3. Use when working with Tailwind v4 projects." proactive: match match:
- "tailwind"
- "tailwindcss"
- "@theme"
- "@utility"
- "@variant"
Tailwind CSS v4 Skill
CSS-first configuration, new directives, migration from v3.
Quick Reference
v4 Entry Point
@import "tailwindcss";
NOT the v3 way:
/* ❌ These cause errors in v4 */ @tailwind base; @tailwind components; @tailwind utilities;
Key Directives
| Directive | Purpose |
|-----------|---------|
| @theme | Define design tokens (colors, spacing, fonts) |
| @utility | Create custom utility classes |
| @variant | Define custom variants (hover, focus, etc.) |
| @source | Control class detection and safelisting |
| @reference | Import for @apply without emitting CSS |
Theme Configuration (CSS-first)
@import "tailwindcss"; @theme { --color-primary: #3b82f6; --color-secondary: #64748b; --font-display: "Inter", sans-serif; --spacing-18: 4.5rem; }
NOT tailwind.config.js:
// ❌ v3 pattern - don't use in v4 module.exports = { theme: { extend: { colors: { primary: '#3b82f6' } } } }
Custom Utilities
@utility content-auto { content-visibility: auto; } /* Functional utility must end in -* */ @utility tab-* { --tab-size: --value(--spacing-*, [integer]); tab-size: var(--tab-size); }
Custom Variants
Use @custom-variant to define new variants (not @variant).
@custom-variant hocus (&:hover, &:focus); /* Dark mode with class strategy */ @custom-variant dark (&:is(.dark *)); /* Body block with @slot */ @custom-variant hocus { &:hover, &:focus { @slot; } }
Theme Configuration
@theme { --color-primary: #3b82f6; /* Clear namespace */ --color-*: initial; }
Theme Flags
default: Merge with default themeinline: Emit variables to outputstatic: Use values but don't emit varsreference: Use values but don't emit CSS
@theme inline { --font-sans: "SF Pro Text", system-ui; }
New Gradient Syntax
<!-- v4 preferred - supports interpolation color space --> <div class="bg-linear-to-r/oklch from-blue-500 to-purple-500"></div> <!-- Also: bg-linear-to-b, bg-radial, bg-conic -->
New Variants
@min-[400px]:/@max-[600px]:(Container queries)starting:(@starting-style)details-content:(::details-content)inverted-colors:,noscript:,print:
Safelisting Classes
/* Inline safelist */ @source inline("bg-red-500 text-white hidden"); /* From external source */ @source "../content/**/*.md";
Migration from v3
| v3 | v4 |
|----|-----|
| @tailwind base/components/utilities | @import "tailwindcss" |
| tailwind.config.js theme.extend | @theme { --color-* } |
| PostCSS tailwindcss plugin | @tailwindcss/postcss |
| @apply with config values | @reference import first |
PostCSS Setup
// postcss.config.js export default { plugins: { '@tailwindcss/postcss': {} // NOT 'tailwindcss' } }
Vite Setup
// vite.config.ts import tailwindcss from '@tailwindcss/vite' export default { plugins: [tailwindcss()] }
Sources: Tailwind v4 Docs, GitHub
优点
- 清晰的从v3到v4的迁移路径
- 支持以CSS为中心的配置
- 提供新的实用程序和变体指令
缺点
- 可能需要学习新的语法
- 大型项目的迁移可能复杂
- 与v3的向后兼容性有限
相关技能
免责声明:本内容来源于 GitHub 开源项目,仅供展示和评分分析使用。
版权归原作者所有 tlq5l.
