欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Vue主题色实现

Vue主题色实现

2025/9/19 11:55:56 来源:https://blog.csdn.net/qq_44242707/article/details/142328667  浏览:    关键词:Vue主题色实现

主题色实现

情境

配置平台支持多个主题色的选择,用户可通过在配置平台选择项目主题色。前端项目在骨架屏加载页面获取配置信息,设置项目主题色,实现同个项目不同主题色渲染的需求

实现

1.定义主题色变量

不同主题色根据不同js文件划分定义,根据不同主题区别设置对应的样式变量

// blueTheme.js
export default {'main-color': '#314360','main-color-8': '#314360CC','main-color-6': '#31436099','main-color-1': '#3143601A',...
}

2.定义主题色切换函数

封装主题色切换函数,用于根据配置参数切换主题色变量

// triggerTheme.js
// 目前支持五种主题色选择
import blueTheme from './blueTheme'
import orangeTheme from './orangeTheme'
import redTheme from './redTheme'
import greenTheme from './greenTheme'
import blackTheme from './blackTheme'let targetTheme = {}export function triggerTheme(themeName) {switch(themeName) {case 'orange':targetTheme = orangeThemebreakcase 'red':targetTheme = redThemebreakcase 'green':targetTheme = greenThemebreakcase 'black':targetTheme = blackThemebreakdefault:targetTheme = blueThemebreak}for (let prop in targetTheme) {document.body.style.setProperty(`--${prop}`, targetTheme[prop])}
}// 支持部分API渲染相关函数式调用时主题色获取
export function getColor(prop) {return targetTheme[prop]
}

3.骨架屏页面切换主题色

需要在类似加载、骨架屏页面或者无主题色页面切换主题色,避免主题色切换造成的页面异常

// skeleton.vue
import { triggerTheme } from '@/theme/triggerTheme'
created() {this.init()
},
async init() {let resp = await getTenantInfo()triggerTheme(resp.data.theme)
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com