Vue + Scss 动态切换主题颜色实现换肤
根据预设的配色方案,在前端实现动态切换系统主题颜色。
大概的思路就是给html根标签设置一个data-theme属性,然后通过js切换data-theme的属性值,Scss根据此属性来判断使用对应主题变量。这里可以选择持久化Vux或接口来保存用户选择的主题。
一、首先需要给项目下载配置Scss
- 安装依赖
npm install node-sass sass-loader --save-dev
- 找到build中webpack.base.conf.js,在rules中添加scss规则
{
test: /\.scss$/,
loaders: ['style', 'css', 'sass'v]
}
- 在vue文件中使用
<style lang='scss' scoped>
</style>
二、在vue项目全局中引入scss
- 安装 sass-resources-loader
npm install sass-resources-loader --save-dev
- 然后修改build中的utils.js
将
scss: generateLoaders('sass')
修改为:
scss: generateLoaders('sass').concat(
{
loader: 'sass-resources-loader',
options: {
//你自己的scss全局文件的路径
resources: path.resolve(__dirname, '../src/style/_common.scss')
}
}
)