element-plus自定义主题色

问题背景

1.实际需求就是UI会有一套属于自己的颜色体系,其实跟element默认的蓝色风格肯定是不同的。我们肯定是需要通过自定义主题色来修改,而不是使用组件的样式覆盖去修改,因为那样做,工作量实在是太多了。

2.搜索了挺多文章,但是内容挺乱的, 反正就是各种东西杂在一起。还得自己摸索。

3.实际上自定义主题跟你elementPlus的导入方式是有关系的,但是很多文章根本不说自己的导入方式,反正修改好了自己项目中主题色就发出来了。

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

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

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

html 复制代码
npm i sass -D

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

vue 复制代码
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地址:gitee.com/rui-rui-an/...

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

a.按需导入elementPlus

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

html 复制代码
npm i sass -D

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

解析你的scss文件

html 复制代码
css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use "@/assets/css/element.scss" as *;`,
      },
    },
  },

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

html 复制代码
 Components({
      resolvers: [ElementPlusResolver({ importStyle: "sass" })],
    }),

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

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

a.安装手动导入的包

vue 复制代码
npm i unplugin-vue-components unplugin-element-plus -D

b.在vue.config.ts中配置

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

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

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

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

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

相关推荐
姜 萌@cnblogs6 分钟前
【实战】深入浅出 Rust 并发:RwLock 与 Mutex 在 Tauri 项目中的实践
前端·ai·rust·tauri
蓝天白云下遛狗13 分钟前
google-Chrome常用插件
前端·chrome
多多*1 小时前
Spring之Bean的初始化 Bean的生命周期 全站式解析
java·开发语言·前端·数据库·后端·spring·servlet
linweidong1 小时前
在企业级应用中,你如何构建一个全面的前端测试策略,包括单元测试、集成测试、端到端测试
前端·selenium·单元测试·集成测试·前端面试·mocha·前端面经
满怀10151 小时前
【HTML 全栈进阶】从语义化到现代 Web 开发实战
前端·html
东锋1.31 小时前
前端动画库 Anime.js 的V4 版本,兼容 Vue、React
前端·javascript·vue.js
满怀10152 小时前
【Flask全栈开发指南】从零构建企业级Web应用
前端·python·flask·后端开发·全栈开发
小杨升级打怪中2 小时前
前端面经-webpack篇--定义、配置、构建流程、 Loader、Tree Shaking、懒加载与预加载、代码分割、 Plugin 机制
前端·webpack·node.js
Yvonne爱编码2 小时前
CSS- 4.4 固定定位(fixed)& 咖啡售卖官网实例
前端·css·html·状态模式·hbuilder
SuperherRo3 小时前
Web开发-JavaEE应用&SpringBoot栈&SnakeYaml反序列化链&JAR&WAR&构建打包
前端·java-ee·jar·反序列化·war·snakeyaml