elementPlus自定义主题

问题背景

1.实际需求就是UI会有一套属于自己的颜色体系,其实跟element默认的蓝色风格肯定是不同的。我们肯定是需要通过自定义主题色来修改,而不是使用组件的样式覆盖去修改,因为那样做,工作量实在是太多了。
2.搜索了挺多文章,但是内容挺乱的, 反正就是各种东西杂在一起。还得自己摸索。
3.实际上自定义主题跟你elementPlus的导入方式是有关系的,但是很多文章根本不说自己的导入方式,反正修改好了自己项目中主题色就发出来了。

效果:把默认的蓝色更改成了绿色
image.png

1.完整导入自定义主题(如果你是完整导入element-plus,看这个)

a.完整导入elementPlus
image.png
b.自定义主题,在assets下的css中写一个element.scss文件
image.png
c.安装scss用于解析scss文件

npm i sass -D

d.在main.ts中导入你写的scss文件
1.注意这里需要把原来导入element-plus的css文件注释掉
2.把自己的样式文件引入进来
image.png

import { createApp } from 'vue'

  import App from './App.vue'
  import ElementPlus from 'element-plus'
  //引入element-plus相关样式
  // import 'element-plus/dist/index.css'
  // 引入覆盖的scss样式
  import './assets/css/element.scss'

  const app = createApp(App)
  app.use(ElementPlus)

  app.mount('#app')

demo地址:https://gitee.com/rui-rui-an/vue3elementstyle

2.按需导入elementPlus自定义主题(如果你是按需导入的,看这个)

a.按需导入elementPlus

image.png

b.自定义主题,在assets下的css中写一个element.scss文件
image.png
c.安装scss用于解析scss文件

npm i sass -D

d.将scss文件在vue.config.ts中引入
注意这里有两个需要配置的地方,缺一不可。

image.png

解析你的scss文件

css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/assets/css/element.scss" as *;`,
      },
    },
  },

按需导入时加载的是组件的sass文件,才能被你写的scss覆盖

 Components({
      resolvers: [ElementPlusResolver({ importStyle: "sass" })],
    }),
demo地址:https://gitee.com/rui-rui-an/vue3elementstyle2

3.手动导入element-Plus自定义主题

a.安装手动导入的包

npm i unplugin-vue-components unplugin-element-plus -D

b.在vue.config.ts中配置

import ElementPlus from 'unplugin-element-plus/vite'
plugins: [
  vue(),
  ElementPlus({ useSource: true,})
  // ...
],

image.png
c.手动导入组件并注册
image.png
c.自定义主题,在assets下的css中写一个element.scss文件
image.png
d.将scss文件在vue.config.ts中引入

plugins: [
    vue(),
    ElementPlus({ useSource: true,})
    // ...
  ],
css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/assets/css/element.scss" as *;`,
      },
    },
  },

image.png

demo地址:https://gitee.com/rui-rui-an/vue3elementstyle3

哪有什么爱不爱写文章,脑子笨而已

  • 17
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Element Plus提供了一键换肤的功能,可以通过自定义主题色来改变项目的外观。在Vue3中使用Element Plus进行换肤的过程可以通过修改代码文件来实现。 首先,在layout/index.vue文件中,可以看到通过监听主题的变化来加载对应的主题样式。通过设置document.documentElement的style属性和body元素的class属性来改变页面的主题样式。 其次,在layout/header.vue文件中,可以看到通过el-dropdown和el-dropdown-menu实现了一个下拉菜单,用于选择不同的主题。每个主题都对应着一个颜色和一个标签,在点击菜单项时可以触发handleCommandTheme方法来切换主题。 通过修改这些代码文件中的相关部分,你可以自定义Element Plus的主题色,并实现一键换肤的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue3+element-plus自定义主题色,一键换肤](https://blog.csdn.net/wuufeii/article/details/120038295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue3 + element-plus 实现一键换肤](https://blog.csdn.net/maoeye283301717/article/details/128149978)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值