一、前言
在使用 Vue 框架最常用的 UI 便是 Element,这里就做一些全局设置、升级等做一些介绍。
二、全局设置
在引入 Element 时,可以传入一个全局配置对象。该对象目前支持 size
与 zIndex
字段。size
用于改变组件的默认尺寸,zIndex
设置弹框的初始 z-index(默认值:2000)。按照引入 Element 的方式,具体操作如下:
完整引入 Element:
import Vue from 'vue'; import Element from 'element-ui'; Vue.use(Element, { size: 'small', zIndex: 3000 });
按需引入 Element:
import Vue from 'vue'; import { Button } from 'element-ui'; Vue.prototype.$ELEMENT = { size: 'small', zIndex: 3000 }; Vue.use(Button);
按照以上设置,项目中所有拥有 size
属性的组件的默认尺寸均为 'small',弹框的初始 z-index 为 3000。
以上内容引自官网
三、升级 Element 和主题
在更新 Element 版本的时候,是需要一起更新主题的。
首先:
npm update element-ui -S
更新到最新版本。
接下来就是更新主题,我这里选的是用“命令行主题工具”来生成主题样式代码。
首先安装「主题生成工具」,可以全局安装或者安装在当前项目下,推荐安装在项目里,方便别人 clone 项目时能直接安装依赖并启动,这里以全局安装做演示。
(下面我安装的全局的)
npm i element-theme -g
安装白垩主题,可以从 npm 安装或者从 GitHub 拉取最新代码。
# 从 npm (这里是当前项目,和 et 使用不一样) npm i element-theme-chalk -D # 从 GitHub npm i https://github.com/ElementUI/theme-chalk -D
初始化变量文件
主题生成工具安装成功后,如果全局安装可以在命令行里通过 et
调用工具,如果安装在当前目录下,需要通过 node_modules/.bin/et
访问到命令。执行 -i
初始化变量文件。默认输出到 element-variables.scss
,当然你可以传参数指定文件输出目录。
et -i [可以自定义变量文件]
注意:
这一步可能会报错:primordials is not defined,这个错误的问题是 Node 的版本过高,把 Node 降到 11.15.0 以下就可以。
因为这一步只是编译,和代码运行环境不冲突,建议使用 NVM 切换 Node 进行编译主题,运行代码时再切换高版本即可。
修改变量
直接编辑 element-variables.scss
文件,例如修改主题色为红色。
$--color-primary: red;
编译主题
保存文件后,到命令行里执行 et
编译主题,如果你想启用 watch
模式,实时编译主题,增加 -w
参数;如果你在初始化时指定了自定义变量文件,则需要增加 -c
参数,并带上你的变量文件名。默认情况下编译的主题目录是放在 ./theme
下,你可以通过 -o
参数指定打包目录。
et > ✔ build theme font > ✔ build element theme
引入自定义主题
在 main.js 中引入生成的主题的 theme/index.css
文件即可。
import '../theme/index.css' import ElementUI from 'element-ui' import Vue from 'vue' Vue.use(ElementUI)
搭配插件按需引入组件主题
如果是搭配 babel-plugin-component
一起使用,只需要修改 .babelrc
的配置,指定 styleLibraryName
路径为自定义主题相对于 .babelrc
的路径,注意要加 ~
。
{ "plugins": [ [ "component", { "libraryName": "element-ui", "styleLibraryName": "~theme" } ] ] }