首页 / Tailwind CSS 入门教程 / 函数与指令大全

Tailwind CSS 入门教程

函数与指令大全

本教程共 50 篇 · 第 43 篇 · 更新于 2026-07-29 · 约 8 分钟阅读

Tailwind CSSTailwind CSS 入门教程函数指令directivefunction@theme@source@utility

43. 函数与指令大全

本节目标:全面掌握 Tailwind CSS v4 的函数和指令系统,理解每个指令的用途和使用场景,能够根据需要选择合适的工具。

Tailwind v4 提供了一套 CSS 指令和函数,配置和扩展都能在 CSS 里搞定,不需要再写 JS 配置文件。

指令(Directives)

指令是特殊的 CSS at-rules,以 @ 开头,提供 Tailwind 特有的功能。

@import

导入 CSS 文件,包括 Tailwind 本身:

/* 导入 Tailwind(必须在文件顶部) */
@import "tailwindcss";

/* 导入其他 CSS 文件 */
@import "./typography.css";
@import "./components.css";

@import 支持子路径导入(通过 package.json 的 imports 字段):

{
  "imports": {
    "#app.css": "./src/css/app.css"
  }
}
@import "#app.css";

@theme

定义项目的设计令牌(主题变量):

@theme {
  --color-brand: oklch(0.72 0.11 178);
  --font-display: "Satoshi", sans-serif;
  --breakpoint-3xl: 120rem;
}

支持几种变体:

/* inline:使用变量值而非引用 */
@theme inline {
  --font-sans: var(--font-inter);
}

/* static:始终生成所有 CSS 变量 */
@theme static {
  --color-primary: var(--color-red-500);
}

@source

显式指定源文件路径:

/* 扫描指定目录 */
@source "../node_modules/@acmecorp/ui-lib";

/* 设置基础路径 */
@import "tailwindcss" source("../src");

/* 排除指定路径 */
@source not "../src/components/legacy";

/* 禁用自动检测,手动指定所有源 */
@import "tailwindcss" source(none);
@source "../admin";
@source "../shared";

@source 还可以用于强制生成特定工具类:

/* 强制生成 underline 类 */
@source inline("underline");

/* 生成带变体的类 */
@source inline("{hover:,focus:,}underline");

/* 使用范围生成多个类 */
@source inline("{hover:,}bg-red-{50,{100..900..100},950}");

@utility

注册自定义工具类:

/* 简单工具类 */
@utility content-auto {
  content-visibility: auto;
}

/* 复杂工具类(支持嵌套) */
@utility scrollbar-hidden {
  &::-webkit-scrollbar {
    display: none;
  }
}

/* 函数式工具类(接受参数) */
@utility tab-* {
  tab-size: --value(--tab-size-*);
}

自定义工具类自动支持变体:

<div class="hover:content-auto">悬停时启用内容可见性</div>

@variant

在 CSS 中应用 Tailwind 变体:

.my-element {
  background: white;
  
  /* 暗色模式 */
  @variant dark {
    background: black;
  }
  
  /* 组合变体 */
  @variant hover:focus {
    background: gray;
  }
  
  /* 多个变体共享样式 */
  @variant hover, focus {
    outline: 2px solid blue;
  }
}

编译后:

.my-element {
  background: white;
}
@media (prefers-color-scheme: dark) {
  .my-element {
    background: black;
  }
}

@custom-variant

创建自定义变体:

/* 完整语法 */
@custom-variant theme-midnight {
  &:where([data-theme="midnight"] *) {
    @slot;
  }
}

/* 简写语法 */
@custom-variant theme-midnight (&:where([data-theme="midnight"] *));

@apply

将工具类内联到自定义 CSS 中:

.btn {
  @apply px-4 py-2 bg-blue-500 text-white rounded-lg;
}

@reference

导入主题变量和工具类定义,不重复输出 CSS:

/* 导入项目样式 */
@reference "../../app.css";

/* 或导入默认主题 */
@reference "tailwindcss";

主要用于 Vue/Svelte 组件的 <style> 块。

@config(兼容指令)

加载 v3 风格的 JavaScript 配置文件:

@config "../../tailwind.config.js";

仅用于渐进迁移,新项目不需要。

@plugin(兼容指令)

加载 v3 风格的 JavaScript 插件:

@plugin "@tailwindcss/typography";

函数(Functions)

函数在 CSS 值中使用,提供计算能力。

—alpha()

调整颜色透明度:

.my-element {
  color: --alpha(var(--color-lime-300) / 50%);
}

编译为:

.my-element {
  color: color-mix(in oklab, var(--color-lime-300) 50%, transparent);
}

—spacing()

基于间距比例生成值:

.my-element {
  margin: --spacing(4);
}

编译为:

.my-element {
  margin: calc(var(--spacing) * 4);
}

在任意值中也很有用:

<div class="py-[calc(--spacing(4)-1px)]">
  精确计算的间距
</div>

—value()

解析工具类参数值(在 @utility 中使用):

@utility tab-* {
  /* 匹配主题值 */
  tab-size: --value(--tab-size-*);
  
  /* 匹配裸值 */
  tab-size: --value(integer);
  
  /* 匹配字面量 */
  tab-size: --value("inherit", "initial", "unset");
  
  /* 匹配任意值 */
  tab-size: --value([integer]);
}

—default()

为工具类提供默认值:

@utility tab-* {
  tab-size: --value(integer, --default(4));
}
<!-- 使用默认值 4 -->
<pre class="tab"><code>代码</code></pre>

<!-- 指定值 -->
<pre class="tab-2"><code>代码</code></pre>

—modifier()

解析修饰符(类似 --value() 但用于变体部分):

@utility text-* {
  font-size: --value(--text-*, [length]);
  line-height: --modifier(--leading-*, [length], [*]);
}
<p class="text-xl/relaxed">字号 xl,行高 relaxed</p>

theme()(已废弃)

访问主题值,不推荐使用:

/* 旧写法(不推荐) */
.my-element {
  margin: theme(spacing.12);
}

/* 新写法(推荐) */
.my-element {
  margin: --spacing(12);
}

指令速查表

指令用途示例
@import导入 CSS 文件@import "tailwindcss";
@theme定义设计令牌@theme { --color-brand: oklch(...); }
@source指定源文件@source "../node_modules/lib";
@utility注册自定义工具类@utility content-auto { ... }
@variant应用变体到 CSS@variant dark { ... }
@custom-variant创建自定义变体@custom-variant dark (&:where(.dark *));
@apply内联工具类.btn { @apply px-4 py-2; }
@reference导入样式引用@reference "../app.css";
@config加载 JS 配置(兼容)@config "../../tailwind.config.js";
@plugin加载 JS 插件(兼容)@plugin "@tailwindcss/typography";

函数速查表

函数用途示例
--alpha()调整颜色透明度color: --alpha(var(--color-red-500) / 50%);
--spacing()基于间距比例生成值margin: --spacing(4);
--value()解析工具类参数tab-size: --value(integer);
--default()提供默认值--value(integer, --default(4));
--modifier()解析修饰符line-height: --modifier(--leading-*);
theme()访问主题值(废弃)margin: theme(spacing.12);
Tip

优先使用 CSS 变量和 --spacing() 等新函数,避免使用已废弃的 theme() 函数。