赞
踩
换肤核心思路:
- 用lessjs动态改变皮肤变量
- window.less.modifyVars(
- {
- "primary-color": "red",
- })
ant换肤的思路:
用vue文件流,读取ant的样式,然后写到一个新的less文件中,然后再把自己的less加到最终的less文件,然后引用这个大文件就行了
安装依赖
npm i antd-theme-generator --save
main.js 引用ant的less样式
- //引入Antd
- import Antd from 'ant-design-vue';
- import "ant-design-vue/dist/antd.less";
换肤的核心代码结构
theme.js
- const fs = require("fs");
- const path = require('path');
-
-
- const { generateTheme } = require('antd-theme-generator');
- const options = {};
- //生成的theme.less文件的位置
- const outputFilePath = path.join(__dirname, '../../../static/theme.less');
- //自定义样式
- const cusCssFilePath = path.join(__dirname, '../cus-theme.less');
-
- generateTheme({
- //node_modules中antd的路径
- antDir: path.join(__dirname, '../../../node_modules/ant-design-vue'),
- //styles对应的目录路径,需要和下面的variables.less在一个文件夹
- stylesDir: path.join(__dirname, '../'),
- //less变量的入口文件,variables.less里面定义的变量,必须在themeVariables里面定义
- varFile: path.join(__dirname, '../variables.less'),
- //您要动态更改的变量列表
- themeVariables: ['@primary-color', '@header-item-hover-color', '@header-back-color'],
- outputFilePath: outputFilePath,
- customColorRegexArray: [/^color\(.*\)$/],
- })
- .then(res => {
- console.log('配置主题成功');
- //自定义样式与ant主题样式合并
- //读取提取过的ant样式
- const themeCss = fs.readFileSync(outputFilePath).toString();
- //读取自定义的CSS
- const cusCss = fs.readFileSync(cusCssFilePath).toString();
- fs.writeFileSync(outputFilePath, themeCss + cusCss);
- //重新覆盖themeCss
- console.log(`声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/108989?site推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。