[vue3]定制elementPlus主题

elementUI默认提供了一套主题色,并且css明明采用BEM风格,可以方便的覆盖样式。

但是如果整个项目主题色都不同,那么一个个去覆盖工作量太大了。

我们可以通过一些方法来批量改变样式变量。详细见elementUI官方文档

elementPlus主题更换-官方文档

这里我们使用sass来实现

首先我们要安装sass

npm i sass -D

而后准备定制化的样式文件,在styles目录下创建element/index.scss

这个文件通常是由UI设计师提供

/* 只需要重写你需要的即可 */
@forward 'element-plus/theme-chalk/src/common/var.scss' with (
  $colors: (
    'primary': (
      // 主色
      'base': #27ba9b,
    ),
    'success': (
      // 成功色
      'base': #1dc779,
    ),
    'warning': (
      // 警告色
      'base': #ffb302,
    ),
    'danger': (
      // 危险色
      'base': #e26237,
    ),
    'error': (
      // 错误色
      'base': #cf4444,
    ),
  )
)

安装官方的配置文档来导入配置,这里我将修改的部分又注释包起来,方便观看

import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// 导入对应包
// 此处为需要修改的地方
import ElementPlus from 'unplugin-element-plus/vite'

export default defineConfig({
  plugins: [
    vue(),
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      // 这里一定要应用sass,不然无法成功!!
      resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
    }),
    // 按需定制主题配置
    // 此处为需要修改的地方
    ElementPlus({
      useSource: true,
    }),
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
// 此处为需要修改的地方
  css: {
    preprocessorOptions: {
      scss: {
        // 自动导入定制化样式文件进行样式覆盖
        additionalData: `
          @use "@/styles/element/index.scss" as *;
        `,
      }
    }
  }
})

配置完成

如果你的配置没有成功,请检查这三个部分:

1.是否安装了scss、ElementUI

2.index.scss配置是否正确

3.  Components({
      // 这里一定要应用sass,不然无法成功!!
      resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
    }),

这里是否配置了scss

参考引用中未提及在Vue 3 + TypeScript项目中ElementPlus主题定制的方法。不过一般来说,在Vue 3 + TypeScript项目中对ElementPlus进行主题定制可以按照以下常见步骤进行: ### 安装必要依赖 在项目根目录下使用以下命令安装 `sass`,因为ElementPlus主题定制通常使用Sass进行样式定制: ```bash npm install sass -D ``` ### 创建自定义样式文件 在项目的 `src` 目录下创建一个新的样式文件,例如 `styles/element-variables.scss`,此文件用于覆盖ElementPlus的默认变量。以下是一个简单示例: ```scss // 改变主题色 $--color-primary: #008c8c; // 引入ElementPlus默认样式 @import "element-plus/packages/theme-chalk/src/index"; ``` ### 在项目中引入自定义样式 在 `src` 目录下的 `main.ts` 文件中引入自定义的样式文件,而不是直接引入ElementPlus默认的CSS文件: ```typescript import { createApp } from 'vue'; import App from './App.vue'; import ElementPlus from 'element-plus'; import './styles/element-variables.scss'; const app = createApp(App); app.use(ElementPlus); app.mount('#app'); ``` ### 按需定制其他变量 根据ElementPlus官方文档提供的所有可定制变量,在 `element-variables.scss` 文件中对其他变量进行覆盖,以实现更全面的主题定制。例如: ```scss // 改变按钮圆角 $--button-border-radius: 4px; // 改变输入框的高度 $--input-height: 32px; // 引入ElementPlus默认样式 @import "element-plus/packages/theme-chalk/src/index"; ``` ### 注意事项 - 确保 `sass` 版本兼容,避免出现编译错误。 - 若要进一步定制,可查看ElementPlus官方文档获取更多可定制变量的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林总肿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值