Figma Dev Mode导出的组件样式在React中不生效怎么办?

Mr-景叶 阅读 75

我用Figma Dev Mode导出的按钮组件CSS,在React项目里直接复制粘贴后样式完全没效果。按钮显示成默认的方形,颜色也没变化。之前按照文档配置了正确的类名,但检查元素发现CSS变量好像没被解析?

这是我的测试代码:


import styles from './Button.module.css';

function Button() {
  return (
    <button className={${styles.button} ${styles['button--primary']}}>
      Click me
    </button>
  );
}
export default Button;

导出的CSS里确实有对应的.button和.button–primary类,但浏览器里这些类的样式都显示为灰色,像是未应用的状态。我尝试过清除缓存、重新导出文件,甚至把CSS直接写在组件里都没用。是不是哪里配置漏掉了?

我来解答 赞 16 收藏
二维码
手机扫码查看
2 条解答
UE丶志红
这个问题很常见,我先说根本原因:Figma Dev Mode 导出的 CSS 依赖大量 CSS 变量,但你可能只复制了类名样式,没把变量定义一起拿过来。

让我帮你一步步排查。

先看看你从 Figma 导出的 CSS 文件内容,大概会长这样:

/* 这是 Figma 导出的典型格式 */
.button {
background-color: var(--figma-color-bg-primary);
border-radius: var(--figma-radius-md);
padding: var(--figma-spacing-md) var(--figma-spacing-lg);
}

.button--primary { background-color: var(--figma-color-brand);
color: var(--figma-color-text-on-brand);
}


问题就在这里 — 这些 var(--figma-xxx) 变量根本没定义,所以浏览器解析不出来,样式自然不生效。

解决方案有两个思路:

思路一:手动定义这些变量

打开你的 CSS 文件,在顶部把变量定义加进去:

/* Button.module.css */

/* 先定义 Figma 导出的变量 */
:root {
--figma-color-bg-primary: #3b82f6;
--figma-color-bg-secondary: #f3f4f6;
--figma-radius-md: 8px;
--figma-spacing-md: 12px;
--figma-spacing-lg: 24px;
--figma-color-brand: #2563eb;
--figma-color-text-on-brand: #ffffff;
}

.button {
background-color: var(--figma-color-bg-primary);
border-radius: var(--figma-radius-md);
padding: var(--figma-spacing-md) var(--figma-spacing-lg);
border: none;
cursor: pointer;
font-size: 16px;
}

.button--primary {
background-color: var(--figma-color-brand);
color: var(--figma-color-text-on-brand);
}


变量值从哪里来?你在 Figma 里选中对应元素,右侧面板能看到具体的颜色、间距数值,照着填就行。

思路二:用 Figma 的 Design Token 插件导出变量

手动一个一个填太累了。你可以装 Figma 的 Token Studio 插件,它能直接把设计稿里的颜色、间距这些生成成 CSS 变量文件,导出后直接在项目里 import 就行,一劳永逸。

再提醒一个 CSS Modules 的坑:

你代码里这样写是对的:

<button className={${styles.button} ${styles['button--primary']}}>


但如果 Figma 导出的原始 CSS 里用的是 button.button--primary 这种后代选择器,在 CSS Modules 下会出问题,因为类名被哈希化了。选择器在编译后的 DOM 里根本找不到对应的元素。

所以导出的 CSS 最好检查一下,确保用的是单个类名,而不是复杂的选择器链。



总结一下:先去 Figma 导出的 CSS 文件里,把所有 var(--xxx) 变量复制出来,在你的 CSS 文件顶部定义一遍,样式就能生效了。变量值就是 Figma 面板里显示的那些颜色和数值。
点赞
2026-03-11 10:06
南宫云霞
你这个问题大概率是CSS Modules的类名没处理对。Figma导出来的CSS变量可能依赖全局作用域,但你在React里用了CSS Modules,类名被自动重命名了,所以样式挂不上。

把CSS文件改成普通的全局样式引入试试,像这样:

import './Button.css';

function Button() {
return (
<button className="button button--primary">
Click me
</button>
);
}
export default Button;


如果非要用CSS Modules,就把Figma导出的CSS变量手动改成内联样式或者全局样式,应该能用。记得检查一下导出的CSS里有没有:export这种语法,有的话删掉,那不是标准CSS。
点赞 11
2026-02-16 09:04