Vue3?UI組件庫Element?Plus實例詳解
1、開關(guān)與滑塊組件
開關(guān)是很常見的一種頁面元素,有開和關(guān)兩種狀態(tài)來支持用戶交互。在Element Plus中,使用el-switch來創(chuàng)建開關(guān)組件。開關(guān)組件的狀態(tài)只有兩種,如果需要使用連續(xù)狀態(tài)的組件,則可以使用el-slider組件,這個組件能夠渲染出進度條與滑塊,用戶可以方便地對進度進行調(diào)節(jié)。
1.1、開關(guān)組件
el-switch組件支持開發(fā)者對開關(guān)顏色、背景顏色等進行定制,常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
disabled | 設(shè)置是否禁用 | 布爾值 |
loading | 設(shè)置是否加載中 | 布爾值 |
width | 設(shè)置按鈕的寬度 | 數(shù)值 |
active-text | 設(shè)置開關(guān)打開時的文字描述 | 字符串 |
inactive-text | 設(shè)置開關(guān)關(guān)閉時的文字描述 | 字符串 |
active-value | 設(shè)置開關(guān)打開時的值 | 布爾值/字符串/數(shù)值 |
inactive-value | 設(shè)置開關(guān)關(guān)閉時的值 | 布爾值/字符串/數(shù)值 |
active-color | 設(shè)置開關(guān)打開是的背景色 | 字符串 |
inactive-color | 設(shè)置開關(guān)關(guān)閉時的背景色 | 字符串 |
validate-event | 改變開關(guān)狀態(tài)時,是否觸發(fā)表單校驗 | 布爾值 |
before-change | 開關(guān)狀態(tài)之前調(diào)用的函數(shù) | 函數(shù) |
Change | 開關(guān)狀態(tài)發(fā)生變化后調(diào)用的函數(shù) | 函數(shù) |
下面的代碼將演示幾種基礎(chǔ)的標(biāo)簽樣式:
<template>
<div style="margin: 20px;">
<el-switch
v-model="switch1"
active-text="會員"
inactive-text="非會員"
active-color="#00FF00"
inactive-color="#FF0000">
</el-switch>
<el-switch
v-model="switch2"
active-text="加載中"
:loading="true">
</el-switch>
<el-switch
v-model="switch3"
inactive-text="禁用"
:disabled="true">
</el-switch>
</div>
</template>

1.2、滑塊組件
當(dāng)頁面元素有多種狀態(tài)時,我們可以嘗試使用滑塊組件來實現(xiàn)。滑塊組件既支持承載連續(xù)變化的值,也支持承載離散變化的值。同時,滑塊組件還支持結(jié)合輸入框一起使用,可謂非常強大。el-slider組件的常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
min | 設(shè)置滑塊的最小值 | 數(shù)值 |
max | 設(shè)置滑塊的最大值 | 數(shù)值 |
disabled | 設(shè)置是否禁用滑塊 | 布爾值 |
step | 設(shè)置滑塊步長 | 數(shù)值 |
show-input | 設(shè)置是否顯示輸入框 | 布爾值 |
show-input-controls | 設(shè)置顯示的輸入框是否有控制按鈕 | 布爾值 |
input-size | 設(shè)置輸入框尺寸 | large small default |
show-stops | 是否顯示間斷點 | 布爾值 |
show-tooltip | 是否顯示刻度提示 | 布爾值 |
format-tooltip | 對刻度信息進行格式化 | 函數(shù) |
range | 設(shè)置是否為范圍選擇模式 | 布爾值 |
vertical | 設(shè)置是否為豎向模式 | 布爾值 |
height | 設(shè)置豎向模式時滑塊組件的高度 | 字符串 |
marks | 設(shè)置標(biāo)記 | 對象 |
change | 滑塊組件的值發(fā)生變化時調(diào)用的函數(shù),只在鼠標(biāo)拖動結(jié)束觸發(fā) | 函數(shù) |
input | 滑塊組件的值發(fā)生變化時調(diào)用的函數(shù),鼠標(biāo)揉動過程中也會觸發(fā) | 函數(shù) |
滑塊組件默認(rèn)的取值范圍為0~100,我們幾乎無須設(shè)置任何額外屬性,就可以對滑塊組件進行使用,例如:
<script setup>
import { ref, watch } from 'vue'
const sliderValue = ref(50)
</script>
<template>
<div style="margin: 20px;">
<el-slider v-model="sliderValue"></el-slider>
</div>
</template>
可以看到,當(dāng)我們對滑塊進行拖動時,當(dāng)前的值會顯示在滑塊上方,對于顯示的文案,我們可以通過format-tooltip屬性來進行定制。例如,要進行百分比顯示,示例代碼如下:
<el-slider v-model="sliderValue" :format-tooltip="format"></el-slider>
format函數(shù)實現(xiàn)如下:
const format = (value)=>{
return `${value}%`
}

如果滑塊組件可選中的值為離散的,我們可以通過step屬性來進行控制,在上面代碼的基礎(chǔ)上,若只允許選擇以10%為間隔的值,示例代碼如下:
<el-slider
v-model="sliderValue"
:format-tooltip="format"
:step="10"
:show-stops="true"
></el-slider>

如果設(shè)置了show-input屬性的值為true,則頁面還會渲染出一個輸入框,輸入框中輸入的值與滑塊組件的值之間是聯(lián)動的,如圖所示。

el-slider組件也支持進行范圍選擇,當(dāng)我們需要讓用戶選中一段范圍時,可以設(shè)置其range屬性為true,效果如圖所示。

最后,我們再來看一下el-slider組件的marks屬性,這個屬性可以為滑塊的進度條配置一組標(biāo)記,對于一些重要節(jié)點,還可以使用標(biāo)記進行突出展示。示例代碼如下:
<el-slider v-model="sliderValue" :marks="marks"></el-slider>
marks數(shù)據(jù)配置如下:
const marks = {
0: '起點',
50: '半程',
90: {
style: {color: '#ff0000'},
label: '就到終點啦'
}
}

2、選擇器組件
選擇器組件的使用場景與選擇列表類似,只是其場景更加定制化。Element Plus中提供了時間日期、顏色相關(guān)的選擇器,在需要的場景中可以直接使用。
2.1、時間選擇器
el-time-picker用來創(chuàng)建時間選擇器,可以方便地供用戶選擇一個時間點或時間范圍。el-time-picker中的常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
readonly | 設(shè)置是否只讀 | 布爾值 |
disabled | 設(shè)置是否禁用 | 布爾值 |
clearable | 設(shè)置是否清晰顯示按鈕 | 布爾值 |
size | 設(shè)置輸入框尺寸 | large small default |
placeholder | 設(shè)置占位內(nèi)容 | 字符串 |
start-placeholder | 在范圍選擇模式下,設(shè)置起始時間的占位內(nèi)容 | 字符串 |
end-placeholder | 在范圍選擇模式下,設(shè)置結(jié)束時間的占位內(nèi)容 | 字符串 |
is-range | 設(shè)置是否為范圍選擇模式 | 布爾值 |
arrow-control | 設(shè)置是否使用箭頭進行時間選擇 | 布爾值 |
align | 設(shè)置對齊方式 | left center right |
range-separator | 設(shè)置范圍選擇時的分隔符 | 字符串 |
format | 顯示在輸入框的時間格式 | 字符串,默認(rèn)為HH:mm:ss |
default-value | 設(shè)置選擇器打開時默認(rèn)顯示的時間 | 時間對象 |
prefix-icon | 設(shè)置頭部圖標(biāo) | 字符串 |
clear-icon | 自定義清空圖標(biāo) | 字符串 |
disabledHours | 禁止選擇某些小時 | 函數(shù) |
disabledMinutes | 禁止選擇某些分鐘 | 函數(shù) |
disabledSeconds | 禁止選擇某些秒 | 函數(shù) |
change | 用戶選擇的值發(fā)生變化時觸發(fā) | 函數(shù) |
blur | 輸入框失去焦點時觸發(fā) | 函數(shù) |
focus | 輸入框獲取焦點時觸發(fā) | 函數(shù) |
下面的代碼將演示el-time-picker組件的基本使用方法。
<el-time-picker
:is-range="true"
v-model="time"
range-separator="~"
:arrow-control="true"
start-placeholder="開始時間"
end-placeholder="結(jié)束時間"
>
</el-time-picker>

注意,el-time-picker創(chuàng)建的時間選擇器的樣式是表格類型的,Element Plus框架中還提供了一個el-time-select組件,這個組件渲染出的選擇器是列表樣式的。
<el-time-select
v-model="value"
style="width: 240px"
start="08:30"
step="00:15"
end="18:30"
placeholder="Select time"
/>

2.2、日期選擇器
el-time-picker提供了對時間選擇的支持,如果還要選擇日期,可以使用el-date-picker組件。此組件會渲染出一個日歷視圖,用戶可以在日歷視圖上方便地進行日期選擇。el-data-picker組件的常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
readonly | 設(shè)置是否只讀 | 布爾值 |
disabled | 設(shè)置是否禁用 | 布爾值 |
editable | 設(shè)置本文框是否可編輯 | 布爾值 |
clearable | 設(shè)置是否清晰顯示按鈕 | 布爾值 |
size | 設(shè)置輸入框組件的尺寸 | large small default |
placeholder | 設(shè)置輸入框的占位內(nèi)容 | 字符串 |
start-placeholder | 在范圍選擇模式下,設(shè)置起始日期的占位內(nèi)容 | 字符串 |
end-placeholder | 在范圍選擇模式下,設(shè)置結(jié)束日期的占位內(nèi)容 | 字符串 |
type | 日歷的類型 | year month date dates week datetime datetimerange daterange daterange monthrange |
format | 日期的格式 | 字符串,默認(rèn)為YYYY-MM-DD |
range-separator | 設(shè)置分隔符 | 字符串 |
default-value | 設(shè)置默認(rèn)日期 | Date對象 |
prefix-icon | 設(shè)置頭部圖標(biāo) | 字符串 |
clear-icon | 自定義清空圖標(biāo) | 字符串 |
validate-event | 輸入時是否觸發(fā)表單的校驗 | 布爾值 |
disabledDatte | 設(shè)置需要禁用的日期 | 函數(shù) |
change | 用戶選擇的值發(fā)生變化時觸發(fā) | 函數(shù) |
blur | 輸入框失去焦點時觸發(fā) | 函數(shù) |
focus | 輸入框獲取焦點時觸發(fā) | 函數(shù) |
el-data-picker組件的簡單用法示例如下:
<el-date-picker
v-model="date"
type="daterange"
range-separator="至"
start-placeholder="開始日期"
end-placeholder="結(jié)束日期"
>
</el-date-picker>

注意,當(dāng)el-data-picker組件的type屬性設(shè)置為datatime時,它同時支持選擇日期和時間,使用非常方便。
2.3、顏色選擇器
顏色選擇器能夠提供一個調(diào)色板組件,用戶可以方便地在調(diào)色板上進行顏色的選擇。在一些場景下,如果頁面支持用戶進行顏色定制,可以使用顏色選擇器組件。顏色選擇器使用el-color-picker創(chuàng)建,常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
disabled | 設(shè)置是否禁用 | 布爾值 |
size | 設(shè)置尺寸 | large small default |
show-alpha | 設(shè)置是否支持透明度選擇 | 布爾值 |
color-format | 設(shè)置顏色格式 | hsl hsv hex rgb |
predefine | 設(shè)置預(yù)定義顏色 | 數(shù)組 |
顏色選擇器的簡單使用示例如下:
<el-color-picker :show-alpha="true" v-model="color"></el-color-picker>

3、提示類組件
Element Plus框架中提供了許多提示類的組件,這類組件在實際開發(fā)中應(yīng)用非常頻繁。當(dāng)我們需要對某些用戶的操作做出提示時,就可以使用這類組件。Element Plus框架中提供的提示類組件交互非常友好,主要包括警告組件、加載提示組件、消息提醒組件、通知和彈窗組件等。
3.1、警告組件
警告組件用來在頁面上展示重要的提示信息,頁面產(chǎn)生錯誤、用戶交互處理產(chǎn)生失敗等場景都可以使用警告組件來提示用戶。警告組件使用el-alert創(chuàng)建,有4種類型,分別可以使用在操作成功提示、普通信息提示、行為警告提示和操作錯誤提示場景下。
el-alert警告組件的常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
title | 設(shè)置標(biāo)題 | 字符串 |
type | 設(shè)置類型 | success warning info error |
description | 設(shè)置描述文案 | 字符串 |
closeable | 設(shè)置是否可以關(guān)閉提示 | 布爾值 |
center | 設(shè)置文本是否居中顯示 | 布爾值 |
close-text | 自定義關(guān)閉按鈕的文本 | 字符串 |
show-icon | 設(shè)置是否顯示圖標(biāo) | 布爾值 |
effect | 設(shè)置主題 | light dark |
close | 關(guān)閉提示時觸發(fā)的事件 | 函數(shù) |
下面的代碼將演示不同類型的警告提示樣式。
<el-alert title="成功提示的文案" type="success"> </el-alert>
<br />
<el-alert title="消息提示的文案" type="info"> </el-alert>
<br />
<el-alert title="警告提示的文案" type="warning"> </el-alert>
<br />
<el-alert title="錯誤提示的文案" type="error"> </el-alert>

單擊提示欄上的“關(guān)閉”按鈕,提示欄會自動被消除。
注意,el-alert是一種常駐的提示組件,除非用戶手動單擊“關(guān)閉”按鈕,否則提示框不會自動關(guān)閉。
3.2、消息提示
3.2.1、簡單提示ElMessage
Element Plus中提供了主動觸發(fā)消息提示的方法,當(dāng)觸發(fā)消息提示時,頁面頂部會出現(xiàn)一個提示欄,展示3秒后自動消失。簡單示例如下:
<el-button @click="popTip">彈出信息提示</el-button>
實現(xiàn)popTip方法如下:
<script setup>
import { ref, watch } from 'vue'
import {ElMessage} from 'element-plus'
function popTip() {
ElMessage({
message: '提示內(nèi)容',
type: 'warning'
})
}
</script>

ELMessage是Element Plus中內(nèi)置的方法,將其引入后可以直接使用。此方法的可配置參數(shù)列舉如表所示。
| 參數(shù)名 | 意義 | 值 |
|---|---|---|
message | 設(shè)置提示的消息文字 | 字符串或VNode |
type | 設(shè)置提示組件的類型 | success warning info error |
duration | 設(shè)置展示時間 | 數(shù)值,單位為毫秒,默認(rèn)為3000 |
showClose | 是否展示關(guān)閉按鈕 | 布爾值 |
center | 設(shè)置文字是否居中 | 布爾值 |
onClose | 提示欄關(guān)閉時回調(diào)的函數(shù) | 函數(shù) |
offset | 設(shè)置出現(xiàn)提示欄的位置距離窗口頂部的偏移量 | 數(shù)值 |
3.2.2、復(fù)雜提示ElMessageBox
ELMessage方法適用于對用戶進行簡單提示的場景,如果需要進行用戶交互,則Element Plus中提供了另一個ELMessageBox方法,此方法類似于系統(tǒng)的alert、confirm和prompt方法,可以進行用戶交互。示例代碼如下:
<script setup>
import { ref, watch } from 'vue'
import {ElMessage, ElMessageBox} from 'element-plus'
function popTip() {
ElMessageBox({
title: '提示',
message: '詳細的提示內(nèi)容',
type: 'warning',
showCancelButton: true,
showConfirmButton: true,
showInput: true
})
}
</script>

ELMessageBox方法的可配置參數(shù)列舉如表所示。
| 參數(shù)名 | 意義 | 值 |
|---|---|---|
title | 設(shè)置提示框標(biāo)題 | 字符串 |
message | 設(shè)置提示框展示的信息 | 字符串 |
type | 設(shè)置提示框類型 | success info warning error |
callback | 用戶交互的回調(diào),當(dāng)用戶單擊提示框上的按鈕時觸發(fā) | 函數(shù) |
showClose | 設(shè)置是否展示關(guān)閉按鈕 | 布爾值 |
beforeClose | 提示框關(guān)閉前的回調(diào) | 函數(shù) |
lockScroll | 是否在提示框出現(xiàn)時將頁面滾動鎖定 | 布爾值 |
showCancelButton | 設(shè)置是否顯示取消按鈕 | 布爾值 |
showConfirmButton | 設(shè)置是否顯示確認(rèn)按鈕 | 布爾值 |
cancelButtonText | 自定義取消按鈕文本 | 字符串 |
confirmButtonText | 自定義確認(rèn)按鈕的文本 | 字符串 |
closeOnClickModal | 設(shè)置是否可以通過單擊遮罩關(guān)閉當(dāng)前的提示框 | 布爾值 |
closeOnPressEscape | 設(shè)置是否可以通過按ESC鍵來關(guān)閉當(dāng)前提示框 | 布爾值 |
showInput | 設(shè)置是否展示輸入框 | 布爾值 |
inputPlaceholder | 設(shè)置輸入框的占位文案 | 字符串 |
inputValue | 設(shè)置輸入框的初始文案 | 字符串 |
inputValidator | 設(shè)置輸入框的校驗方法 | 函數(shù) |
inputErrorMessage | 設(shè)置校驗不通過時展示的文案 | 字符串 |
center | 設(shè)置布局是否居中 | 布爾值 |
roundButton | 設(shè)置是否使用圓角按鈕 | 布爾值 |
3.3、通知組件
通知用來全局地進行系統(tǒng)提示,可以像消息提醒一樣出現(xiàn)一定時間后自動關(guān)閉,也可以像提示欄那樣常駐,只有用戶手動才能關(guān)閉。在Vue組件中,可以直接調(diào)用方法EINotification來觸發(fā)通知,常用的參數(shù)定義列舉如表所示。
| 參數(shù)名 | 意義 | 值 |
|---|---|---|
title | 設(shè)置通知的標(biāo)題 | 字符串 |
message | 設(shè)置通知的內(nèi)容 | 字符串 |
type | 設(shè)置通知的樣式 | success warning info error |
duration | 設(shè)置通知的顯示時間 | 數(shù)值,若設(shè)置為0,則不會自動消失 |
position | 設(shè)置通知的彈出位置 | top-right top-left bottom-right bottom-left |
showClose | 設(shè)置是否展示關(guān)閉按鈕 | 布爾值 |
onClose | 通知關(guān)閉時回調(diào)的函數(shù) | 函數(shù) |
offset | 設(shè)置通知距離頁面邊緣的偏移量 | 數(shù)值 |
示例代碼如下:
<script setup>
import { ElNotification } from 'element-plus'
function notify() {
ElNotification({
title: '通知標(biāo)題',
message: '通知內(nèi)容',
type: 'success',
duration: 3000,
position: 'top-right'
})
}
</script>
<template>
<div style="margin: 20px;">
<el-button @click="notify">彈出通知</el-button>
</div>
</template>
4、數(shù)據(jù)承載相關(guān)組件
4.1、表格組件
表格組件能夠承載大量的數(shù)據(jù)信息。因此,在實際開發(fā)中,需要展示大量數(shù)據(jù)的頁面都會使用到表格組件。在Element Plus中,使用el-table與el-table-column組件來構(gòu)建表格。首先,編寫如下示例代碼:
<template>
<div style="margin: 20px;">
<el-table :data="tableData">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年齡"></el-table-column>
<el-table-column prop="subject" label="科目"></el-table-column>
</el-table>
</div>
</template>
tableData數(shù)據(jù)結(jié)構(gòu)如下:
<script setup>
import {ref} from 'vue';
const tableData = [
{name: '小王', age: 29, subject: 'Java'},
{name: '小李', age: 30, subject: 'C++'},
{name: '小張', age: 28, subject: 'JavaScript'}
]
</script>
其中,el-table-column用來定義表格中的每一列,其prop屬性設(shè)置此列要渲染的數(shù)據(jù)對應(yīng)表格數(shù)據(jù)中的鍵名,label屬性設(shè)置列頭信息,代碼運行效果如圖所示。

el-table和el-table-column組件提供了非常多的屬性供開發(fā)者進行定制,列舉如下。
el-table組件的常用屬性表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
data | 設(shè)置列表的數(shù)據(jù)源 | 數(shù)組 |
height | 設(shè)置表格的高度,如果設(shè)置了這個屬性,表格頭會被固定 | 數(shù)值 |
max-height | 設(shè)置表格的最大高度 | 數(shù)值 |
stripe | 設(shè)置表格是否有斑馬紋,即相鄰的行有顏色差異 | 布爾值 |
border | 設(shè)置表格是否有邊框 | 布爾值 |
size | 設(shè)置表格的尺寸 | small large default |
fit | 設(shè)置列的寬度是否自適應(yīng) | 布爾值 |
show-header | 設(shè)置是否顯示表頭 | 布爾值 |
highlight-current-row | 設(shè)置是否高亮顯示當(dāng)前行 | 布爾值 |
row-class-name | 用來設(shè)置行的class屬性,需要設(shè)置為回調(diào)函數(shù) | Function({row,rowIndex)可以指定不同的行使用不同的className,返回字符串 |
row-style | 用來設(shè)置行的style屬性,需要設(shè)置為回調(diào)函數(shù) | Function(frow,rowIndex)可以指定不同的行使用不同的style,返回樣式對象 |
cell-class-name | 用來設(shè)置具體單元格的className | Function(frow,column,rowIndex,columnIndex) |
cell-style | 用來設(shè)置具體單元格的style屬性 | Function(frow,column,rowIndex,columnIndex) |
header-row-class-name | 設(shè)置表頭行的className | Function(row,rowIndex) |
header-row-style | 設(shè)置表頭行的style屬性 | Function(row,rowIndex) |
header-cell-class-name | 設(shè)置表頭單元格的className | Function(frow.column.rowIndex.columnIndex) |
header-cell-style | 設(shè)置表頭單元格的style屬性 | Function(frow.column.rowIndex,columnIndex;) |
row-key | 用來設(shè)置行的key值 | Function(row) |
empty-text | 設(shè)置空數(shù)據(jù)時展示的占位內(nèi)容 | 字符串 |
default-expand-all | 設(shè)置是否默認(rèn)展開所有行 | 布爾值 |
expand-row-keys | 設(shè)置要默認(rèn)展開的行 | 數(shù)組 |
default-sort | 設(shè)置排序方式 | ascending:升序 descending:降序 |
show-summary | 是否在表格尾部顯示合計行 | 布爾值 |
sum-text | 設(shè)置合計行第一列的文本 | 字符串 |
summary-method | 用來定義合計方法 | Function({columns,data}) |
span-method | 用來定義合并行或列的方法 | Function(row,column,rowIndex, columnIndex) |
lazy | 是否對子節(jié)點進行懶加載 | 布爾值 |
load | 數(shù)據(jù)懶加載方法 | 函數(shù) |
tree-props | 渲染嵌套數(shù)據(jù)的配置選項 | 對象 |
select | 選中某行數(shù)據(jù)時回調(diào)的函數(shù) | 函數(shù) |
select-all | 全選后回調(diào)的函數(shù) | 函數(shù) |
selection-change | 選擇項發(fā)生變化時回調(diào)的函數(shù) | 函數(shù) |
cell-mouse-enter | 鼠標(biāo)覆蓋到單元格時回調(diào)的函數(shù) | 函數(shù) |
cell-mouse-leave | 鼠標(biāo)離開單元格時回調(diào)的函數(shù) | 函數(shù) |
cell-click | 當(dāng)某個單元格被單擊時回調(diào)的函數(shù) | 函數(shù) |
cell-dblclick | 當(dāng)某個單元格被雙擊時回調(diào)的函數(shù) | 函數(shù) |
row-click | 當(dāng)某一行被單擊時回調(diào)的函數(shù) | 函數(shù) |
row-contextmenu | 當(dāng)某一行被右擊時回調(diào)的函數(shù) | 函數(shù) |
row-dblclick | 當(dāng)某一行被雙擊時回調(diào)的函數(shù) | 函數(shù) |
header-click | 表頭被單擊時回調(diào)的函數(shù) | 函數(shù) |
header-contextmenu | 表頭被右擊時回調(diào)的函數(shù) | 函數(shù) |
sort-change | 排序發(fā)生變化時回調(diào)的函數(shù) | 函數(shù) |
filter-change | 篩選條件發(fā)生變化時回調(diào)的函數(shù) | 函數(shù) |
current-change | 表格當(dāng)前行發(fā)生變化時回調(diào)的函數(shù) | 函數(shù) |
header-dragend | 拖動表頭改變列寬度時回調(diào)的函數(shù) | 函數(shù) |
expand-change | 當(dāng)某一行展開會關(guān)閉時回調(diào)的函數(shù) | 函數(shù) |
通過表中的屬性列表可以看到,el-table組件非常強大,除能夠渲染常規(guī)的表格外,還支持行列合并、合計、行展開、多選、排序和篩選等,這些功能很多需要結(jié)合el-table-column來使用。
el-table-column組件的常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
type | 設(shè)置當(dāng)前列的類型,默認(rèn)無類型,則為常規(guī)的數(shù)據(jù)列 | selection:多選類型 index:標(biāo)號類型 expand:展開類型 |
index | 自定義索引 | Function(index) |
column-key | 設(shè)置列的key值,用來進行篩選 | 字符串 |
label | 設(shè)置顯示的標(biāo)題 | 字符串 |
prop | 設(shè)置此列對應(yīng)的數(shù)據(jù)字段 | 字符串 |
width | 設(shè)置列的寬度 | 字符串 |
min-width | 設(shè)置列的最小寬度 | 字符串 |
fixed | 設(shè)置此列是否固定,默認(rèn)不固定 | left:固定左側(cè) right:固定右側(cè) |
render-header | 使用函數(shù)來渲染列的標(biāo)題部分 | Function({column,Sindex } |
sortable | 設(shè)置對應(yīng)列是否可排序 | 布爾值 |
sort-method | 自定義數(shù)據(jù)排序的方法 | 函數(shù) |
sort-by | 設(shè)置以哪個字段進行排序 | 字符串 |
resizable | 設(shè)置是否可以通過拖動來改變此列的寬度 | 布爾值 |
filter-method | 自定義過濾數(shù)據(jù)的方法 | 函數(shù) |
4.2、導(dǎo)航菜單組件
導(dǎo)航組件為頁面提供導(dǎo)航功能的菜單,導(dǎo)航組件一般出現(xiàn)在頁面的頂部或側(cè)面,單擊導(dǎo)航組件上不同的欄目頁面會對應(yīng)跳轉(zhuǎn)到指定的頁面。在Element Plus中,使用el-menu、el-sub-menu與el-menu-item來定義導(dǎo)航組件。
下面的示例代碼將演示頂部導(dǎo)航的基本使用方法。
<template>
<div style="margin: 20px;">
<el-menu mode="horizontal">
<el-menu-item index="1">首頁</el-menu-item>
<el-sub-menu index="2">
<template #title>廣場</template>
<el-menu-item index="2-1">音樂</el-menu-item>
<el-menu-item index="2-2">視頻</el-menu-item>
<el-menu-item index="2-3">游戲</el-menu-item>
<el-sub-menu index="2-4">
<template #title>體育</template>
<el-menu-item index="2-4-1">籃球</el-menu-item>
<el-menu-item index="2-4-2">足球</el-menu-item>
<el-menu-item index="2-4-3">排球</el-menu-item>
</el-sub-menu>
</el-sub-menu>
<el-menu-item index="3" :disabled="true">個人中心</el-menu-item>
<el-menu-item index="4">設(shè)置</el-menu-item>
</el-menu>
</div>
</template>
如以上代碼所示,el-sub-menu的title插槽用來定義子菜單的標(biāo)題,其內(nèi)部可以繼續(xù)嵌套子菜單組件,el-menu組件的mode屬性可以設(shè)置導(dǎo)航的布局方式為水平或豎直。運行上述代碼,效果如圖所示。

el-menu組件非常簡潔,提供的可配置屬性不多,列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
mode | 設(shè)置菜單模式 | vertical:豎直 horizontal:.水平 |
collapse | 是否水平折疊收起菜單,只在vertical模式下有效 | 布爾值 |
background-color | 設(shè)置菜單的背景色 | 字符串 |
text-color | 設(shè)置菜單的文字顏色 | 字符串 |
active-text-color | 設(shè)置當(dāng)前菜單激活時的文字顏色 | 字符串 |
default-active | 設(shè)置默認(rèn)激活的菜單 | 字符串 |
default-openeds | 設(shè)置默認(rèn)展開的子菜單,需要設(shè)置為子菜單index的列表 | 數(shù)組 |
unique-opened | 是否只保持一個子菜單展開 | 布爾值 |
menu-trigger | 設(shè)置子菜單展開的觸發(fā)方式,只在horizontal模式下有效 | hover:鼠標(biāo)覆蓋展開 click:鼠標(biāo)單擊展開 |
router | 是否使用路由模式 | 布爾值 |
collapse-transition | 是否開啟折疊動畫 | 布爾值 |
select | 選中某個菜單項時回調(diào)的函數(shù) | 函數(shù) |
open | 子菜單展開時回調(diào)的函數(shù) | 函數(shù) |
close | 子菜單收起時回調(diào)的函數(shù) | 函數(shù) |
el-sub-menu組件的常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
index | 唯一標(biāo)識 | 字符串 |
show-timeout | 設(shè)置展開子菜單的延時 | 數(shù)值,單位為毫秒 |
hide-timeout | 設(shè)置收起子菜單的延時數(shù)值,單位為毫秒 | |
disabled | 設(shè)置是否禁用 | 布爾值 |
導(dǎo)航組件最重要的作用是進行頁面管理,通常我們會結(jié)合路由組件進行使用,通過導(dǎo)航與路由,頁面的跳轉(zhuǎn)管理會非常簡單方便。
4.3、標(biāo)簽頁組件
標(biāo)簽組件用來將頁面分割成幾個部分,單擊不同的標(biāo)簽可以對頁面內(nèi)容進行切換。使用el-tabs創(chuàng)建標(biāo)簽頁組件的示例代碼如下:
<template>
<div style="margin: 20px;">
<el-tabs type="border-card">
<el-tab-pane label="頁面1" name="1">頁面1</el-tab-pane>
<el-tab-pane label="頁面2" name="2">頁面2</el-tab-pane>
<el-tab-pane label="頁面3" name="3">頁面3</el-tab-pane>
<el-tab-pane label="頁面4" name="4">頁面4</el-tab-pane>
</el-tabs>
</div>
</template>
代碼運行效果如圖所示,單擊不同的標(biāo)簽將會切換不同的內(nèi)容。

el-tabs組件的常用屬性列表如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
closable | 設(shè)置標(biāo)簽是否可關(guān)閉 | 布爾值 |
addable | 標(biāo)簽是否可增加 | 布爾值 |
editable | 標(biāo)簽是否可編輯(增加和刪除) | 布爾值 |
tab-position | 標(biāo)簽欄所在的位置 | top right bottom left |
stretch | 設(shè)置標(biāo)簽是否自動撐開 | 布爾值 |
before-leave | 當(dāng)標(biāo)簽即將切換時回調(diào)的函數(shù) | 函數(shù) |
tab-click | 當(dāng)某個標(biāo)簽被選中時回調(diào)的函數(shù) | 函數(shù) |
tab-remove | 當(dāng)某個標(biāo)簽被移除時回調(diào)的函數(shù) | 函數(shù) |
tab-add | 單擊新增標(biāo)簽按鈕時回調(diào)的函數(shù) | 函數(shù) |
edit | 單擊Tab的新增或移除按鈕時回調(diào)的函數(shù) | 函數(shù) |
el-tab-pane用來定義具體的每個標(biāo)簽卡,常用屬性列舉如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
label | 設(shè)置標(biāo)簽卡的標(biāo)題 | 字符串 |
disabled | 設(shè)置當(dāng)前標(biāo)簽卡是否禁用 | 布爾值 |
name | 與標(biāo)簽卡綁定的value數(shù)據(jù) | 字符串 |
closable | 設(shè)置此標(biāo)簽卡 | 布爾值 |
lazy | 設(shè)置標(biāo)簽是否延遲渲染 | 布爾值 |
對于el-tab-pane組件,可以通過其內(nèi)部的label插槽來自定義標(biāo)題內(nèi)容。
4.4、抽屜組件
抽屜組件是一種全局的彈窗組件,在流行的網(wǎng)頁應(yīng)用中非常常見。當(dāng)用戶打開抽屜組件時,會從頁面的邊緣滑出一個內(nèi)容面板,我們可以靈活地定制內(nèi)容面板的內(nèi)容來實現(xiàn)產(chǎn)品的需求。示例代碼如下:
<script setup>
import {ref} from 'vue';
const drawer = ref(false);
</script>
<template>
<div style="margin: 20px;">
<div style="margin:300px">
<el-button @click="drawer = true" type="primary">
點我打開抽屜
</el-button>
</div>
<el-drawer
title="抽屜面板的標(biāo)題"
v-model="drawer"
direction="ltr">
抽屜面板的內(nèi)容
</el-drawer>
</div>
</template>注意,不要忘記在組件的data選項中定義drawer屬性控制抽屜的開關(guān)。在上述代碼中,我們使用按鈕控制抽屜的打開,el-drawer組件的direction屬性可以設(shè)置抽屜的打開方向。運行代碼,效果如圖所示。

4.5、布局容器組件
布局容器用來方便、快速地搭建頁面的基本結(jié)構(gòu)。通過觀察當(dāng)前流行的網(wǎng)站頁面,可以發(fā)現(xiàn),它們從布局結(jié)構(gòu)上都是十分相似的。一般都是由頭部模塊、尾部模塊、側(cè)欄模塊和主內(nèi)容模塊構(gòu)成。
在Element Plus中,使用el-container創(chuàng)建布局容器,其內(nèi)部的子元素一般包括el-header、el-aside、el-main或el-footer。其中:
- el-header定義頭部模塊
- el-aside定義側(cè)邊欄模塊
- el-main定義主內(nèi)容模塊
- el-footer定義尾部模塊
el-container組件可配置的屬性只有一個,如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
direction | 設(shè)置子元素的排列方式 | horizontal:水平 vertical:豎直 |
el-header組件和el-footer組件默認(rèn)會水平撐滿頁面,可以設(shè)置其渲染高度,如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
height | 設(shè)置高度 | 字符串 |
el-aside組件的默認(rèn)高度會撐滿頁面,可以設(shè)置其寬度,如表所示。
| 屬性 | 意義 | 值 |
|---|---|---|
width | 設(shè)置寬度 | 字符串 |
示例代碼如下:
<template>
<el-container>
<el-header height="80px" style="background-color: gray;">Header</el-header>
<el-container>
<el-aside width="200px" style="background-color: red;">Aside</el-aside>
<el-container>
<el-main>
<div style="height: 300px; background-color: #f1f1f1;">內(nèi)容</div>
</el-main>
<el-footer height="80px" style="background-color: gray;">Footer</el-footer>
</el-container>
</el-container>
</el-container>
</template>

5、綜合示例
5.1、示例一
頁面設(shè)計如下:頁面由三部分組成。首先是頂部的標(biāo)題欄,用于展示當(dāng)前頁面的名稱。其次是左側(cè)的側(cè)邊欄,用于選擇年級和班級。中間的內(nèi)容區(qū)域進一步分為兩個部分,上半部分是標(biāo)題區(qū),顯示一些控制按鈕,例如“新增學(xué)生信息”和“搜索學(xué)生信息”?;下半部分則展示當(dāng)前班級的完整學(xué)生列表,包括學(xué)生的姓名、年齡、性別以及信息添加的日期。頁面布局的草圖如圖所示。

<script setup>
import {ref} from 'vue'
const desc = ref('七年級1班學(xué)生統(tǒng)計')
const stus = ref([
{name: '小王', age: 14, sex: '男', date: '2020年8月15日'},
{name: '小張', age: 15, sex: '男', date: '2020年5月15日'},
{name: '小秋', age: 15, sex: '女', date: '2020年8月15日'},
])
function selectFunc(index) {
let strs = ['七', '八', '九']
let rank = strs[Math.floor((index - 1) / 3)]
desc.value = `${rank}年級${((index - 1) % 3) + 1}班學(xué)生統(tǒng)計`
}
</script>
<style lang="css" scoped>
.header{
font-style: 30px;
line-height: 80px;
background-color: f1f1f1;
}
.aside{
background-color: wheat;
height: 600px;
}
.subHeader{
background-color: cornflowerblue;
}
.desc{
font-style: 25px;
line-height: 80px;
color: white;
width: 800px;
}
.content{
height: 410px;
}
.footer{
height: 410px;
}
.footer{
background-color: dimgray;
color: white;
font-style: 17px;
line-height: 30px;
}
</style>
<template>
<el-container>
<el-header height="80px" style="padding: 0">
<div class="header">教務(wù)系統(tǒng)學(xué)生管理</div>
</el-header>
<el-container>
<el-aside width="200px">
<el-menu class="aside" @select="selectFunc" default-avtive="1" :unique-opened="true">
<el-sub-menu index="1">
<template #title>
<span>七年級</span>
</template>
<el-menu-item index="1">1班</el-menu-item>
<el-menu-item index="2">2班</el-menu-item>
<el-menu-item index="3">3班</el-menu-item>
</el-sub-menu>
<el-sub-menu index="2">
<template #title>
<span>八年級</span>
</template>
<el-menu-item index="4">1班</el-menu-item>
<el-menu-item index="5">2班</el-menu-item>
<el-menu-item index="6">3班</el-menu-item>
</el-sub-menu>
<el-sub-menu index="3">
<template #title>
<span>九年級</span>
</template>
<el-menu-item index="7">1班</el-menu-item>
<el-menu-item index="8">2班</el-menu-item>
<el-menu-item index="9">3班</el-menu-item>
</el-sub-menu>
</el-menu>
</el-aside>
<el-container>
<el-header height="80px" style="padding:0;margin:0">
<el-container class="subHeader">
<div class="desc">{{ desc }}</div>
<el-button style="width: 100px; height:30px; margin:20px;">新增記錄</el-button>
</el-container>
</el-header>
<el-main style="margin: 0; padding: 0">
<div class="content">
<el-table :data="stus">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年齡"></el-table-column>
<el-table-column prop="sex" label="性別"></el-table-column>
<el-table-column prop="date" label="錄入日期"></el-table-column>
</el-table>
</div>
</el-main>
<el-footer height="30px" class="footer">Vue框架搭建,Element Plus提供組件支持</el-footer>
</el-container>
</el-container>
</el-container>
</template>

5.2、示例二
- 開發(fā)一個用戶列表組件,用于展示用戶數(shù)據(jù)。
- 實現(xiàn)用戶添加功能。
- 實現(xiàn)用戶刪除功能。
<template>
<el-button @click="addUser">添加用戶</el-button>
<el-table :data="users">
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年齡"></el-table-column>
<el-table-column label="操作">
<template #default="{$index}">
<el-button @click="deleteUser({$index})">刪除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script setup>
import {ref} from 'vue'
const users = ref([
{name: '張三', age: 20},
{name: '李四', age: 25}
])
function deleteUser(user) {
//刪除用戶的邏輯
users.value.splice(indexedDB, 1)
}
function addUser() {
//添加用戶的邏輯
users.value.push({name: '新用戶', age: 30})
}
</script>
到此這篇關(guān)于Vue3 UI組件庫Element Plus實例詳解的文章就介紹到這了,更多相關(guān)vue3 ui組件庫Element Plus內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Vue實現(xiàn)點擊導(dǎo)航欄當(dāng)前標(biāo)簽后變色功能
這篇文章主要為大家詳細介紹了Vue實現(xiàn)點擊導(dǎo)航欄當(dāng)前標(biāo)簽后變色功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-08-08
vue3自定義確認(rèn)密碼匹配驗證規(guī)則的操作代碼
這篇文章主要介紹了vue3自定義確認(rèn)密碼匹配驗證規(guī)則的操作代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01
基于Vue2實現(xiàn)簡易的省市區(qū)縣三級聯(lián)動組件效果
這是一個基于Vue2的簡易省市區(qū)縣三級聯(lián)動組件,可以控制只顯示省級或只顯示省市兩級,可設(shè)置默認(rèn)值等。提供原始省市縣代碼和名稱數(shù)據(jù),適用于各種有關(guān)城市區(qū)縣的應(yīng)用。需要的朋友可以參考下2018-11-11
VUE 實現(xiàn)復(fù)制內(nèi)容到剪貼板的兩種方法
這篇文章主要介紹了VUE 實現(xiàn)復(fù)制內(nèi)容到剪貼板功能,本文通過兩種方法,給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-04-04
vue3如何通過provide和inject實現(xiàn)多層級組件通信
這篇文章主要介紹了vue3如何通過provide和inject實現(xiàn)多層級組件通信,本文通過實例代碼給大家講解的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-11-11

