Element Plus 是一个基于 Vue 3 和 Vite 的组件库,它提供了一套丰富的 UI 组件,用于构建高质量的网页应用程序。Element Plus 是 Element UI 的 Vue 3 版本,Element UI 是一个广泛使用的 Vue 2 组件库。Element Plus 继承了 Element UI 的设计哲学和组件结构,同时利用 Vue 3 的新特性,如组合式 API(Composition API)和 Teleport,来提供更好的开发体验。
Element Plus 提供了一系列高质量的组件,用于快速开发现代化的网页应用。以下是一些核心组件,它们在构建用户界面时非常有用:
这些组件都经过精心设计,以确保它们在不同设备和屏幕尺寸上都能保持良好的响应性和一致性。使用这些组件可以大大加快开发速度,并确保应用程序的界面具有专业的外观和感觉。
下面 V 哥将一一介绍这20个组件的使用和技巧。
Element Plus 的 Button
组件是一个非常基础且功能丰富的 UI 组件,用于创建各种类型的按钮。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
按钮的基本 HTML 结构如下:
<el-button>默认按钮el-button>
这将创建一个默认样式的按钮。
按钮有不同的类型,通过 type
属性来指定:
primary
:主要按钮success
:成功按钮warning
:警告按钮danger
:危险按钮info
:信息按钮<el-button type="primary">主要按钮el-button>
<el-button type="success">成功按钮el-button>
按钮有不同的尺寸,通过 size
属性来指定:
medium
:中等尺寸small
:小尺寸mini
:迷你尺寸<el-button size="medium">中等按钮el-button>
<el-button size="small">小按钮el-button>
<el-button size="mini">迷你按钮el-button>
可以通过 disabled
属性来设置按钮的禁用状态:
<el-button disabled>不可点击的按钮el-button>
按钮可以设置为加载状态,通常用于表单提交等操作:
<el-button loading>Loading...el-button>
可以在按钮中加入图标,Element Plus 提供了多种图标供选择:
<el-button icon="el-icon-search">搜索el-button>
按钮可以设置为圆形:
<el-button type="primary" circle>圆形按钮el-button>
按钮可以设置为文本按钮:
<el-button type="text">文本按钮el-button>
可以为按钮添加点击事件处理函数:
<el-button @click="handleClick">点击我el-button>
然后在 Vue 组件的 methods
中定义 handleClick
函数:
methods: {
handleClick() {
console.log('按钮被点击了!');
}
}
可以通过 CSS 来自定义按钮的样式,例如改变背景色、字体大小等。
Element Plus 的 Input
组件是一个基础的表单输入组件,用于创建文本输入框。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
输入框的基本 HTML 结构如下:
<el-input placeholder="请输入内容">el-input>
这将创建一个带有占位符文本的文本输入框。
在 Vue 中,通常使用 v-model
指令来创建数据双向绑定:
<el-input v-model="inputValue" placeholder="请输入内容">el-input>
在 Vue 组件的 data
中定义 inputValue
:
data() {
return {
inputValue: '' // 初始为空字符串
};
}
输入框有多种类型,通过 type
属性来指定:
text
:文本输入(默认)textarea
:多行文本输入password
:密码输入,输入内容会被隐藏<el-input type="textarea" placeholder="多行文本输入">el-input>
<el-input type="password" placeholder="密码输入" show-password>el-input>
show-password
是一个布尔属性,用于切换显示/隐藏密码。
输入框有不同的尺寸,通过 size
属性来指定:
medium
:中等尺寸small
:小尺寸mini
:迷你尺寸<el-input size="medium" placeholder="中等尺寸">el-input>
<el-input size="small" placeholder="小尺寸">el-input>
可以通过 disabled
属性来设置输入框的禁用状态:
<el-input disabled placeholder="禁用的输入框">el-input>
可以通过 readonly
属性来设置输入框的只读状态:
<el-input readonly value="只读内容">el-input>
输入框可以添加清除图标,通过点击可以清空输入内容:
<el-input clearable placeholder="可清除的输入框">el-input>
可以在输入框的前面或后面添加图标或其他内容:
<el-input prefix-icon="el-icon-search" placeholder="搜索">el-input>
<el-input suffix-icon="el-icon-edit" placeholder="编辑">el-input>
可以为输入框添加事件处理,如 input
事件用于监听输入内容的变化:
<el-input v-model="inputValue" @input="handleInput">el-input>
在 Vue 组件的 methods
中定义 handleInput
函数:
methods: {
handleInput(value) {
console.log('输入内容变化:', value);
}
}
输入框通常与表单验证结合使用,可以通过 el-form
和 el-form-item
组件来实现:
<el-form>
<el-form-item label="输入框">
<el-input v-model="inputValue" @input="validateInput">el-input>
el-form-item>
el-form>
在 Vue 组件中定义 validateInput
方法进行输入验证:
methods: {
validateInput(value) {
// 验证逻辑
}
}
v-model
来保持输入框的值与数据状态的同步。el-form
组件进行表单验证。Element Plus 的 Select
组件是一个下拉选择器,用于从预设的选项中选择一个或多个值。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
选择器的基本 HTML 结构如下:
<el-select v-model="selectedValue" placeholder="请选择">
<el-option label="选项1" value="option1">el-option>
<el-option label="选项2" value="option2">el-option>
el-select>
这里,v-model
用于双向绑定选中的值,el-option
用于定义选项。
Select
组件使用 v-model
来绑定选中的值:
data() {
return {
selectedValue: '' // 初始为空字符串
};
}
选项通过 el-option
组件来定义,可以包含 label
(显示的文本)和 value
(实际的值):
<el-select v-model="selectedValue">
<el-option label="选项1" value="1">el-option>
<el-option label="选项2" value="2">el-option>
el-select>
可以通过 disabled
属性来设置选择器的禁用状态:
<el-select disabled v-model="selectedValue">
el-select>
选择器可以添加清空功能,允许用户清空已选择的选项:
<el-select clearable v-model="selectedValue">
el-select>
选择器可以设置为多选模式,允许用户选择多个选项:
<el-select v-model="selectedValues" multiple placeholder="请选择">
<el-option label="选项1" value="option1">el-option>
el-select>
在多选模式下,v-model
绑定的变量应该是一个数组:
data() {
return {
selectedValues: [] // 初始为空数组
};
}
选择器有不同的尺寸,通过 size
属性来指定:
medium
:中等尺寸(默认)small
:小尺寸mini
:迷你尺寸<el-select size="small" v-model="selectedValue">
el-select>
选择器可以设置为可过滤模式,允许用户输入文本来过滤选项:
<el-select filterable v-model="selectedValue">
el-select>
选择器支持远程搜索,即选项不是静态定义的,而是根据用户的输入动态从服务器获取:
<el-select
filterable
remote
reserve-keyword
v-model="selectedValue"
:remote-method="remoteSearch"
placeholder="请输入关键词">
el-select>
在 Vue 组件中定义 remoteSearch
方法:
methods: {
remoteSearch(query) {
// 根据 query 发起远程搜索请求
}
}
可以选择器选项中使用自定义模板,以更灵活地展示选项内容:
<el-select v-model="selectedValue">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
<span style="float: left">{{ item.label }}span>
<span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}span>
el-option>
el-select>
v-model
来保持选择器的值与数据状态的同步。el-form
组件进行表单验证。Element Plus 的 Checkbox
组件用于创建复选框,允许用户从一组选项中选择多个选项。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
复选框的基本 HTML 结构如下:
<el-checkbox v-model="checked">复选框el-checkbox>
这里,v-model
用于双向绑定复选框的选中状态。
复选框使用 v-model
来绑定一个布尔值,表示复选框是否被选中:
data() {
return {
checked: false // 初始状态为未选中
};
}
可以通过 disabled
属性来设置复选框的禁用状态:
<el-checkbox disabled v-model="checked">不可用的复选框el-checkbox>
可以通过 readonly
属性来设置复选框的只读状态:
<el-checkbox readonly v-model="checked">只读复选框el-checkbox>
可以自定义复选框选中和未选中时绑定的值:
<el-checkbox
v-model="checked"
true-value="yes"
false-value="no">
自定义值复选框
el-checkbox>
当需要用户从多个选项中选择时,可以使用 el-checkbox-group
来包裹多个 el-checkbox
:
<el-checkbox-group v-model="checkList">
<el-checkbox label="Option A">el-checkbox>
<el-checkbox label="Option B">el-checkbox>
<el-checkbox label="Option C">el-checkbox>
el-checkbox-group>
在这种情况下,v-model
绑定的变量应该是一个数组,包含所有选中的选项的值:
data() {
return {
checkList: [] // 初始为空数组
};
}
每个 el-checkbox
的 label
属性用于指定该复选框的值。
复选框可以设置为按钮样式:
<el-checkbox-group v-model="checkList">
<el-checkbox label="Option A" style="width: 130px;">el-checkbox>
<el-checkbox label="Option B" style="width: 130px;">el-checkbox>
el-checkbox-group>
可以为复选框添加事件处理,如 change
事件用于监听复选框状态的变化:
<el-checkbox v-model="checked" @change="handleCheckChange">复选框el-checkbox>
在 Vue 组件的 methods
中定义 handleCheckChange
函数:
methods: {
handleCheckChange(value) {
console.log('复选框状态变化:', value);
}
}
可以在复选框内部添加自定义内容:
<el-checkbox v-model="checked">
<span>带自定义内容的复选框span>
el-checkbox>
v-model
来保持复选框的选中状态与数据状态的同步。el-form
组件进行表单验证。Element Plus 的 Radio
组件用于创建单选框,允许用户从一组选项中选择一个选项。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
单选框的基本 HTML 结构如下:
<el-radio v-model="radioValue" label="1">选项1el-radio>
<el-radio v-model="radioValue" label="2">选项2el-radio>
这里,v-model
用于双向绑定选中的单选框的值,label
属性用于指定每个单选框的唯一标识。
单选框使用 v-model
来绑定选中项的值:
data() {
return {
radioValue: '1' // 初始选中选项1
};
}
可以通过 disabled
属性来设置单选框的禁用状态:
<el-radio disabled v-model="radioValue" label="1">选项1el-radio>
单选框可以设置为按钮样式:
<el-radio-group v-model="radioValue">
<el-radio label="1" style="width: 130px;">选项1el-radio>
<el-radio label="2" style="width: 130px;">选项2el-radio>
el-radio-group>
使用 el-radio-group
来包裹多个 el-radio
,以便于统一控制。
单选框有不同的尺寸,通过 size
属性来指定:
medium
:中等尺寸(默认)small
:小尺寸mini
:迷你尺寸<el-radio-group v-model="radioValue" size="small">
<el-radio label="1">选项1el-radio>
<el-radio label="2">选项2el-radio>
el-radio-group>
单选框可以添加边框:
<el-radio border v-model="radioValue" label="1">选项1el-radio>
可以为单选框添加事件处理,如 change
事件用于监听单选框状态的变化:
<el-radio v-model="radioValue" label="1" @change="handleRadioChange">选项1el-radio>
在 Vue 组件的 methods
中定义 handleRadioChange
函数:
methods: {
handleRadioChange(value) {
console.log('单选框状态变化:', value);
}
}
可以在单选框内部添加自定义内容:
<el-radio v-model="radioValue" label="1">
<span>带自定义内容的单选框span>
el-radio>
v-model
来保持单选框的选中状态与数据状态的同步。el-form
组件进行表单验证。Element Plus 的 Switch
组件是一个开关控件,用于表示开关状态的切换,比如打开或关闭。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
开关的基本 HTML 结构如下:
<el-switch v-model="switchValue">el-switch>
这里,v-model
用于双向绑定开关的状态,true
表示打开状态,false
表示关闭状态。
开关使用 v-model
来绑定一个布尔值,表示开关是否处于打开状态:
data() {
return {
switchValue: false // 初始状态为关闭
};
}
可以设置开关的宽度:
<el-switch :width="100">el-switch>
可以通过 disabled
属性来设置开关的禁用状态:
<el-switch disabled v-model="switchValue">el-switch>
可以通过 readonly
属性来设置开关的只读状态:
<el-switch readonly v-model="switchValue">el-switch>
可以自定义开关打开和关闭时绑定的值:
<el-switch
v-model="switchValue"
:active-value="true"
:inactive-value="false">
el-switch>
可以为开关添加事件处理,如 change
事件用于监听开关状态的变化:
<el-switch v-model="switchValue" @change="handleSwitchChange">el-switch>
在 Vue 组件的 methods
中定义 handleSwitchChange
函数:
methods: {
handleSwitchChange(value) {
console.log('开关状态变化:', value);
}
}
可以设置开关打开和关闭时显示的文本:
<el-switch
v-model="switchValue"
active-text="开启"
inactive-text="关闭">
el-switch>
可以设置开关打开和关闭时的背景颜色:
<el-switch
v-model="switchValue"
active-color="#13ce66"
inactive-color="#ff4949">
el-switch>
可以设置是否在点击时触发表单验证:
<el-switch validate-event v-model="switchValue">el-switch>
v-model
来保持开关的状态与数据状态的同步。active-color
和 inactive-color
自定义开关的颜色。el-form
组件进行表单验证。Element Plus 的 Slider
组件是一个滑动输入控件,允许用户通过滑动选择一个值。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
滑块的基本 HTML 结构如下:
<el-slider v-model="sliderValue">el-slider>
这里,v-model
用于双向绑定滑块的值。
滑块使用 v-model
来绑定一个数值,表示滑块的位置:
data() {
return {
sliderValue: 0 // 初始值
};
}
可以设置滑块的最小值和最大值:
<el-slider v-model="sliderValue" :min="10" :max="50">el-slider>
可以设置滑块的步长,即每次滑动变化的数值:
<el-slider v-model="sliderValue" :step="10">el-slider>
可以通过 disabled
属性来设置滑块的禁用状态:
<el-slider disabled v-model="sliderValue">el-slider>
可以通过 readonly
属性来设置滑块的只读状态:
<el-slider readonly v-model="sliderValue">el-slider>
滑块可以设置为范围选择模式,允许用户选择一个数值范围:
<el-slider
v-model="sliderRangeValue"
range
:min="10"
:max="50">
el-slider>
在范围选择模式下,v-model
绑定的变量应该是一个包含两个数值的数组:
data() {
return {
sliderRangeValue: [10, 40] // 初始范围
};
}
滑块可以显示刻度标记:
<el-slider
v-model="sliderValue"
:marks="{10: '10', 20: '20', 30: '30'}">
el-slider>
滑块可以显示输入框,允许用户直接输入数值:
<el-slider v-model="sliderValue" show-input>el-slider>
滑块可以显示停止按钮,即滑块移动时会停在刻度上:
<el-slider v-model="sliderValue" show-stops>el-slider>
滑块可以设置为垂直方向:
<el-slider vertical v-model="sliderValue">el-slider>
可以为滑块添加事件处理,如 change
事件用于监听滑块值的变化:
<el-slider v-model="sliderValue" @change="handleSliderChange">el-slider>
在 Vue 组件的 methods
中定义 handleSliderChange
函数:
methods: {
handleSliderChange(value) {
console.log('滑块值变化:', value);
}
}
v-model
来保持滑块的值与数据状态的同步。el-form
组件进行表单验证。Element Plus 的 Table
组件是一个功能强大的表格展示组件,用于以行列的形式展示大量数据。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
表格的基本 HTML 结构如下:
<el-table [border] :data="tableData" style="width: 100%">
<el-table-column prop="date" label="日期" width="180">el-table-column>
<el-table-column prop="name" label="姓名" width="180">el-table-column>
<el-table-column prop="address" label="地址">el-table-column>
el-table>
这里,:data
属性用于绑定表格的数据源,el-table-column
用于定义表格的列。
表格的数据源是一个数组,每个元素是一个对象,代表表格的一行:
data() {
return {
tableData: [
{ date: '2016-05-03', name: 'Tom', address: 'No. 189, Grove St, Los Angeles' },
{ date: '2016-05-02', name: 'Tom Jr.', address: 'No. 189, Grove St, Los Angeles' },
// 更多数据...
]
};
}
列通过 el-table-column
组件定义,prop
属性用于指定对象数据中的属性,label
属性用于指定列的标题:
<el-table-column prop="date" label="日期">el-table-column>
可以为列设置固定宽度:
<el-table-column prop="date" label="日期" width="180">el-table-column>
可以为表格添加边框:
<el-table border :data="tableData" style="width: 100%">el-table>
可以为表格添加斑马线效果:
<el-table stripe :data="tableData" style="width: 100%">el-table>
可以为列添加排序功能:
<el-table-column prop="date" label="日期" sortable>el-table-column>
可以在列中使用自定义模板:
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="text" @click="handleClick(scope.row)">查看el-button>
template>
el-table-column>
可以创建多级表头:
<el-table :data="tableData" style="width: 100%">
<el-table-column label="日期/姓名">
<el-table-column prop="date" label="日期" width="180">el-table-column>
<el-table-column prop="name" label="姓名" width="180">el-table-column>
el-table-column>
<el-table-column prop="address" label="地址">el-table-column>
el-table>
可以为表格的行添加展开功能:
<el-table
:data="tableData"
style="width: 100%"
@expand-change="handleExpandChange">
<el-table-column type="expand">
<template slot-scope="props">
template>
el-table-column>
el-table>
可以添加选择功能,允许用户选择表格的行:
<el-table
:data="tableData"
style="width: 100%"
@selection-change="handleSelectionChange">
<el-table-column type="selection">el-table-column>
el-table>
可以固定列或表头:
<el-table
:data="tableData"
style="width: 100%"
border
:fit="false">
<el-table-column fixed prop="date" label="日期" width="150">el-table-column>
el-table>
Element Plus 的 Form
组件用于快速构建表单,它提供了数据验证、布局和样式的便捷管理。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
表单的基本 HTML 结构如下:
<el-form :model="form" label-width="120px">
<el-form-item label="活动名称">
<el-input v-model="form.name">el-input>
el-form-item>
<el-form-item label="活动区域">
<el-select v-model="form.region" placeholder="请选择活动区域">
el-select>
el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">立即创建el-button>
el-form-item>
el-form>
这里,:model
用于绑定表单的数据对象,label-width
用于设置标签的宽度。
表单的数据模型是一个对象,包含了表单项的值:
data() {
return {
form: {
name: '',
region: '',
// 其他表单项
}
};
}
表单项通过 el-form-item
组件定义,内部可以包含各种输入组件,如 el-input
、el-select
等:
<el-form-item label="邮箱">
<el-input type="email" v-model="form.email">el-input>
el-form-item>
可以设置表单项标签的宽度:
<el-form label-width="150px">
el-form>
表单验证通过 el-form
的 rules
属性和 el-form-item
的 prop
属性来实现:
data() {
return {
form: {
name: '',
// 其他表单项
},
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
],
// 其他验证规则
}
};
},
methods: {
onSubmit() {
this.$refs.form.validate((valid) => {
if (valid) {
alert('提交成功!');
} else {
console.log('表单验证失败');
return false;
}
});
}
}
表单可以设置为内联布局:
<el-form :inline="true" :model="form">
el-form>
可以重置表单到初始状态:
methods: {
resetForm() {
this.$refs.form.resetFields();
}
}
可以为表单添加提交事件:
<el-form @submit.native.prevent="onSubmit">
el-form>
可以在表单项中使用自定义模板:
<el-form-item label="自定义内容">
<template slot="label">
<span>自定义标签span>
template>
<el-input v-model="form.custom">el-input>
el-form-item>
v-model
来保持表单项的值与数据状态的同步。Element Plus 的 Dialog
组件用于创建模态对话框,它可以覆盖在父窗口上,用于显示信息或获取用户输入。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:
对话框的基本 HTML 结构如下:
<el-button type="text" @click="dialogVisible = true">打开对话框el-button>
<el-dialog
title="提示"
v-model="dialogVisible"
width="30%"
:before-close="handleClose">
<span>这是一段信息span>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取消el-button>
<el-button type="primary" @click="confirmAction">确定el-button>
span>
el-dialog>
这里,v-model
用于控制对话框的显示和隐藏,title
属性用于设置对话框的标题。
对话框的显示和隐藏通过 v-model
控制:
data() {
return {
dialogVisible: false // 控制对话框显示的布尔值
};
}
可以设置对话框的标题:
<el-dialog title="我的对话框" :visible.sync="dialogVisible">
el-dialog>
可以设置对话框的宽度:
<el-dialog width="50%" :visible.sync="dialogVisible">
el-dialog>
可以在对话框内部自定义内容:
<el-dialog :visible.sync="dialogVisible">
<div>
<h2>自定义标题h2>
<p>这是自定义的对话框内容。p>
div>
el-dialog>
可以在对话框底部添加按钮:
<el-dialog :visible.sync="dialogVisible">
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false">取 消el-button>
<el-button type="primary" @click="handleConfirm">确 定el-button>
span>
el-dialog>
可以设置 before-close
事件,以阻止对话框的关闭:
<el-dialog
:before-close="handleBeforeClose"
:visible.sync="dialogVisible">
el-dialog>
在 Vue 组件的 methods
中定义 handleBeforeClose
函数:
methods: {
handleBeforeClose(done) {
// 执行一些操作,完成后调用 done() 来关闭对话框
done();
}
}
可以将对话框内容居中显示:
<el-dialog
center
:visible.sync="dialogVisible">
el-dialog>
确保对话框可以通过键盘操作,并且屏幕阅读器可以正确读取对话框内容。
v-model
来控制对话框的显示状态。Element Plus 的 Tooltip
组件用于创建文字提示,当用户将鼠标悬停在指定元素上时,会显示一段文字信息。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
文字提示的基本 HTML 结构如下:
<el-tooltip content="这是提示信息" placement="top-start" :open-delay="500">
<el-button>悬停看我el-button>
el-tooltip>
这里,content
属性用于设置提示的内容,placement
属性用于设置提示框出现的位置,open-delay
属性用于设置显示提示框前的延迟时间。
提示框可以出现在不同的位置,通过 placement
属性来指定:
top
top-start
top-end
bottom
bottom-start
bottom-end
left
left-start
left-end
right
right-start
right-end
<el-tooltip placement="bottom" content="底部提示">
<el-button>底部显示el-button>
el-tooltip>
可以通过 trigger
属性来指定触发提示框的方式:
hover
:鼠标悬停时显示(默认)click
:点击时显示focus
:输入框获得焦点时显示manual
:手动控制显示<el-tooltip trigger="click" content="点击提示信息">
<el-button>点击我el-button>
el-tooltip>
可以设置显示和隐藏提示框的延迟时间:
<el-tooltip :open-delay="1000" :close-delay="500" content="延迟提示">
<el-button>悬停我el-button>
el-tooltip>
当 trigger
设置为 manual
时,可以使用 visible
属性手动控制提示框的显示和隐藏:
<el-tooltip v-model:visible="isTooltipVisible" content="手动控制">
<el-button @click="isTooltipVisible = !isTooltipVisible">显示/隐藏el-button>
el-tooltip>
在 Vue 组件的 data
中定义 isTooltipVisible
:
data() {
return {
isTooltipVisible: false
};
}
可以通过 disabled
属性来设置提示框的禁用状态:
<el-tooltip disabled content="禁用的提示">
<el-button>悬停我el-button>
el-tooltip>
可以通过 CSS 来自定义提示框的样式:
.my-tooltip .el-tooltip__popper {
/* 自定义样式 */
}
并在组件上添加自定义类:
<el-tooltip content="自定义样式" class="my-tooltip">
<el-button>悬停我el-button>
el-tooltip>
Element Plus 的 Popover
组件是一种扩展的 Tooltip
组件,它不仅可以显示文本,还可以包含更复杂的 HTML 内容,如链接、列表、表单等。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
气泡卡片的基本 HTML 结构如下:
<el-popover
placement="right"
width="200"
trigger="click"
content="这是一段复杂的HTML内容">
<el-button>点击触发el-button>
el-popover>
这里,placement
属性用于设置气泡卡片出现的位置,width
属性用于设置气泡卡片的宽度,trigger
属性用于设置触发方式,content
属性用于设置显示的内容。
气泡卡片的触发方式与 Tooltip
相同,可以通过 trigger
属性来指定:
hover
:鼠标悬停时显示click
:点击时显示focus
:输入框获得焦点时显示manual
:手动控制显示<el-popover trigger="hover" content="悬停查看更多信息">
<el-button>悬停我el-button>
el-popover>
当 trigger
设置为 manual
时,可以使用 visible
属性手动控制气泡卡片的显示和隐藏:
<el-popover
ref="popover"
placement="bottom"
width="200"
trigger="manual"
content="手动控制显示/隐藏">
<el-button @click="showPopover">显示气泡卡片el-button>
el-popover>
在 Vue 组件的方法中控制显示和隐藏:
methods: {
showPopover() {
this.$refs.popover.doShow();
},
hidePopover() {
this.$refs.popover.doHide();
}
}
可以在气泡卡片中自定义复杂的 HTML 内容:
<el-popover
placement="right"
width="300"
trigger="click">
<template slot="reference">
<el-button>自定义内容el-button>
template>
<div>
<p>这是一段HTML内容p>
<ul>
<li>列表项1li>
<li>列表项2li>
ul>
div>
el-popover>
可以设置显示和隐藏气泡卡片的延迟时间:
<el-popover :open-delay="1000" :close-delay="500" content="延迟显示">
<el-button>悬停我el-button>
el-popover>
可以通过 disabled
属性来设置气泡卡片的禁用状态:
<el-popover disabled content="禁用的气泡卡片">
<el-button>点击我el-button>
el-popover>
可以通过 CSS 来自定义气泡卡片的样式:
.my-popover .popper__arrow {
/* 自定义箭头样式 */
}
.my-popover .el-popover__title {
/* 自定义标题样式 */
}
并在组件上添加自定义类:
<el-popover content="自定义样式" class="my-popover">
<el-button>点击我el-button>
el-popover>
Element Plus 的 Alert
组件用于向用户显示警告或提示信息。它通常用于页面的角落或内容区域,以吸引用户的注意。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
警告的基本 HTML 结构如下:
<el-alert
title="成功提示"
type="success"
description="这是一条成功的提示信息"
show-icon>
el-alert>
这里,title
属性用于设置警告的标题,type
属性用于设置警告的类型,description
属性用于提供更详细的描述信息,show-icon
是一个布尔属性,用于显示警告图标。
警告有不同的类型,通过 type
属性来指定:
success
:成功警告(绿色)info
:信息警告(蓝色)warning
:警告警告(黄色)error
:错误警告(红色)<el-alert title="信息提示" type="info" description="这是一条信息提示">el-alert>
可以为警告添加更详细的描述:
<el-alert
title="操作成功"
type="success"
description="您已成功完成操作,这是一条详细的成功提示信息。"
show-icon>
el-alert>
可以通过 show-icon
属性在警告中显示图标:
<el-alert title="警告信息" type="warning" show-icon>el-alert>
可以为警告添加一个关闭按钮,允许用户手动关闭警告:
<el-alert title="可关闭的警告" closable>el-alert>
可以将警告内容居中显示:
<el-alert title="居中警告" center>el-alert>
可以通过 CSS 自定义警告的样式,包括颜色、字体大小等:
.my-alert .el-alert__title {
font-weight: bold;
}
.my-alert .el-alert__description {
color: #666;
}
并在组件上添加自定义类:
<el-alert title="自定义样式" class="my-alert">el-alert>
可以组合多个警告,以警告组的形式显示:
<el-alert
v-for="(alert, index) in alerts"
:key="index"
:title="alert.title"
:type="alert.type"
description="这里是警告描述">
el-alert>
在 Vue 组件的 data
中定义 alerts
数组:
data() {
return {
alerts: [
{ title: '成功提示', type: 'success' },
{ title: '信息提示', type: 'info' },
// 更多警告数据...
]
};
}
Element Plus 的 Badge
组件用于在页面元素的角落添加数字或状态标记,通常用于表示未读消息数量、新状态提醒等。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
标记的基本 HTML 结构如下:
<el-badge :value="12" class="item">
<el-button size="small">按钮el-button>
el-badge>
这里,value
属性用于设置标记显示的数字或文本,class="item"
用于为子元素设置样式。
标记可以显示数字或文本,通过 value
属性来指定:
<el-badge value="200">新消息el-badge>
<el-badge value="hot">热门el-badge>
可以设置标记显示的最大值,超过这个值会显示为 {max}+
:
<el-badge :value="120" :max="100">新消息el-badge>
可以设置 hidden
属性来隐藏标记:
<el-badge :value="0" :hidden="true">无新消息el-badge>
可以自定义标记的位置,通过 placement
属性来指定:
<el-badge value="1" placement="top-start">
<el-button>顶部开始el-button>
el-badge>
可以自定义标记的背景颜色,通过 color
属性来指定:
<el-badge value="20" color="#f56c6c">新消息el-badge>
可以使用 is-dot
属性来显示一个点状标记,而不是数字:
<el-badge is-dot class="item">
<el-button>新消息el-button>
el-badge>
可以通过 CSS 自定义标记的样式,包括大小、颜色、字体等:
.custom-badge .el-badge__content {
background-color: #e6a23c;
color: #fff;
border-radius: 5px;
}
并在组件上添加自定义类:
<el-badge value="5" class="custom-badge">el-badge>
Element Plus 的 Card
组件用于展示内容的容器,类似于卡片的样式,常用于展示列表项、文章摘要等。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
卡片的基本 HTML 结构如下:
<el-card>
卡片内容
el-card>
可以为卡片添加头部和底部:
<el-card>
<template #header>
卡片头部
template>
卡片内容
<template #footer>
卡片底部
template>
el-card>
可以设置卡片的阴影效果:
<el-card shadow="always">
卡片内容
el-card>
shadow
属性可以设置为 always
、hover
或 never
。
可以设置卡片是否显示边框:
<el-card :border="false">
无边框卡片内容
el-card>
可以设置卡片的尺寸,通过 CSS 来控制:
.custom-card {
width: 300px;
height: 200px;
}
并在组件上添加自定义类:
<el-card class="custom-card">
自定义尺寸卡片内容
el-card>
可以通过 CSS 自定义卡片的样式,包括背景色、边框颜色等:
.my-card {
background-color: #f9f9f9;
border-color: #e1e1e1;
}
并在组件上添加自定义类:
<el-card class="my-card">
自定义样式卡片内容
el-card>
卡片可以包含图片和列表,用于展示文章摘要或项目列表:
<el-card>
<img src="image-url.jpg" alt="图片描述" class="image">
<div class="list">
<ul>
<li>列表项1li>
<li>列表项2li>
ul>
div>
el-card>
可以将多个卡片组合使用,形成卡片组:
<el-row :gutter="20">
<el-col :span="8">
<el-card>卡片1el-card>
el-col>
<el-col :span="8">
<el-card>卡片2el-card>
el-col>
<el-col :span="8">
<el-card>卡片3el-card>
el-col>
el-row>
Element Plus 的 Steps
组件用于展示步骤或流程的进度,常用于向用户展示任务的当前阶段和剩余步骤。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
步骤条的基本 HTML 结构如下:
<el-steps :active="activeStep" finish-status="success">
<el-step title="步骤 1" description="步骤 1 的描述">el-step>
<el-step title="步骤 2" description="步骤 2 的描述">el-step>
<el-step title="步骤 3" description="步骤 3 的描述">el-step>
el-steps>
这里,:active
属性用于设置当前活动的步骤索引,finish-status
属性用于设置完成步骤的状态颜色。
步骤条的每个步骤可以有不同的状态:
wait
:等待process
:进行中finish
:完成error
:错误<el-step title="步骤 1" status="process">el-step>
可以为步骤设置图标:
<el-step title="步骤 1" icon="el-icon-edit">el-step>
可以设置步骤条为垂直方向:
<el-steps direction="vertical" :active="activeStep">
el-steps>
可以设置步骤条为简单模式,隐藏每个步骤的描述信息:
<el-steps :active="activeStep" simple>
el-steps>
可以通过 CSS 自定义步骤条的样式:
.custom-steps .el-step__title {
font-weight: bold;
}
.custom-steps .el-step__description {
color: #666;
}
并在组件上添加自定义类:
<el-steps class="custom-steps" :active="activeStep">
el-steps>
可以动态地添加或删除步骤:
data() {
return {
activeStep: 1,
steps: [
{ title: '步骤 1', description: '步骤 1 的描述' },
// 更多步骤...
]
};
},
methods: {
addStep() {
this.steps.push({ title: '新步骤', description: '新步骤的描述' });
},
removeStep() {
this.steps.splice(-1, 1); // 删除最后一个步骤
}
}
可以监听步骤变化的事件,并执行相应的操作:
<el-steps @change="handleStepChange" :active="activeStep">
el-steps>
在 Vue 组件的 methods
中定义 handleStepChange
函数:
methods: {
handleStepChange(stepIndex) {
console.log('当前步骤索引:', stepIndex);
this.activeStep = stepIndex;
}
}
Element Plus 的 Menu
组件用于创建导航菜单,它可以展示网站的层次结构,方便用户进行页面跳转。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
菜单的基本 HTML 结构如下:
<el-menu :default-openeds="['1', '2']" :default-active="'1'">
<el-submenu index="1">
<template #title>
<i class="el-icon-location">i>
导航一
template>
<el-menu-item index="1-1">选项1el-menu-item>
<el-menu-item index="1-2">选项2el-menu-item>
el-submenu>
<el-submenu index="2">
<template #title>
<i class="el-icon-menu">i>
导航二
template>
<el-menu-item index="2-1">选项3el-menu-item>
<el-menu-item index="2-2">选项4el-menu-item>
el-submenu>
el-menu>
这里,:default-openeds
属性用于设置默认展开的菜单项索引,:default-active
属性用于设置默认激活的菜单项索引。
菜单有不同的类型,通过 :unique-opened
属性来设置:
unique-opened
:同一时间只有一个子菜单可以展开。<el-menu :default-openeds="['1']" :unique-opened="true">
el-menu>
菜单可以设置不同的模式,通过 mode
属性来指定:
vertical
:垂直模式(默认)horizontal
:水平模式<el-menu mode="horizontal">
el-menu>
菜单项通过 el-menu-item
组件定义,可以设置点击事件:
<el-menu-item index="1" @click="handleMenuItemClick">
菜单项 1
el-menu-item>
在 Vue 组件的 methods
中定义 handleMenuItemClick
函数:
methods: {
handleMenuItemClick(index) {
console.log('菜单项点击:', index);
}
}
子菜单通过 el-submenu
组件定义,可以包含多个菜单项:
<el-submenu index="sub1">
<template #title>
子菜单标题
template>
<el-menu-item index="1-1">子菜单项 1el-menu-item>
<el-menu-item index="1-2">子菜单项 2el-menu-item>
el-submenu>
如果使用 Vue Router,可以设置菜单项的 route
属性来指定路由链接:
<el-menu-item index="/" route="/">首页el-menu-item>
可以通过 CSS 自定义菜单的样式:
.my-menu .el-menu-item {
color: #fff;
}
.my-menu .el-submenu__title {
background-color: #324157;
}
并在组件上添加自定义类:
<el-menu class="my-menu" mode="vertical">
el-menu>
Element Plus 的 Breadcrumb
组件用于显示网站的面包屑导航,它允许用户了解当前页面在网站结构中的位置,并且可以快速导航到上层页面。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
面包屑的基本 HTML 结构如下:
<el-breadcrumb separator="/">
<el-breadcrumb-item :to="{ path: '/' }">首页el-breadcrumb-item>
<el-breadcrumb-item>活动列表el-breadcrumb-item>
<el-breadcrumb-item>活动详情el-breadcrumb-item>
el-breadcrumb>
这里,separator
属性用于设置面包屑之间的分隔符,默认为斜杠 (/
)。
如果使用 Vue Router,可以设置 el-breadcrumb-item
的 :to
属性来指定路由链接:
<el-breadcrumb-item :to="{ name: 'home' }">首页el-breadcrumb-item>
可以自定义面包屑之间的分隔符:
<el-breadcrumb separator-class="el-icon-arrow-right">
el-breadcrumb>
面包屑项通过 el-breadcrumb-item
组件定义,可以包含文本或链接:
<el-breadcrumb-item>文本面包屑el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/category' }">链接面包屑el-breadcrumb-item>
可以通过 CSS 自定义面包屑的样式:
.my-breadcrumb .el-breadcrumb__inner {
color: #ff6700;
}
.my-breadcrumb .el-breadcrumb__inner:hover {
text-decoration: underline;
}
并在组件上添加自定义类:
<el-breadcrumb class="my-breadcrumb">
el-breadcrumb>
面包屑项可以动态生成,例如根据当前路由动态显示:
computed: {
breadcrumb() {
return [
{ to: { path: '/' }, label: '首页' },
// 根据当前路由动态生成其他面包屑项...
];
}
}
然后在模板中使用 v-for
来渲染面包屑项:
<el-breadcrumb v-for="(item, index) in breadcrumb" :key="index">
<el-breadcrumb-item v-if="item.to" :to="item.to">{{ item.label }}el-breadcrumb-item>
<el-breadcrumb-item v-else>{{ item.label }}el-breadcrumb-item>
el-breadcrumb>
Element Plus 的 Pagination
组件用于实现分页功能,允许用户通过页码导航浏览数据。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
分页的基本 HTML 结构如下:
<el-pagination
:total="100"
:page-size="10"
layout="prev, pager, next">
el-pagination>
这里,:total
属性表示总数据量,:page-size
属性表示每页显示的数据条数,layout
属性用于定义分页的布局。
可以通过 page-count
和 current-page
属性来控制显示的页数和当前页码:
<el-pagination
:total="500"
:page-size="20"
:page-count="5"
:current-page="3"
layout="prev, pager, next">
el-pagination>
分页组件的布局可以通过 layout
属性来自定义,常见的值包括:
"prev, pager, next"
:显示上一页、页码、下一页"sizes, prev, pager, next, jumper"
:添加选择每页显示数量的选项和跳转到某页的功能<el-pagination
layout="sizes, prev, pager, next, jumper"
:total="1000"
:page-size="100">
el-pagination>
可以监听分页组件的事件,如 size-change
和 current-change
:
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:total="200"
:page-size="10"
layout="sizes, prev, pager, next, jumper">
el-pagination>
在 Vue 组件的 methods
中定义事件处理函数:
methods: {
handleSizeChange(newSize) {
console.log(`每页显示条数变更为:${newSize}`);
},
handleCurrentChange(newCurrentPage) {
console.log(`当前页码变更为:${newCurrentPage}`);
}
}
可以自定义页码按钮的显示:
<el-pagination
:total="200"
:page-size="10"
:pager-count="5"
layout="prev, pager, next">
el-pagination>
:pager-count
属性定义了页码按钮的数量。
可以通过 CSS 自定义分页组件的样式:
.my-pagination .el-pager li {
color: #409eff;
}
.my-pagination .el-pagination__total {
color: #666;
}
并在组件上添加自定义类:
<el-pagination class="my-pagination"
:total="300"
:page-size="20"
layout="prev, pager, next">
el-pagination>
Element Plus 的 Loading
组件用于在数据加载过程中向用户显示一个加载指示器,提高用户体验。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:
加载中的的基本 HTML 结构如下:
<el-loading>el-loading>
这将显示一个全屏的加载指示器。el-loading
组件提供了多种方式来自定义加载效果。
可以使用 target
属性指定加载动画的容器,而不是全屏显示:
<div class="box">
<el-loading :target="'.box'">el-loading>
div>
使用 lock
属性可以锁定滚动条,防止用户在加载时滚动页面:
<el-loading lock>el-loading>
可以设置加载动画的背景颜色:
<el-loading background-color="rgba(255, 255, 255, 0.9)">el-loading>
Element Plus 提供了 useLoading
服务,允许你在组合式 API 中使用:
import { useLoading } from 'element-plus';
export default {
setup() {
const loading = useLoading();
return {
openLoading() {
loading.service.start();
},
closeLoading() {
loading.service.end();
}
};
}
};
Element Plus 还提供了全局方法 ElLoading
来控制加载动画:
// 显示加载动画
const loadingInstance = ElLoading.service({ lock: true, background: 'rgba(0, 0, 0, 0.7)' });
// 隐藏加载动画
loadingInstance.close();
在 Vue 2 中,可以使用 v-loading
指令在元素上直接绑定加载状态:
<div v-loading="loading">div>
在 Vue 3 中,可以使用 v-cloak
结合 setup
来实现:
import { ref } from 'vue';
export default {
setup() {
const loading = ref(false);
return {
loading
};
}
};
然后在模板中使用:
<div v-cloak v-show="loading">
<el-loading>el-loading>
div>
可以通过 CSS 自定义加载指示器的样式:
.custom-loading .el-loading-spinner {
/* 自定义旋转器样式 */
}
.custom-loading .el-loading-spinner i {
/* 自定义旋转器图标样式 */
}
并在组件上添加自定义类:
<el-loading class="custom-loading">el-loading>
以上是 V 哥整理的20个 Element-Plus 的核心组件,这篇内容正如学习手册一样,方便大伙使用时查阅,因此,小伙伴们可以收藏起来,以备不时之需。好了,今天的内容就到这里,欢迎关注威哥爱编程,分享更多全栈技术知识。