修改elementui
以下是针对修改 Element UI 的几种常见需求的方法和注意事项:
主题定制
Element UI 支持通过 SCSS 变量进行主题定制。在项目中新建一个 SCSS 文件(如 element-variables.scss),覆盖默认变量后重新编译。
$--color-primary: #FF0000; /* 修改主色 */
@import "~element-ui/packages/theme-chalk/src/index";
需配合 vue-cli 的 sass-loader 进行编译,或在 webpack 配置中添加对应的 loader 规则。

组件样式覆盖
直接修改组件样式时,为避免全局污染,建议使用深度选择器或添加自定义 class。
/* 深度选择器 */
.my-form ::v-deep .el-input__inner {
border-radius: 10px;
}
/* 自定义 class */
<el-button class="custom-button">按钮</el-button>
.custom-button {
padding: 12px 24px;
}
按需引入优化
通过 babel-plugin-component 实现按需引入,减少打包体积。修改 babel.config.js:

module.exports = {
plugins: [
[
"component",
{
libraryName: "element-ui",
styleLibraryName: "theme-chalk"
}
]
]
};
扩展组件功能
通过继承或封装扩展原生组件。例如创建一个增强版的 el-button:
<template>
<el-button v-bind="$attrs" @click="handleClick">
<slot></slot>
</el-button>
</template>
<script>
export default {
methods: {
handleClick() {
this.$emit('click');
// 添加自定义逻辑
}
}
};
</script>
国际化修改
替换默认语言包或自定义文案:
import Vue from 'vue';
import ElementUI from 'element-ui';
import lang from 'element-ui/lib/locale/lang/en'; // 切换英文
Vue.use(ElementUI, { locale: lang });
// 自定义特定文案
ElementUI.MessageBox.setDefaults({
confirmButtonText: '确定',
cancelButtonText: '取消'
});
注意事项
- 修改全局样式时建议添加命名空间,避免样式冲突
- 覆盖组件默认行为时注意维护原有的事件和 API 兼容性
- 升级版本时检查定制内容是否与新版本兼容
- 复杂定制建议通过 GitHub issue 或 PR 与官方社区沟通






