Skip to content

Tailwind CSS 指令及函数

除了工具类,Tailwind 还提供了一些特殊的指令 (Directives) 和函数,让你可以在自定义 CSS 中与 Tailwind 的系统进行更深度的集成。

@tailwind

这是你最先接触到的指令,用于在你的主 CSS 文件中注入 Tailwind 的不同部分。

css
@tailwind base;
@tailwind components;
@tailwind utilities;
  • @tailwind base: 注入 Tailwind 的基础样式(一个名为 Preflight 的现代化 CSS 重置方案)和任何由插件注册的基础样式。
  • @tailwind components: 注入 Tailwind 的组件类和任何由插件注册的组件类。
  • @tailwind utilities: 注入 Tailwind 的所有功能类和任何由插件注册的功能类。

@layer

@layer 指令用于告诉 Tailwind 你的自定义样式属于哪个“层”。这对于控制 CSS 规则的顺序和覆盖关系非常重要,特别是当你想添加可被工具类(如 hover:focus:)覆盖的自定义样式时。

Tailwind 有三个主要的层:base, components, 和 utilities

示例:自定义链接样式

如果你想为所有 <a> 标签定义一个基础样式,但又希望能够用 text-red-500 这样的工具类来覆盖它,你可以这样做:

css
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer base {
  a {
    @apply text-blue-600 underline;
  }
  a:hover {
    @apply text-blue-800;
  }
}

通过将自定义样式放在 base 层,你确保了它们可以被 componentsutilities 层的类覆盖。

@apply

@apply 指令允许你将一系列 Tailwind 工具类提取到一个自定义的 CSS 类中。这在“重用样式”一章中有详细讨论。

css
@layer components {
  .card {
    background-color: white;
    border-radius: 0.5rem;
    padding: 1.5rem;
    box-shadow: theme('boxShadow.lg');
  }
  /* 使用 @apply 的等效写法 */
  .card-alternative {
    @apply bg-white rounded-lg p-6 shadow-lg;
  }
}

注意@apply 不会为你处理 CSS 规则的合并或覆盖,它只是简单地将工具类对应的 CSS 粘贴进来。因此,过度使用可能会导致代码难以维护。

theme()

theme() 函数允许你在自定义 CSS 中访问 tailwind.config.js 中定义的主题值。这在你编写不适合用 @apply 的复杂 CSS,但又想引用设计系统中的值(如颜色、间距)时非常有用。

示例:

css
.content-area {
  height: calc(100vh - theme('spacing.12'));
}

.main-title {
  color: theme('colors.primary');
  font-family: theme('fontFamily.sans');
}

theme() 函数使用点表示法来访问嵌套的主题值。它是在保持 CSS 灵活性的同时,与你的设计系统保持一致的强大工具。