当前位置:   article > 正文

ant-design-vue切换主题+换肤+自定义换肤+less动态换肤_ant-design-vue 在线换肤

ant-design-vue 在线换肤

换肤核心思路:

  1. 用lessjs动态改变皮肤变量
  2. window.less.modifyVars(
  3. {
  4. "primary-color": "red",
  5. })

ant换肤的思路:

用vue文件流,读取ant的样式,然后写到一个新的less文件中,然后再把自己的less加到最终的less文件,然后引用这个大文件就行了

安装依赖

npm i antd-theme-generator --save

main.js 引用ant的less样式

  1. //引入Antd
  2. import Antd from 'ant-design-vue';
  3. import "ant-design-vue/dist/antd.less";

 换肤的核心代码结构

 theme.js

  1. const fs = require("fs");
  2. const path = require('path');
  3. const { generateTheme } = require('antd-theme-generator');
  4. const options = {};
  5. //生成的theme.less文件的位置
  6. const outputFilePath = path.join(__dirname, '../../../static/theme.less');
  7. //自定义样式
  8. const cusCssFilePath = path.join(__dirname, '../cus-theme.less');
  9. generateTheme({
  10. //node_modules中antd的路径
  11. antDir: path.join(__dirname, '../../../node_modules/ant-design-vue'),
  12. //styles对应的目录路径,需要和下面的variables.less在一个文件夹
  13. stylesDir: path.join(__dirname, '../'),
  14. //less变量的入口文件,variables.less里面定义的变量,必须在themeVariables里面定义
  15. varFile: path.join(__dirname, '../variables.less'),
  16. //您要动态更改的变量列表
  17. themeVariables: ['@primary-color', '@header-item-hover-color', '@header-back-color'],
  18. outputFilePath: outputFilePath,
  19. customColorRegexArray: [/^color\(.*\)$/],
  20. })
  21. .then(res => {
  22. console.log('配置主题成功');
  23. //自定义样式与ant主题样式合并
  24. //读取提取过的ant样式
  25. const themeCss = fs.readFileSync(outputFilePath).toString();
  26. //读取自定义的CSS
  27. const cusCss = fs.readFileSync(cusCssFilePath).toString();
  28. fs.writeFileSync(outputFilePath, themeCss + cusCss);
  29. //重新覆盖themeCss
  30. console.log(`
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/108989?site
    推荐阅读
    相关标签