ant-design-vue运行时动态切换主题色(1)

简介: ant-design-vue运行时动态切换主题色(1)

1.创建项目

使用vue-cli V3.0+创建项目

vue create antd-vue-theme-demo

复制

image.png

选择css预处理器(其他的根据项目所需选择)

image.png

由于ant-design-vue的样式使用的是less作为开发语言,所以这里我们选择Less

image.png

其他的根据自己的需要配置即可,创建完成

image.png

注意:项目创建完成后,需要将less的版本号改成3.0以下,否则后面再更改主题时会出错,这里改成了2.7.2

image.png

改完后保存,并重新下载依赖

yarn install

复制

下载完后启动项目

yarn serve

复制

在浏览器输入localhost:8080就可以看到创建好的项目

image.png

项目已经启动成功,接下来ant-design-vue


2.安装ant-design-vue

yarn add ant-design-vue

复制

然后在main.js中添加所需的antd组件

注意:ant-design-vue支持完整引入和按需加载,这里我们不要用完整引入,后面会讲官方建议的按需引入babel-plugin-import

image.png

在HelloWorld.vue中使用组件,删除其他不必要的代码,然后添加一个按钮

image.png

重新启动项目,刷新浏览器,即可看到默认主题的按钮

image.png

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
      }
    }
  }
};

复制

保存重启并访问页面后就可以看到定制的主题了

image.png

但官方提供的这种方式只能在编译时改变主题,无法在运行性动态切换。下面就是本文的重点,如何实现在运行时动态切换主题。

提取antd的less变量文件 我们的思路就是提取ant-design-vue中所有的less代码汇总到一个文件中,然后在index.html页面中直接引用,最后使用less.js中的modifyVars方法修改主题变量,这样antd的样式就不会被编译,实现运行时动态切换。

相关文章
|
5月前
|
JavaScript 前端开发
Ant Design Vue 从V3到V4的升级原来进行了这个技术的调整
Ant Design Vue 从V3到V4的升级原来进行了这个技术的调整,你有了解吗?
370 0
|
2月前
|
JavaScript 前端开发 Shell
实现在vue中自定义主题色彩切换
实现在vue中自定义主题色彩切换
41 0
|
3月前
|
前端开发 JavaScript
vue 一键换肤(切换主题样式)
vue 一键换肤(切换主题样式)
152 0
|
10月前
|
前端开发 JavaScript
Ant-design-vue定制主题色
Ant-design-vue定制主题色
|
5月前
|
JavaScript 前端开发
ant design vue 配置菜单外部打开
ant design vue 配置菜单外部打开
38 0
|
5月前
|
JavaScript 前端开发
【vue2中引入阿里第三方图标库使用自定义的Ant Design Vue组件a-cascader级联选择后缀图标】
【vue2中引入阿里第三方图标库使用自定义的Ant Design Vue组件a-cascader级联选择后缀图标】
394 0
|
前端开发
【React工作记录九十】ant design table实现上下行拖拽功能(类组件)
【React工作记录九十】ant design table实现上下行拖拽功能(类组件)
200 0
|
资源调度 前端开发 JavaScript
ant-design-vue+vite主题切换详细步骤(简单案例)
ant-design-vue+vite主题切换详细步骤(简单案例)
819 0
|
前端开发
【React工作记录六十二】ant design锚点组件
【React工作记录六十二】ant design锚点组件
387 0