最近开发一个项目中遇到一个切换主题皮肤的需求,特地将开发流程整理出来供大家一起探讨学习。
首先我们要先现在src文件下的style里编写项目需求的scss文件,这个过程相当恶心,而且项目经理给了几套颜色就得写几套,个人建议纸style里面建一个新的文件夹存放你写的样式。
值得注意的是编写scss文件的时候我们得在所以的css样式外层写一个class选择器将所有的样式包裹其中。
如图所示,
.theme-bule{
}
.theme-bule{}将所有的样式都包裹其中的,这一步很重要,这个名字也不要乱取,要做到见名知其意,然后项目需要的其他主题颜色也用相同的方式写好,接着在这个样式文件夹里建一个(index.scss)文件将所以样式引出,
接着在style文件夹下找到一个一个(index.scss)的文件[ps:这里的index.scss文件和你建的那个主题颜色文件夹下的index.scss文件是不一样的哈],这个index.scss文件是element-admin框架自带的,目的是将所有样式引入到(main.js)文件里面全局生效的,接下来我们需要在utils文件里面封装一个设置主题的方法,很简单,就说给页面body起动态class名字的,刚刚我在主题颜色css样式最外面包裹的那个class就会动态替换以达到换皮肤的效果。
有了这一步完全还是不够的,为了让主题颜色能够保存不变,我选择了存储在localStorage,为此我特地封装了一个设置localStorage方法和获取localStorage方法
/**
* 存储localStorage
*/
export const setStore = (params = {
}) => {
let {
name,
content,
type,
} =