![]() |
1
lyxxxh2 15 天前
|
2
staceycomcn111 OP @lyxxxh2 组件库按官网那样配置了一套主题,打包后生成的变量已经写死了,使用方使用组件,并且也配置了一套 element-plus 的主题,加载顺序要早,覆盖不了组件库的主题
|
![]() |
3
lyxxxh2 15 天前
|
4
wjk1011 15 天前
没看懂
|
![]() |
5
acthtml 15 天前
也可以直接覆盖 css variables
|
6
staceycomcn111 OP @lyxxxh2 好
|
7
staceycomcn111 OP @lyxxxh2 我实现了!!! 我太激动了
packages/components/theme/var.scss $hl-color-primary: #ffe240 !default; // 保持纯 Sass 变量 packages/components/theme/variables.scss @use './var' as *; // 正确写法:直接使用 Sass 变量,并在根部导出 CSS 变量 // 这个文件用于生成最终的主题 :root{} :root { --hl-color-primary: #{$hl-color-primary}; // 将 Sass 变量值同步到 CSS 变量 } 然后组件库的 scss 使用 变量$hl-color-primary packages/components/theme/hl-base-button.scss @use "./var.scss" as *; .my-button { padding: 8px 16px; border: none; border-radius: 4px; cursor: pointer; &--default { background-color: #f0f0f0; } &--primary { background-color: $hl-color-primary; color: white; } &--success { background-color: #67c23a; color: white; } &--warning { background-color: #e6a23c; color: white; } &--danger { background-color: #f56c6c; color: white; } } 组件库主题就设置好了 用户使用主题时,默认使用的是组件库的主题,也可以替换组件库主题 用户替换主题代码 play/src/styles/hl/index.scss @use 'hl-fe-component/theme/var.scss' with ( $hl-color-primary: pink ); vite.confit.ts css: { preprocessorOptions: { scss: { additionalData: `@use "~/styles/hl/index.scss" as vars;`, }, }, }, 然后 大工告成 |