方式一:通过 element-ui 在线主题生成工具
step1: 下载已经设置好的主题
step2: 解压下载的文件,将 theme文件夹放到项目目录下
step3:将 index.css 引入到main.js中
方式二:通过命令行主题工具
注意:按照以下步骤安装以后,执行初始化变量文件命令 et - i ,如果报了以下错误,可以通过 nvm 安装 node 版本为 11.15.0 后重新执行下列步骤来解决(未找到其他方法 😔 )。 报错信息如下:
1. 安装工具:
npm i element-theme -g
2. 安装白垩主题,可以从 npm 安装或者从 GitHub 拉取最新代码。
# 从 npm
npm i element-theme-chalk -D
# 从 GitHub
npm i https://github.com/ElementUI/theme-chalk -D
3. 初始化变量文件
主题生成工具安装成功后,如果全局安装可以在命令行里通过 et
调用工具,如果安装在当前目录下,需要通过 node_modules/.bin/et
访问到命令。执行 -i
初始化变量文件。默认输出到 element-variables.scss
,当然你可以传参数指定文件输出目录。
et -i [可以自定义变量文件] >
✔ Generator variables file
如果使用默认配置,执行后当前目录会有一个 element-variables.scss
文件。内部包含了主题所用到的所有变量,它们使用 SCSS 的格式定义。大致结构如下:
$--color-primary: #409EFF !default;
$--color-primary-light-1: mix($--color-white, $--color-primary, 10%) !default; /* 53a8ff */
$--color-primary-light-2: mix($--color-white, $--color-primary, 20%) !default; /* 66b1ff */
$--color-primary-light-3: mix($--color-white, $--color-primary, 30%) !default; /* 79bbff */
$--color-primary-light-4: mix($--color-white, $--color-primary, 40%) !default; /* 8cc5ff */
$--color-primary-light-5: mix($--color-white, $--color-primary, 50%) !default; /* a0cfff */
$--color-primary-light-6: mix($--color-white, $--color-primary, 60%) !default; /* b3d8ff */
$--color-primary-light-7: mix($--color-white, $--color-primary, 70%) !default; /* c6e2ff */
$--color-primary-light-8: mix($--color-white, $--color-primary, 80%) !default; /* d9ecff */
$--color-primary-light-9: mix($--color-white, $--color-primary, 90%) !default; /* ecf5ff */
$--color-success: #67c23a !default;
$--color-warning: #e6a23c !default;
$--color-danger: #f56c6c !default;
$--color-info: #909399 !default;
...
4. 修改变量
直接编辑 element-variables.scss
文件,例如修改主题色为红色。
$--color-primary: pink;
5. 编译主题
保存文件后,到命令行里执行 et
编译主题,如果你想启用 watch
模式,实时编译主题,增加 -w
参数;如果你在初始化时指定了自定义变量文件,则需要增加 -c
参数,并带上你的变量文件名。默认情况下编译的主题目录是放在 ./theme
下,你可以通过 -o
参数指定打包目录。
et
> ✔ build theme font
> ✔ build element theme
编译后会在根目录(在未指定编译的主题目录的情况下)下生成一个 theme文件夹,如下:
6. 使用自定义主题
和引入默认主题一样,在代码里直接引用「在线主题编辑器」或「命令行工具」生成的主题的 theme/index.css
文件即可。
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = false;
import ElementUI from 'element-ui';
// import '../theme2/index.css';
import '../theme/index.css'; //引入自定义主题
Vue.use(ElementUI);
//
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
components: { App },
template: '<App/>'
})