1. element-ui组件引入方式:
1)完整引入
在 main.js 中写入以下内容:
import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';//引入全部的样式
Vue.use(ElementUI);
2)按需引入 借助插件,无需再引入'element-ui/lib/theme-chalk/index.css'文件
借助 babel-plugin-component,我们可以只引入需要的组件,以达到减小项目体积的目的。
首先,安装 babel-plugin-component:
npm install babel-plugin-component -D
然后,将 .babelrc 修改为:
"presets": [["es2015", { "modules": false }]],
"plugins": [
[
"component",
{
"libraryName": "element-ui",
"styleLibraryName": "theme-chalk"
}
]
]
}
接下来,如果你只希望引入部分组件,比如 Button 和 Select,那么需要在 main.js 中写入以下内容:
import { Button, Select } from 'element-ui';
Vue.component(Button.name, Button);
Vue.component(Select.name, Select);
2.自定义主题 前三种方式不支持按需引入样式,第四种配合插件可以按需引入
1)主题编辑器, 使用在线主题编辑器,定制 Element 所有全局和组件的 Design Tokens,下载使用
2)仅替换主题色 ,使用在线主题生成工具 ,下载使用
3)只在项目中改变 SCSS 变量
新建一个样式文件,例如element-variables.scss
,写入以下内容:
/* 改变主题色变量 */
$--color-primary: teal;
/* 改变 icon 字体路径变量,必需 */
$--font-path: '~element-ui/lib/theme-chalk/fonts';
@import "~element-ui/packages/theme-chalk/src/index"; //包含全部的样式scss文件
之后,在项目的入口文件中,直接引入以上样式文件即可(无需引入 Element 编译好的 CSS 文件):
import Vue from 'vue'
import Element from 'element-ui'
import './element-variables.scss'
Vue.use(Element)
4)命令行主题工具
1.安装工具:
npm i element-theme -g
npm i element-theme-chalk -D //安装白垩主题
2.初始化变量文件
如上是全局安装可以在命令行里通过 et 调用工具,如果安装在当前目录下,需要通过 node_modules/.bin/et 访问到命令。执行 -i 初始化变量文件。默认输出到 element-variables.scss
,当然你可以传参数指定文件输出目录。
et -i
✔ Generator variables file
3.修改变量
直接编辑 element-variables.scss
文件,例如修改主题色为红色。
$--color-primary: red;
4. 编译主题 默认编译的主题输出到 ./theme 目录下
ps:
注意不要手动修改./theme
下的*.css
文件样式,因为et命令编译输出会覆盖
可以再package.json script字段增加命令:"build_theme": "node_modules/.bin/et -o ./themes"
运行:npm run build_theme
如果以上工具全局安装了,运行:
et
> ✔ build theme font
> ✔ build element theme
5. 使用自定义主题
- 完整引入样式:
在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 的路径,注意要加 ~。(无需再在main.js
引入theme/index.css
文件)
{
"plugins": [
[
"component",
{
"libraryName": "element-ui",
"styleLibraryName": "~theme"
}
]
]
}
网友评论