0Pricing
React Academy · 课时

Tailwind、CSS 变量与 CSS-in-JS 中的令牌

将生成的令牌集成到 Tailwind 配置、CSS 自定义属性以及 Emotion 或 styled-components 主题中。

Tailwind、CSS 变量与 CSS-in-JS 中的令牌 是 CoddyKit 上的免费 React Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 React Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 React Academy 课程共包含 4 节课。

CSS 自定义属性输出

Style Dictionary 的 CSS 平台输出会生成一个包含 CSS 自定义属性的文件:--color-primary-500: #3b82f6; --spacing-4: 16px;,等等。这些变量定义在 :root 上,因此可在全局使用。这是应用中使用所有令牌的基础。

全局导入令牌

将生成的 CSS 令牌文件导入全局样式表或根布局组件:@import './tokens/tokens.css'。在 Next.js 中,将其导入 app/layout.tsx 或 styles/globals.css。导入后,应用中的每条 CSS 规则和每个组件都可以引用这些自定义属性。

在 CSS 中使用令牌

在组件样式表或 CSS 模块中引用 CSS 变量:background-color: var(--color-primary-500); 和 padding: var(--spacing-4);。如果 JSON 源文件中的令牌值发生变化,重新构建 Style Dictionary 会更新 CSS 文件,所有使用该变量的组件都会自动反映新值。

使用 CSS 变量实现运行时主题

CSS 自定义属性支持运行时切换主题。对于深色模式,在主题选择器下覆盖令牌值:[data-theme="dark"] { --color-background: #1a1a2a; --color-text: #f0f0f0; }。设置 document.documentElement.setAttribute('data-theme', 'dark') 后,无需重新加载或重新构建,即可立即切换所有令牌值。

Tailwind 配置扩展

在 tailwind.config.js 中扩展 Tailwind 的主题,以使用令牌值:theme: { extend: { colors: { primary: { 500: tokenOutput.color.primary[500] } } } }。将 Style Dictionary 生成的 JS 输出导入 Tailwind 配置,确保 Tailwind 类(bg-primary-500)始终使用权威令牌值。

使用 CSS 变量值的 Tailwind

若要在 Tailwind 中实现可在运行时切换的主题,请将颜色配置为引用 CSS 变量:'primary': 'rgb(var(--color-primary-rgb) / <alpha-value>)'。这要求 CSS 变量存储不带 rgb() 包装器的 RGB 分量(--color-primary-rgb: 59 130 246)。随后 Tailwind 会自动处理不透明度工具类。

Emotion 与 Styled-Components 集成

CSS-in-JS 库使用 JavaScript 主题对象。将 Style Dictionary 的 JS 输出作为主题提供者的值传入:<ThemeProvider theme={tokens}>。组件通过 const theme = useTheme() 和 theme.color.primary[500] 访问令牌。Style Dictionary 会生成带类型的令牌对象;主题提供者负责分发它。

使用代码检查规则强制使用令牌

stylelint-no-hardcoded-colors 插件和自定义 ESLint 规则可以强制要求样式表或组件文件中不得出现硬编码的十六进制值。如果开发者写下 color: #3b82f6 而不是 color: var(--color-primary-500),代码检查器就会标记它。这样可确保令牌系统是唯一的颜色来源。

动态令牌的 Tailwind 安全列表

当 Tailwind 类名在运行时根据令牌名称动态构造时,Tailwind 的清除过程可能会移除这些类,因为它们不会以静态字符串形式出现在源代码中。将动态类模式添加到 tailwind.config.js 中的 safelist:safelist: [{ pattern: /bg-primary-/ }]。

Figma Tokens 插件工作流

Figma Tokens 插件可将 Figma 令牌值直接导出为 Style Dictionary JSON 格式。工作流程如下:设计师在 Figma Variables 中更新颜色,通过插件导出,提交更新后的 JSON,预构建脚本运行 Style Dictionary,React 应用使用更新后的 CSS 和 JS 输出。设计与代码保持同步。

作用域内的令牌覆盖

CSS 自定义属性仅在其定义所在的元素及其后代元素中有效。这可以实现组件级主题覆盖:卡片组件可以在其根元素上设置 --color-background: var(--color-surface-elevated),所有后代元素都会使用提升后的表面颜色,而无需逐层传递属性。

用于令牌的 CSS 自定义属性与 Tailwind 对比

与静态 Tailwind 值相比,使用 CSS 自定义属性(变量)作为设计令牌的主要优势是什么?

课程回顾

Style Dictionary 将 CSS 自定义属性输出为供全局导入的内容,并将 JS 对象输出用于 Tailwind 和 CSS-in-JS 集成。CSS 变量可通过 [data-theme] 覆盖实现运行时主题切换。Tailwind 从 JS 输出中的令牌值扩展其配置;若要实现支持不透明度的主题,请将 Tailwind 配置为引用 RGB CSS 变量。代码检查规则强制仅使用令牌的颜色,避免硬编码值进入代码库。

常见问题解答

「Tailwind、CSS 变量与 CSS-in-JS 中的令牌」课时是免费的吗?

是的 — 「Tailwind、CSS 变量与 CSS-in-JS 中的令牌」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 React Academy 课程的其余内容,请升级到 CoddyKit PRO。 React Academy 课程共包含 4 节课。

「Tailwind、CSS 变量与 CSS-in-JS 中的令牌」这节课中我会学到什么?

将生成的令牌集成到 Tailwind 配置、CSS 自定义属性以及 Emotion 或 styled-components 主题中。 你通过在浏览器中直接运行的动手代码来练习 React Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 React Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 React Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「Tailwind、CSS 变量与 CSS-in-JS 中的令牌」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 React Academy 课中编写并运行代码吗?

能。每节 React Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是设计令牌,以及它们为何重要
  2. Style Dictionary:转换与生成令牌
  3. Tailwind、CSS 变量与 CSS-in-JS 中的令牌
  4. 多主题与多品牌令牌架构
← 返回 React Academy