欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

element ui自定义主题

程序员文章站 2022-06-07 18:08:40
...

方式一:添加一个css文件,重写样式,覆盖element ui样式

方式二:修改变量、重新编译引入

  1. 首先下载主题生成工具
$ npm install element-theme -g

这样就可以使用et命令了

  1. 下载element-theme-chalk主题
npm install element-theme-chalk -D
  1. 根据element-theme-chalk主题,生成主题变量文件,默认输出到 element-variables.scss文件中

注意:et命令需要在项目根目录下执行和node_modules同级,就是为了能找到element-theme-chalk

默认生成,element-variables.scss

$ et -i
> ✔ Generator variables file

当然也可以自定义文件名,如:theme-purple.scss

$ et -i theme-purple.scss 
// $ et -i ./src/theme-purple.scss 在指定目录下生成
  1. 编译生成.css文件,默认情况下编译的主题目录是放在 ./theme 下
$ et

如果变量文件不在项目根目录下,可以指定路径

$ et -c ./src/theme-purple.scss

另外也可以指定输出路径

$ et -c ./src/theme-purple.scss -o ./src/theme

最后在main.js引入css文件就行了。

import Vue from 'vue'
import Element from 'element-ui'
import './theme/index.css'

Vue.use(Element)

方式三:scss变量覆盖

  1. 生成theme-purple.scss主题变量文件
$ et -i theme-purple.scss
  1. 生成theme-purple.scss文件后,需要修改font路径,至于颜色值修改成自己需要的就行了
/* 改变主题色变量 */
$--color-primary: teal;

/* 改变 icon 字体路径变量,必需 */
$--font-path: '~element-ui/lib/theme-chalk/fonts';

@import "~element-ui/packages/theme-chalk/src/index";
  1. 在main.js 中引入修改后的theme-purple.scss文件
import Vue from 'vue'
import Element from 'element-ui'
import './theme-purple.scss'

Vue.use(Element)

方式四:按需引入

  1. 按需引入需要借助babel-plugin-component(http://element.eleme.io/#/zh-CN/component/quickstart
$ npm install babel-plugin-component -D
  1. 修改.babelrc文件,指定 styleLibraryName 路径为自定义主题相对于 .babelrc 的路径,注意要加 ~。
{
  "presets": [["es2015", { "modules": false }]],
  "plugins": [
    [
      "component",
      {
        "libraryName": "element-ui", // 组件库名
        // "styleLibraryName": "theme-chalk" // 主题文件名
        "styleLibraryName": "~theme" // 会引入./theme/index.css
      }
    ]
  ]
}
  1. 在main.js中引入
import Vue from 'vue';
import { Button, Select } from 'element-ui';
import App from './App.vue';

Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
/* 或写为
 * Vue.use(Button)
 * Vue.use(Select)
 */

new Vue({
  el: '#app',
  render: h => h(App)
});

官方介绍:http://element.eleme.io/#/zh-CN/component/custom-theme