设计协作 · Customized Themes
定制主题

定制方式

Semi 提供完整的主题配置流程,既保持颜色、字体、圆角、阴影、布局等在视觉语言上的统一连贯,又能满足业务和品牌多样化的视觉需求。
你可以前往 Semi 设计系统管理站点 (又称DSM) 选择或者创造一套符合你的需求的主题风格。
目前DSM支持全局、组件级别的样式定制,并在 Figma 和线上代码之间保持同步。使用 DSM,将 Semi Design 适配为 Any Design
  • 🎨 全局样式 变量管理
    支持色盘、圆角、字体排版、描边、阴影的可视化编辑预览
  • 🔁 设计变量双向同步
    设计变量可以在 Web 端与 Figma 插件侧双向实时同步。
  • 🧩 深度的组件样式定制
    对单个组件的样式进行深度定制,例如组件的 高度 / 间距等样式定制;

创造主题

你也可以从已发布的主题出发,或者选择 立即创造 来创造一个新的主题,也可以更新已发布的主题。选取主色后,我们的颜色算法会为你生成一套高可用的色盘。在此基础上你可以修改通用变量并产出对应的主题包。一键发布即可推送到 npm 中。
主题创建
主题编辑
基础色调整
色盘调整

接入主题

创建完成主题下载后,使用 Semi 插件可以快速地接入选择的主题。每种构建工具都可以通过下面三种方式自定义主题,优先级由低到高
  1. 通过 DSM 生成的 npm 主题包
  2. 通过项目内本地的 Scss 文件
  3. 通过插件参数传入键值对覆盖

使用 Webpack 作为构建工具时

对于使用 Webpack 的用户,可以使用 SemiWebpackPlugin 来接入定制主题。
安装:yarn add -D @douyinfe/semi-webpack-pluginnpm i -D @douyinfe/semi-webpack-plugin

通过 npm 包接入

通过本地 Scss 文件

通过参数覆盖变量

替换 CSS 选择器前缀

Semi Design 的 CSS 选择器默认以 semi 作为前缀(如 .semi-button),可以通过 prefixCls 替换:
替换后选择器将变为 .custom-button

使用 Vite 作为构建工具时

对于使用 Vite 的用户,可以使用 SemiVitePlugin 来接入定制主题。
安装:yarn add -D @douyinfe/semi-vite-pluginnpm i -D @douyinfe/semi-vite-plugin

通过 npm 包接入

通过本地 Scss 文件

通过参数覆盖变量

替换 CSS 选择器前缀

替换后选择器将变为 .custom-button
同时支持 cssLayer: true(将编译产物包裹在 @layer semi { ... } 中)和 omitCss: true(注释掉 semi 包内的 .css 引入,适用于 Next.js 等不允许从 node_modules 引入全局 CSS 的场景)。
更多工程化方案(如 Next.js)的主题接入,可参考 DSM 文档

使组件级变量的改动生效

如果在定制主题的过程中你修改了组件级别的变量,theme 字段需要用如下配置使改动生效:

更新主题

Semi 在开发过程中,有可能出于设计考虑更新或者添加部分通用变量。如果你使用的是定制主题,当 Semi 发布了新的通用变量后(我们会在更新日志里标注),我们建议你前往 Semi DSM 更新该主题(大部分情况下仅需重新执行一次发布操作即可)