跳转到内容

主题配置

典型场景

Trantor 可通过少量的 sass 配置,生成覆盖全局的 css 文件,自定义统一工作台UI主题风格,适应不同项目的需求。

1.jpg

实现方式

1. 基本原理

由于 Trantor 前端是基于 nusi 组件库,样式生成的流程也主要在 nusi 工程中:

2.jpg

2. 如何自定义主题 scss 配置文件

以下配置将整个 nusi 主题颜色变为绿色,对辅助色做重新定义,以及对细节样式进行覆盖

// -------- 配置变量覆盖 --------
$primary: #16a085;
$primary-hover: #0da44d;
$blue: #3498dc;
$green: #2ecc71;
$red: #f04844;
$yellow: #ffa847;
// // -------- 细节样式覆盖 --------
.pk-content-container-main {
background-color: white !important;
}
// layout底色
.pk-layout-content {
background-color: #f8f8f8;
}

点击这里可以参考更复杂的自定义 scss 示范:scss 配置

注意:配置 scss 文件本身需要时可以独立编译的 sass,引用的变量需要在自己内部也有定义,也不能 import 外部 scss。

3. 如何生成自定义主题 css

  1. 创建一个新的文件夹,假设名字叫做 custom-theme,创建一个 package.json 文件,复制以下内容
{
"name": "custom-theme",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"transform": "nusi-theme-generator transform",
"transform-custom": "nusi-theme-generator transform -f customfolder",
"origin": "nusi-theme-generator origin"
},
"author": "",
"license": "ISC",
"dependencies": {
"@terminus/nusi-theme-generator": "^0.1.2",
"commander": "^5.1.0"
}
}
  1. 执行 npm i 安装。注意@terminus 的包需要在本机用户目录下的.npmrc 中指定 registry,也可以通过 npm set 命令指定: @terminus:registry=[https://registry.npm.terminus.io/](https://registry.npm.terminus.io/)
  2. 执行 npm run origin,会生成一个 origin 文件夹,三个文件分别是\_theme_config.scss,\_theme.scss,\_global.scss,主要参考前两个文件看有哪些可以配置的项目
  3. 创建一个 theme 文件夹,将自定义 scss 文件放进来(可以有多个)
  4. 执行 npm run transform,脚本会根据 theme 文件夹中所有的 scss 文件生成对应的主题文件 css,xxx.scss => xxx.css
  5. 若想要指定文件夹,可按照 package.json 中的 transform-custom 进行改动。

4. 通过配置挂载自定义主题 css

  1. 将 css 文件传到 cdn 中
  2. 生产环境在工作台容器 dice 配置相关变量
  3. 页面在打开时会自动加载 PRESET_CSS_URL 指向的 css 文件,STYLE_PRIMARY_COLOR 中填写 rgb 格式的主题色,用于 css 无法覆盖的代码样式部分。
{
"PRESET_CSS_URL": "https://terminus-trantor.oss-cn-hangzhou.aliyuncs.com/style-override/sgcc.console.css",
"STYLE_PRIMARY_COLOR": "rgb(22,160,133)"
}