| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 | 
							- import colors from 'css-color-function'
 
- const lightConfig = {
 
-     'dark-2': 'shade(20%)',
 
-     'light-3': 'tint(30%)',
 
-     'light-5': 'tint(50%)',
 
-     'light-7': 'tint(70%)',
 
-     'light-8': 'tint(80%)',
 
-     'light-9': 'tint(90%)'
 
- }
 
- const darkConfig = {
 
-     'light-3': 'shade(20%)',
 
-     'light-5': 'shade(30%)',
 
-     'light-7': 'shade(50%)',
 
-     'light-8': 'shade(60%)',
 
-     'light-9': 'shade(70%)',
 
-     'dark-2': 'tint(20%)'
 
- }
 
- const themeId = 'theme-vars'
 
- /**
 
-  * @author Jason
 
-  * @description 用于生成elementui主题的行为变量
 
-  * 可选值有primary、success、warning、danger、error、info
 
-  */
 
- export const generateVars = (color: string, type = 'primary', isDark = false) => {
 
-     const colos = {
 
-         [`--el-color-${type}`]: color
 
-     }
 
-     const config: Record<string, string> = isDark ? darkConfig : lightConfig
 
-     for (const key in config) {
 
-         colos[`--el-color-${type}-${key}`] = `color(${color} ${config[key]})`
 
-     }
 
-     return colos
 
- }
 
- /**
 
-  * @author Jason
 
-  * @description 用于设置css变量
 
-  * @param key css变量key 如 --color-primary
 
-  * @param value css变量值 如 #f40
 
-  * @param dom dom元素
 
-  */
 
- export const setCssVar = (key: string, value: string, dom = document.documentElement) => {
 
-     dom.style.setProperty(key, value)
 
- }
 
- /**
 
-  * @author Jason
 
-  * @description 设置主题
 
-  */
 
- export const setTheme = (options: Record<string, string>, isDark = false) => {
 
-     const varsMap: Record<string, string> = Object.keys(options).reduce((prev, key) => {
 
-         return Object.assign(prev, generateVars(options[key], key, isDark))
 
-     }, {})
 
-     let theme = Object.keys(varsMap).reduce((prev, key) => {
 
-         const color = colors.convert(varsMap[key])
 
-         return `${prev}${key}:${color};`
 
-     }, '')
 
-     theme = `:root{${theme}}`
 
-     let style = document.getElementById(themeId)
 
-     if (style) {
 
-         style.innerHTML = theme
 
-         return
 
-     }
 
-     style = document.createElement('style')
 
-     style.setAttribute('type', 'text/css')
 
-     style.setAttribute('id', themeId)
 
-     style.innerHTML = theme
 
-     document.head.append(style)
 
- }
 
 
  |