ant-design-vue运行时动态切换主题色
1.创建项目
使用vue-cli V3.0+创建项目
vue create antd-vue-theme-demo
选择css预处理器(其他的根据项目所需选择)
由于ant-design-vue的样式使用的是less作为开发语言,所以这里我们选择Less
其他的根据自己的需要配置即可,创建完成
注意:项目创建完成后,需要将less的版本号改成3.0以下,否则后面再更改主题时会出错,这里改成了2.7.2
改完后保存,并重新下载依赖
yarn install
下载完后启动项目
yarn serve
在浏览器输入localhost:8080就可以看到创建好的项目
项目已经启动成功,接下来ant-design-vue
2.安装ant-design-vue
yarn add ant-design-vue
然后在main.js中添加所需的antd组件
注意:ant-design-vue支持完整引入和按需加载,这里我们不要用完整引入,后面会讲官方建议的按需引入babel-plugin-import
在HelloWorld.vue中使用组件,删除其他不必要的代码,然后添加一个按钮
重新启动项目,刷新浏览器,即可看到默认主题的按钮
3.安装babel-plugin-import
可以使用 babel-plugin-import 的方式按需引入组件(官方推荐)
yarn add babel-plugin-import
在babel.config.js中添加配置
module.exports = {
presets: [
'@vue/app'
],
plugins: [
["import", {
libraryName: "ant-design-vue",
libraryDirectory: "es",
style: true
}]
]
}
定制主题(静态)
在项目根目录下新建文件vue.config.js,添加如下代码
// vue.config.js
module.exports = {
css: {
loaderOptions: {
less: {
modifyVars: {
"primary-color": "#1DA57A",
"link-color": "#1DA57A",
"border-radius-base": "2px"
},
javascriptEnabled: true
}
}
}
};
保存重启并访问页面后就可以看到定制的主题了
但官方提供的这种方式只能在编译时改变主题,无法在运行性动态切换。下面就是本文的重点,如何实现在运行时动态切换主题。
提取antd的less变量文件 我们的思路就是提取ant-design-vue中所有的less代码汇总到一个文件中,然后在index.html页面中直接引用,最后使用less.js中的modifyVars方法修改主题变量,这样antd的样式就不会被编译,实现运行时动态切换。
4.【重点】安装antd-theme-webpack-plugin
1.首先安装提取less文件的插件antd-theme-webpack-plugin
yarn add antd-theme-webpack-plugin
2、修改vue.config.js,配置并使用插件
注:可以参考一下两个网址
1.https://github.com/mzohaibqc/antd-theme-webpack-plugin
2.https://medium.com/@mzohaib.qc/ant-design-dynamic-runtime-theme-1f9a1a030ba0
3.新建文件variables.less、index.less,options 中的路径一定要和实际项目一致
index.less可以为空
variables.less文件中添加主题变量
@import "~ant-design-vue/lib/style/themes/default.less";
@primary-color: #992777;
4.然后yarn serve 运行项目就可以在你设置的目录下看到提取的less文件了
color.less文件已经拿到,接下来就好办了
5.定制主题
1.修改index.html(注意红框内)
2.使用window.less.modifyVars()方法修改主题
3.效果
4.最终效果
获取更多优质内容,请关注【青年码农】
- PHP中用PDO查询Mysql来避免SQL注入风险的方法
- 如果你再单身100年,你可能就会有一位机器人女友与你结婚生子
- 域名peza.com结拍 持有者身份未明
- 不用@微信官方,教你写头像戴圣诞帽的程序
- 云数据-欲练神功必先写文档
- ALM损坏后的恢复步骤
- 2020年180万人将被人工智能取代 制造业首当其冲
- SEO之404页面应该怎么做?
- AI到底是个什么鬼?
- Python数据挖掘学习路线是什么?学习Python学什么?
- 人脸智慧时尚店落地广深,微信支付赋能智慧零售
- 基层医疗破局关键:从医疗SaaS三大未来趋势说起
- 无数据库权限下载文献攻略大全
- 学 Python 就是为了当程序员?不止一种可能性
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- koa框架实现微信公众号回复用户小程序卡片
- frida实战笔记
- 让项目效果更酷!ThingJS地图新功能——3D线条渲染
- 重磅来袭:腾讯云ClickHouse支持数据均衡服务
- 聊聊claudb的set command
- Flutter通过BasicMessageChannel与Android iOS 的双向通信
- MySQL案例:binlog_row_image如何取舍
- “青柠日报”小程序
- 2020年学习Python-爬取英雄联盟皮肤
- R语言meta分析(10)功能强大的metafor
- Python保留字总结
- Python进阶 | 五分钟带你弄懂迭代器与生成器,夯实代码能力
- [Go]GO语言实战项目-gin框架上传图片文件
- [Go] Golang练习项目-GO语言实现选择排序
- 设计模式~策略模式