SuperAPI AI 工具集

tailwind-css

前端与建站

查看项目

更新于 10-16 04:04

技能介绍

用途

该技能用于回答和指导与 Tailwind CSS 相关的问题,尤其是 Tailwind CSS v4 与 tailwind-variants 的使用。当用户涉及「Tailwind CSS」「tailwind-variants」「tv() 函数」「CSS-first configuration」「Tailwind breaking change」等主题时,可调用本技能。其定位是让使用者以 Tailwind CSS v4 专家的角色,理解 CSS-first 配置、现代工具类模式,以及基于 tailwind-variants 的类型安全组件样式。

参考文档

技能附带两份参考文档:

  • Tailwind v4 规则与最佳实践:./references/tailwind-v4-rules.md,覆盖破坏性变更、移除/重命名的工具类、布局规则、排版、渐变、CSS 变量、v4 新特性与常见陷阱。
  • tailwind-variants 模式:./references/tailwind-variants.md,覆盖组件变体、slots API、组合、TypeScript 集成、响应式变体。

核心原则

  • 始终使用 Tailwind CSS v4.1+。
  • 不使用已废弃或已移除的工具类,改用替代写法。
  • 不使用 @apply,改用 CSS 变量、--spacing() 函数或框架组件替代。
  • 检查冗余类,移除不必要的类。

配置方式

Tailwind CSS v4 采用纯 CSS 配置:

  • 不需要 tailwind.config.ts 文件。
  • 用 @theme { } 或 @theme static { } 定义主题令牌。
  • 用 @utility { } 创建自定义工具类。
  • 用 @custom-variant { } 定义自定义变体。

示例:

@import "tailwindcss";

@theme { --color-primary: oklch(0.72 0.11 178); --spacing-edge: 1.5rem; }

关键破坏性变更(v3 → v4)

重命名工具类(v3 废弃写法 → v4 替代写法):

  • bg-gradient-* → bg-linear-*
  • shadow-sm → shadow-xs
  • shadow → shadow-sm
  • blur-sm → blur-xs
  • blur → blur-sm
  • rounded-sm → rounded-xs
  • rounded → rounded-sm
  • outline-none → outline-hidden
  • ring → ring-3
  • drop-shadow-sm → drop-shadow-xs
  • drop-shadow → drop-shadow-sm
  • backdrop-blur-sm → backdrop-blur-xs
  • backdrop-blur → backdrop-blur-sm

移除的工具类(废弃 → 替代):

  • bg-opacity-* → 使用不透明度修饰符:bg-black/50
  • text-opacity-* → 使用不透明度修饰符:text-black/50
  • border-opacity-* → 使用不透明度修饰符:border-black/50
  • flex-shrink-* → shrink-*
  • flex-grow-* → grow-*
  • overflow-ellipsis → text-ellipsis

渐变色语法:使用 v4 渐变语法。

线性渐变:<div class="bg-linear-to-br from-violet-500 to-fuchsia-500"></div> 径向渐变:<div class="bg-radial-[at_50%_75%] from-sky-200 to-indigo-900"></div> 锥形渐变:<div class="bg-conic-180 from-indigo-600 via-indigo-50 to-indigo-600"></div> 已废弃写法:<div class="bg-gradient-to-br ..."></div>(错误)

响应式设计(移动优先)

Tailwind 是移动优先的:

  • 默认类(无前缀)应用于所有屏幕尺寸。
  • 断点前缀(md:、lg:)在该断点及以上生效。
  • 不要用 sm: 表示移动端,这是冗余的。

示例:

<div class="text-sm md:text-base lg:text-lg"> <div class="flex-col md:flex-row"> <div class="px-4 md:px-6 lg:px-8"> <div class="hidden lg:block"></div> </div> </div> </div>

布局最佳实践

  • flex/grid 间距始终使用 gap:不要用 <div class="flex space-x-4">,应使用 <div class="flex gap-4">。
  • 使用 min-h-dvh 代替 min-h-screen;min-h-screen 在移动端 Safari 上有问题。
  • 相等的宽高使用 size-*:不要用 <div class="w-10 h-10">,优先用 <div class="size-10">。

排版

使用行高修饰符,而不是 leading-* 类:

  • 不要用 <p class="text-base leading-7">,应使用 <p class="text-base/7">。

CSS 变量

Tailwind v4 将主题值暴露为 CSS 变量:

.custom-element { background: var(--color-red-500); padding: var(--spacing-4); border-radius: var(--radius-lg); }

使用 --spacing() 函数进行计算:

.custom-class { margin-top: calc(100vh - --spacing(16)); }

tailwind-variants 快速上手

通过 tv() 实现类型安全的组件变体,并自动解决类冲突:

import { tv, type VariantProps } from "tailwind-variants";

const button = tv({ base: "font-medium rounded-lg transition-colors", variants: { color: { primary: "bg-blue-500 text-white hover:bg-blue-600", secondary: "bg-gray-500 text-white hover:bg-gray-600" }, size: { sm: "text-sm px-3 py-1.5", md: "text-base px-4 py-2", lg: "text-lg px-6 py-3" } }, defaultVariants: { color: "primary", size: "md" } });

type ButtonVariants = VariantProps<typeof button>;

// 使用 button(); // 使用默认值 button({ color: "secondary", size: "lg" });

更多内容见 ./references/tailwind-variants.md,包括多部件组件的 slots API、复合变体、使用 extend 进行组件组合、TypeScript 集成模式。

快速参考

  • 渐变:bg-linear-*、bg-radial、bg-conic
  • 不透明度:bg-red-500/50(不是 bg-opacity-*)
  • 行高:text-base/7(不是 leading-*)
  • 间距:flex/grid 中使用 gap-*
  • 相等尺寸:size-10(不是 w-10 h-10)
  • 全高:min-h-dvh(不是 min-h-screen)
  • 组件变体:来自 tailwind-variants 的 tv()

常见任务

创建带变体的组件:阅读 ./references/tailwind-variants.md 获取模式;使用 tv() 实现类型安全变体;用 VariantProps<typeof component> 提取类型。

调试样式:查看 ./references/tailwind-v4-rules.md 中的破坏性变更;验证渐变语法(bg-linear-,不是 bg-gradient-);检查不透明度语法(bg-red-500/50,不是 bg-opacity-*)。

限制

该技能聚焦于 Tailwind CSS v4 与 tailwind-variants 的写法规范,具体项目的安装命令、版本号要求、收费与价格信息暂未提供。