ElementUI是一款基于Vue.js的桌面端组件库,提供了丰富的UI组件和详细的文档,帮助开发者快速搭建美观且功能齐全的Web应用。本文将详细介绍ElementUI的安装、常用组件、样式定制以及布局导航等内容,帮助读者更好地理解和使用ElementUI资料。
ElementUI 是一个基于 Vue.js 2.x 的桌面端组件库,它为开发者提供了一套丰富的 UI 组件,涵盖了表单、导航、布局、数据展示等各个方面的功能。ElementUI 的设计初衷是为了帮助开发者快速搭建美观且功能齐全的 Web 应用,它不仅提供了丰富的组件,还注重组件的用户体验和一致性。
ElementUI 的特点和优势包括:
ElementUI 的安装可以通过 npm 或 yarn 来实现。以下是通过 npm 安装的步骤:
安装 ElementUI:
npm install element-ui --save
引入 ElementUI:
在项目的入口文件中,如 main.js
,引入 ElementUI 并使用它:
import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI);
this.$message
、this.$confirm
等方法访问 ElementUI 提供的各种组件和方法。为了快速开始使用 ElementUI,首先需要创建一个 Vue 项目。这里假设你已经安装了 Vue CLI,如果没有安装,可以通过以下命令安装:
npm install -g @vue/cli
创建一个新的 Vue 项目:
vue create my-elementui-project
进入项目目录并安装 ElementUI:
cd my-elementui-project npm install element-ui --save
在项目的入口文件 main.js
中引入 ElementUI 的样式和脚本:
import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); import App from './App.vue'; new Vue({ el: '#app', render: h => h(App) });
<template> <div> <el-button type="primary">主要按钮</el-button> <el-input v-model="inputValue" placeholder="请输入内容"></el-input> <el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value"> </el-option> </el-select> </div> </template> <script> export default { data() { return { inputValue: '', selectedValue: '', options: [ { value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' }, { value: '选项4', label: '奶盖茶' } ] }; } }; </script>
为了快速开始使用 ElementUI,首先需要创建一个 Vue 项目。这里假设你已经安装了 Vue CLI,如果没有安装,可以通过以下命令安装:
npm install -g @vue/cli
创建一个新的 Vue 项目:
vue create my-elementui-project
进入项目目录并安装 ElementUI:
cd my-elementui-project npm install element-ui --save
在项目的入口文件 main.js
中引入 ElementUI 的样式和脚本:
import Vue from 'vue'; import ElementUI from 'element-ui'; import 'element-ui/lib/theme-chalk/index.css'; Vue.use(ElementUI); import App from './App.vue'; new Vue({ el: '#app', render: h => h(App) });
<template> <div> <el-button type="primary">主要按钮</el-button> <el-input v-model="inputValue" placeholder="请输入内容"></el-input> <el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value"> </el-option> </el-select> </div> </template> <script> export default { data() { return { inputValue: '', selectedValue: '', options: [ { value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' }, { value: '选项4', label: '奶盖茶' } ] }; } }; </script>
Button 组件是 ElementUI 中最基本的组件之一,它可以用于触发各种动作,如点击、提交表单等。
<el-button type="primary">主要按钮</el-button>
ElementUI 提供了多种按钮类型,如 primary
、success
、info
、warning
、danger
等,用于表示不同的状态或重要性。
<el-button type="primary">主要按钮</el-button> <el-button type="success">成功按钮</el-button> <el-button type="info">信息按钮</el-button> <el-button type="warning">警告按钮</el-button> <el-button type="danger">危险按钮</el-button>
通过 plain
和 round
属性,可以定制按钮的样式。
<el-button type="primary" plain>朴素按钮</el-button> <el-button type="primary" round>圆角按钮</el-button>
可以通过 size
属性设置按钮的大小,支持 large
、medium
、small
、mini
。
<el-button type="primary" size="large">大型按钮</el-button> <el-button type="primary" size="medium">中型按钮</el-button> <el-button type="primary" size="small">小型按钮</el-button> <el-button type="primary" size="mini">超小型按钮</el-button>
<template> <div> <el-button type="primary">主要按钮</el-button> <el-button type="success">成功按钮</el-button> <el-button type="info">信息按钮</el-button> <el-button type="warning">警告按钮</el-button> <el-button type="danger">危险按钮</el-button> <el-button type="primary" plain>朴素按钮</el-button> <el-button type="primary" round>圆角按钮</el-button> <el-button type="primary" size="large">大型按钮</el-button> <el-button type="primary" size="medium">中型按钮</el-button> <el-button type="primary" size="small">小型按钮</el-button> <el-button type="primary" size="mini">超小型按钮</el-button> </div> </template>
Input 组件用于输入文本,是表单设计中最常用的组件之一。
<el-input v-model="inputValue" placeholder="请输入内容"></el-input>
通过 v-model
可以实现输入框的双向绑定。
<el-input v-model="inputValue" placeholder="请输入内容"></el-input>
当输入框中有内容时,显示清除按钮,点击清除按钮可以清空输入框。
<el-input v-model="inputValue" placeholder="请输入内容" clearable></el-input>
通过 autofocus
属性可以让输入框自动获取焦点。
<el-input v-model="inputValue" placeholder="请输入内容" autofocus></el-input>
<template> <div> <el-input v-model="inputValue" placeholder="请输入内容"></el-input> <el-input v-model="inputValue" placeholder="请输入内容" clearable></el-input> <el-input v-model="inputValue" placeholder="请输入内容" autofocus></el-input> </div> </template> <script> export default { data() { return { inputValue: '' }; } }; </script>
Select 组件用于选择列表中的某项,支持单选和多选。
<el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value"> </el-option> </el-select>
通过设置 multiple
属性,可以实现多选功能。
<el-select v-model="selectedValues" multiple placeholder="请选择"> <el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value"> </el-option> </el-select>
通过设置 remote
属性,可以实现远程搜索功能,用户输入内容时会触发 query
事件。
<el-select v-model="selectedValue" filterable remote reserveKeyword placeholder="请输入关键词" @change="handleSelectChange" :remote-method="remoteMethod"> <el-option v-for="item in filteredOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select>
<template> <div> <el-select v-model="selectedValue" placeholder="请选择"> <el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value"> </el-option> </el-select> <el-select v-model="selectedValues" multiple placeholder="请选择"> <el-option v-for="item in options" :label="item.label" :value="item.value" :key="item.value"> </el-option> </el-select> <el-select v-model="selectedValue" filterable remote reserveKeyword placeholder="请输入关键词" @change="handleSelectChange" :remote-method="remoteMethod"> <el-option v-for="item in filteredOptions" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> </template> <script> export default { data() { return { selectedValue: '', selectedValues: [], options: [ { value: '选项1', label: '黄金糕' }, { value: '选项2', label: '双皮奶' }, { value: '选项3', label: '蚵仔煎' }, { value: '选项4', label: '奶盖茶' } ], filteredOptions: [] }; }, methods: { remoteMethod(query) { if (query) { this.filteredOptions = this.options.filter(option => option.label.toLowerCase().indexOf(query.toLowerCase()) > -1); } else { this.filteredOptions = this.options; } }, handleSelectChange(value) { console.log(`选择的值为:${value}`); } } }; </script>
ElementUI 使用了 SCSS 变量来定义主题颜色,可以通过覆盖 SCSS 变量来自定义主题颜色。
在项目中引入 ElementUI 的 SCSS 文件,并修改其中的主题色变量 --el-color-primary
。
@import '~element-ui/packages/theme-chalk/src/common/var'; $--color-primary: #1890ff; @import '~element-ui/packages/theme-chalk/src/index';
@import '~element-ui/packages/theme-chalk/src/common/var'; $--color-primary: #1890ff; @import '~element-ui/packages/theme-chalk/src/index';
ElementUI 的样式使用了 SCSS 变量来定义各种颜色、边距等属性,可以通过修改这些变量来自定义样式。
@import '~element-ui/packages/theme-chalk/src/common/var'; $--color-primary: #1890ff; $--border-radius-base: 8px; @import '~element-ui/packages/theme-chalk/src/index';
@import '~element-ui/packages/theme-chalk/src/common/var'; $--color-primary: #1890ff; $--border-radius-base: 8px; @import '~element-ui/packages/theme-chalk/src/index';
Layout 组件是 ElementUI 提供的一种布局组件,用于快速搭建页面布局。
<el-container> <el-header>头部</el-header> <el-main>主体</el-main> </el-container>
<el-container> <el-aside width="200px">侧边栏</el-aside> <el-container> <el-header>头部</el-header> <el-main>主体</el-main> </el-container> </el-container>
<template> <div> <el-container> <el-header>头部</el-header> <el-main>主体</el-main> </el-container> <el-container> <el-aside width="200px">侧边栏</el-aside> <el-container> <el-header>头部</el-header> <el-main>主体</el-main> </el-container> </el-container> </div> </template>
导航菜单可以使用 el-menu
组件来创建,支持水平和垂直导航。
<el-menu> <el-menu-item index="1" @click="handleClick">选项一</el-menu-item> <el-submenu index="2"> <template slot="title">选项二</template> <el-menu-item index="2-1">子选项一</el-menu-item> <el-menu-item index="2-2">子选项二</el-menu-item> </el-submenu> <el-menu-item index="3" @click="handleClick">选项三</el-menu-item> </el-menu>
<el-menu> <el-submenu index="1"> <template slot="title">选项一</template> <el-menu-item index="1-1">子选项一</el-menu-item> <el-menu-item index="1-2">子选项二</el-menu-item> </el-submenu> <el-submenu index="2"> <template slot="title">选项二</template> <el-menu-item index="2-1">子选项一</el-menu-item> <el-menu-item index="2-2">子选项二</el-menu-item> </el-submenu> </el-menu>
<template> <div> <el-menu> <el-menu-item index="1" @click="handleClick">选项一</el-menu-item> <el-submenu index="2"> <template slot="title">选项二</template> <el-menu-item index="2-1">子选项一</el-menu-item> <el-menu-item index="2-2">子选项二</el-menu-item> </el-submenu> <el-menu-item index="3" @click="handleClick">选项三</el-menu-item> </el-menu> <el-menu> <el-submenu index="1"> <template slot="title">选项一</template> <el-menu-item index="1-1">子选项一</el-menu-item> <el-menu-item index="1-2">子选项二</el-menu-item> </el-submenu> <el-submenu index="2"> <template slot="title">选项二</template> <el-menu-item index="2-1">子选项一</el-menu-item> <el-menu-item index="2-2">子选项二</el-menu-item> </el-submenu> </el-menu> </div> </template> <script> export default { methods: { handleClick() { console.log('点击了导航菜单'); } } }; </script>
ElementUI 加载慢的原因可能包括:
按需引入组件:使用 babel-plugin-component
插件按需引入组件,减少加载体积。
npm install babel-plugin-component -D
在 .babelrc
中配置:
{ "plugins": [ ["component", { "libraryName": "element-ui", "styleLibraryName": "theme-chalk" }] ] }
使用 CDN 加速:在本地开发时,可以使用 CDN 加载 ElementUI,加快加载速度。
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/element-ui/lib/theme-chalk/index.css"> <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/vue@2.6.11"></script> <script class="lazyload" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC" data-original="https://cdn.jsdelivr.net/npm/element-ui/lib/index.js"></script>
调试 ElementUI 组件时,可以通过以下几种方式:
console.log
语句,输出变量或方法的值,帮助调试。<template> <el-button @click="handleClick">点击我</el-button> </template> <script> export default { methods: { handleClick() { console.log('点击了按钮'); } } }; </script>
使用 console.log
输出按钮点击事件的日志,帮助调试。
通过以上方法,可以有效地调试 ElementUI 组件的运行情况。