关于 tailwindcss
tailwindcss 是一项使用 Tailwind CSS v4 工具类开发界面的指南技能,涵盖响应式布局、可复用组件模式、配置、插件及生产环境注意事项。
主要功能
- 01采用工具优先和移动优先实践
- 02使用响应式布局与排版工具类
- 03构建可复用的按钮、卡片和表单模式
- 04使用 v4 CSS 优先语法配置主题
- 05了解插件及生产性能注意事项
适用场景
- 01用工具类规划响应式页面布局
- 02创建风格一致的按钮、卡片和表单控件
- 03设置主题令牌并检查 v4 配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rajnandan1/ kener --skill tailwindcss安装后在 Claude Code 中输入/tailwindcss确认已加载。
详细介绍
Tailwind CSS v4 开发指南
有效使用 Tailwind CSS v4 工具类的最佳实践。
注意:Tailwind CSS v4 于 2025 年 1 月发布,采用 CSS 优先的配置方式。如需兼容 v3,仍可使用 tailwind.config.js。
核心原则
- 工具类优先:使用工具类,而不是自定义 CSS
- 移动优先:先为移动设备设计,再使用响应式修饰符扩展
- 提取组件:将重复的模式提取为组件
- 间距一致:使用 Tailwind 的间距刻度
- 自定义配置:扩展默认主题,保持品牌一致性
基础工具类
布局
// Flexbox
<div className="flex items-center justify-between gap-4">
<div className="flex-1">Content</div>
<div className="flex-shrink-0">Sidebar</div>
</div>
// Grid
<div className="grid grid-cols-3 gap-4">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
// Positioning
<div className="relative">
<div className="absolute top-0 right-0">Badge</div>
</div>
间距
// Padding and Margin
<div className="p-4 m-2"> {/* padding: 1rem, margin: 0.5rem */}
<div className="px-6 py-4"> {/* padding-x: 1.5rem, padding-y: 1rem */}
<div className="mt-8 mb-4"> {/* margin-top: 2rem, margin-bottom: 1rem */}
// Space between children
<div className="space-y-4"> {/* margin-bottom on all but last child */}
<div>Item 1</div>
<div>Item 2</div>
</div>
排版
<h1 className="text-4xl font-bold text-gray-900">Heading</h1>
<p className="text-base font-normal text-gray-600 leading-relaxed">
Paragraph text with comfortable line height.
</p>
<span className="text-sm font-medium text-blue-600">Label</span>
颜色
// Text colors
<p className="text-gray-900 dark:text-gray-100">Text</p>
// Background colors
<div className="bg-blue-500 hover:bg-blue-600">Button</div>
// Border colors
<div className="border border-gray-300">Box</div>
响应式设计
断点
// Mobile-first responsive classes
<div className="w-full md:w-1/2 lg:w-1/3">
{/* Full width on mobile, half on medium screens, third on large */}
</div>
<h1 className="text-2xl md:text-4xl lg:text-6xl">
{/* Responsive text sizes */}
</h1>
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
{/* Responsive grid */}
</div>
容器
<div className="container mx-auto px-4">
{/* Centered container with horizontal padding */}
</div>
<div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
{/* Responsive container padding */}
</div>
组件模式
按钮
<button className="px-4 py-2 bg-blue-600 text-white font-medium rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed transition-colors">
Click me
</button>
// Variants
<button className="px-4 py-2 border border-gray-300 rounded-md hover:bg-gray-50">
Secondary
</button>
卡片
<div className="overflow-hidden rounded-lg bg-white shadow-md">
<img src="/image.jpg" alt="" className="h-48 w-full object-cover" />
<div className="p-6">
<h2 className="mb-2 text-xl font-semibold">Card Title</h2>
<p className="text-gray-600">Card content goes here.</p>
</div>
</div>
表单输入框
<div className="space-y-2">
<label htmlFor="email" className="block text-sm font-medium text-gray-700">
Email
</label>
<input
type="email"
id="email"
className="w-full rounded-md border border-gray-300 px-3 py-2 focus:border-transparent focus:ring-2 focus:ring-blue-500 focus:outline-none"
placeholder="[email protected]"
/>
<p className="text-sm text-gray-500">We'll never share your email.</p>
</div>
状态变体
悬停、焦点、激活
<button className="bg-blue-500 hover:bg-blue-600 active:bg-blue-700 focus:ring-2 focus:ring-blue-500">
Interactive Button
</button>
<a href="#" className="text-blue-600 hover:text-blue-800 hover:underline">
Link
</a>
组悬停
<div className="group">
<img src="/image.jpg" className="transition-opacity group-hover:opacity-75" />
<p className="group-hover:text-blue-600">Hover the container</p>
</div>
禁用
<button className="disabled:cursor-not-allowed disabled:opacity-50" disabled>
Disabled Button
</button>
深色模式
/* Tailwind v4: Configure in app/globals.css */
@import "tailwindcss";
@media (prefers-color-scheme: dark) {
/* Or use class-based: .dark */
}
// Usage (same as v3)
<div className="bg-white text-gray-900 dark:bg-gray-900 dark:text-gray-100">
<h1 className="text-gray-900 dark:text-white">Title</h1>
<p className="text-gray-600 dark:text-gray-400">Description</p>
</div>
自定义样式
任意值
<div className="top-[117px]"> {/* Custom top value */}
<div className="bg-[#1da1f2]"> {/* Custom color */}
<div className="grid-cols-[200px_1fr]"> {/* Custom grid template */}
@apply 指令
/* components/button.css */
.btn-primary {
@apply rounded-md bg-blue-600 px-4 py-2 font-medium text-white;
@apply hover:bg-blue-700 focus:ring-2 focus:ring-blue-500 focus:outline-none;
@apply disabled:cursor-not-allowed disabled:opacity-50;
}
配置
Tailwind v4:CSS 优先配置
/* app/globals.css */
@import "tailwindcss";
@theme {
/* Custom colors */
--color-brand-50: #eff6ff;
--color-brand-100: #dbeafe;
--color-brand-900: #1e3a8a;
/* Custom spacing */
--spacing-128: 32rem;
/* Custom fonts */
--font-family-sans: "Inter", sans-serif;
/* Custom breakpoints */
--breakpoint-3xl: 1920px;
}
Tailwind v3 配置(仍受支持)
// tailwind.config.js (optional in v4)
module.exports = {
content: ["./app/**/*.{js,ts,jsx,tsx,mdx}", "./components/**/*.{js,ts,jsx,tsx,mdx}"],
theme: {
extend: {
colors: {
brand: {
50: "#eff6ff",
100: "#dbeafe",
900: "#1e3a8a"
}
},
spacing: {
128: "32rem"
},
fontFamily: {
sans: ["Inter", "sans-serif"]
}
}
},
plugins: [require("@tailwindcss/forms"), require("@tailwindcss/typography")]
}
插件
官方插件
npm install @tailwindcss/forms
npm install @tailwindcss/typography
npm install @tailwindcss/aspect-ratio
npm install @tailwindcss/container-queries
// @tailwindcss/forms
<input type="text" className="form-input rounded-md" />
// @tailwindcss/typography
<article className="prose lg:prose-xl">
<h1>Article Title</h1>
<p>Content...</p>
</article>
性能
自动检测内容
Tailwind v4 会自动检测并扫描所有模板文件,无需配置 content。
构建性能
与 v3 相比,Tailwind v4 借助 @property 和 color-mix() 等现代 CSS 功能,完整构建速度提升至 3.5 倍(约 100ms)。
浏览器要求:Safari 16.4+、Chrome 111+、Firefox 128+
常见模式
居中内容
<div className="flex min-h-screen items-center justify-center">
<div>Centered content</div>
</div>
粘性页眉
<header className="sticky top-0 z-50 border-b bg-white">
<nav>Navigation</nav>
</header>
网格布局
<div className="grid grid-cols-1 gap-6 md:grid-cols-2 lg:grid-cols-3">
{posts.map((post) => (
<PostCard key={post.id} post={post} />
))}
</div>
文本截断
<p className="truncate">This text will be truncated with ellipsis if too long</p>
<p className="line-clamp-3">This text will show max 3 lines with ellipsis</p>
最佳实践
- 保持间距一致:遵循 Tailwind 的间距刻度
- 默认采用响应式设计:始终考虑移动优先设计
- 提取组件:避免重复冗长的类名列表
- 使用主题颜色:在配置中定义自定义颜色,而不是使用任意值
- 谨慎使用 @apply:在 JSX 中优先使用工具类
- 启用深色模式:从一开始就规划深色模式
- 使用插件:利用官方插件满足常见需求
- 优化生产环境:确保正确配置 purge
评论
支持 Markdown