【长文细说】20个ElementPlus核心组件以及使用技巧

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 提供了一系列高质量的组件,用于快速开发现代化的网页应用。以下是一些核心组件,它们在构建用户界面时非常有用:

  1. Button(按钮) - 用于创建不同类型的按钮,如主按钮、次按钮、危险按钮等。
  2. Input(输入框) - 用于收集用户输入的文本。
  3. Select(选择器) - 允许用户从下拉列表中选择一个选项。
  4. Checkbox(复选框) - 用于创建一组选项,用户可以选择多个选项。
  5. Radio(单选框) - 用于创建一组选项,用户只能选择其中一个。
  6. Switch(开关) - 用于切换选项的开/关状态。
  7. Slider(滑块) - 允许用户通过滑动选择一个值。
  8. Table(表格) - 用于展示行列数据。
  9. Form(表单) - 用于收集和验证用户输入的数据。
  10. Dialog(对话框) - 用于创建模态窗口,显示信息或获取用户输入。
  11. Tooltip(文字提示) - 当用户将鼠标悬停在元素上时显示提示信息。
  12. Popover(气泡卡片) - 类似于 Tooltip,但可以包含更复杂的内容。
  13. Alert(警告) - 用于显示警告或成功消息。
  14. Badge(标记) - 用于显示数字或状态标记。
  15. Card(卡片) - 用于以卡片形式展示内容。
  16. Steps(步骤条) - 用于展示步骤或流程的进度。
  17. Menu(菜单) - 用于创建导航菜单。
  18. Breadcrumb(面包屑) - 用于显示页面的导航路径。
  19. Pagination(分页) - 用于对数据进行分页显示。
  20. Loading(加载中) - 用于显示加载状态。

这些组件都经过精心设计,以确保它们在不同设备和屏幕尺寸上都能保持良好的响应性和一致性。使用这些组件可以大大加快开发速度,并确保应用程序的界面具有专业的外观和感觉。

下面 V 哥将一一介绍这20个组件的使用和技巧。

1. Button(按钮)

Element Plus 的 Button 组件是一个非常基础且功能丰富的 UI 组件,用于创建各种类型的按钮。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:

基本使用

按钮的基本 HTML 结构如下:

<el-button>默认按钮el-button>

这将创建一个默认样式的按钮。

类型(Type)

按钮有不同的类型,通过 type 属性来指定:

  • primary:主要按钮
  • success:成功按钮
  • warning:警告按钮
  • danger:危险按钮
  • info:信息按钮
<el-button type="primary">主要按钮el-button>
<el-button type="success">成功按钮el-button>

尺寸(Size)

按钮有不同的尺寸,通过 size 属性来指定:

  • medium:中等尺寸
  • small:小尺寸
  • mini:迷你尺寸
<el-button size="medium">中等按钮el-button>
<el-button size="small">小按钮el-button>
<el-button size="mini">迷你按钮el-button>

禁用状态(Disabled)

可以通过 disabled 属性来设置按钮的禁用状态:

<el-button disabled>不可点击的按钮el-button>

加载状态(Loading)

按钮可以设置为加载状态,通常用于表单提交等操作:

<el-button loading>Loading...el-button>

图标(Icon)

可以在按钮中加入图标,Element Plus 提供了多种图标供选择:

<el-button icon="el-icon-search">搜索el-button>

圆形按钮(Circle)

按钮可以设置为圆形:

<el-button type="primary" circle>圆形按钮el-button>

文本按钮(Text)

按钮可以设置为文本按钮:

<el-button type="text">文本按钮el-button>

点击事件(Event)

可以为按钮添加点击事件处理函数:

<el-button @click="handleClick">点击我el-button>

然后在 Vue 组件的 methods 中定义 handleClick 函数:

methods: {
  handleClick() {
    console.log('按钮被点击了!');
  }
}

自定义样式

可以通过 CSS 来自定义按钮的样式,例如改变背景色、字体大小等。

使用技巧

  • 组合使用:可以将不同类型的按钮组合使用,以适应不同的场景和用户操作。
  • 与表单结合:按钮通常与表单结合使用,用于提交表单数据。
  • 响应式设计:确保按钮在不同设备上都有良好的显示效果。
  • 可访问性:确保按钮对于键盘和屏幕阅读器用户也是可访问的。

2. Input(输入框)

Element Plus 的 Input 组件是一个基础的表单输入组件,用于创建文本输入框。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:

基本使用

输入框的基本 HTML 结构如下:

<el-input placeholder="请输入内容">el-input>

这将创建一个带有占位符文本的文本输入框。

绑定值(v-model)

在 Vue 中,通常使用 v-model 指令来创建数据双向绑定:

<el-input v-model="inputValue" placeholder="请输入内容">el-input>

在 Vue 组件的 data 中定义 inputValue

data() {
  return {
    inputValue: '' // 初始为空字符串
  };
}

类型(Type)

输入框有多种类型,通过 type 属性来指定:

  • text:文本输入(默认)
  • textarea:多行文本输入
  • password:密码输入,输入内容会被隐藏
<el-input type="textarea" placeholder="多行文本输入">el-input>
<el-input type="password" placeholder="密码输入" show-password>el-input>

show-password 是一个布尔属性,用于切换显示/隐藏密码。

尺寸(Size)

输入框有不同的尺寸,通过 size 属性来指定:

  • medium:中等尺寸
  • small:小尺寸
  • mini:迷你尺寸
<el-input size="medium" placeholder="中等尺寸">el-input>
<el-input size="small" placeholder="小尺寸">el-input>

禁用状态(Disabled)

可以通过 disabled 属性来设置输入框的禁用状态:

<el-input disabled placeholder="禁用的输入框">el-input>

只读状态(Readonly)

可以通过 readonly 属性来设置输入框的只读状态:

<el-input readonly value="只读内容">el-input>

清除功能(Clearable)

输入框可以添加清除图标,通过点击可以清空输入内容:

<el-input clearable placeholder="可清除的输入框">el-input>

前置/后置内容(Prefix/Suffix)

可以在输入框的前面或后面添加图标或其他内容:

<el-input prefix-icon="el-icon-search" placeholder="搜索">el-input>
<el-input suffix-icon="el-icon-edit" placeholder="编辑">el-input>

事件处理(Events)

可以为输入框添加事件处理,如 input 事件用于监听输入内容的变化:

<el-input v-model="inputValue" @input="handleInput">el-input>

在 Vue 组件的 methods 中定义 handleInput 函数:

methods: {
  handleInput(value) {
    console.log('输入内容变化:', value);
  }
}

自定义验证(Validation)

输入框通常与表单验证结合使用,可以通过 el-formel-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 组件进行表单验证。
  • 动态类型:根据用户输入或应用逻辑动态更改输入框类型,如密码输入框在输入完成后切换为文本输入以供校验。
  • 响应式设计:确保输入框在不同设备上都有良好的显示效果。
  • 可访问性:确保输入框对于键盘和屏幕阅读器用户也是可访问的。

3. Select(选择器)

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 用于定义选项。

绑定值(v-model)

Select 组件使用 v-model 来绑定选中的值:

data() {
  return {
    selectedValue: '' // 初始为空字符串
  };
}

选项(Options)

选项通过 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)

可以通过 disabled 属性来设置选择器的禁用状态:

<el-select disabled v-model="selectedValue">
  
el-select>

可清空(Clearable)

选择器可以添加清空功能,允许用户清空已选择的选项:

<el-select clearable v-model="selectedValue">
  
el-select>

多选(Multiple)

选择器可以设置为多选模式,允许用户选择多个选项:

<el-select v-model="selectedValues" multiple placeholder="请选择">
  <el-option label="选项1" value="option1">el-option>
  
el-select>

在多选模式下,v-model 绑定的变量应该是一个数组:

data() {
  return {
    selectedValues: [] // 初始为空数组
  };
}

尺寸(Size)

选择器有不同的尺寸,通过 size 属性来指定:

  • medium:中等尺寸(默认)
  • small:小尺寸
  • mini:迷你尺寸
<el-select size="small" v-model="selectedValue">
  
el-select>

过滤(Filterable)

选择器可以设置为可过滤模式,允许用户输入文本来过滤选项:

<el-select filterable v-model="selectedValue">
  
el-select>

远程搜索(Remote Search)

选择器支持远程搜索,即选项不是静态定义的,而是根据用户的输入动态从服务器获取:

<el-select
  filterable
  remote
  reserve-keyword
  v-model="selectedValue"
  :remote-method="remoteSearch"
  placeholder="请输入关键词">
  
el-select>

在 Vue 组件中定义 remoteSearch 方法:

methods: {
  remoteSearch(query) {
    // 根据 query 发起远程搜索请求
  }
}

自定义模板(Custom Template)

可以选择器选项中使用自定义模板,以更灵活地展示选项内容:

<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 组件进行表单验证。
  • 响应式设计:确保选择器在不同设备上都有良好的显示效果。
  • 可访问性:确保选择器对于键盘和屏幕阅读器用户也是可访问的。

4. Checkbox(复选框)

Element Plus 的 Checkbox 组件用于创建复选框,允许用户从一组选项中选择多个选项。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:

基本使用

复选框的基本 HTML 结构如下:

<el-checkbox v-model="checked">复选框el-checkbox>

这里,v-model 用于双向绑定复选框的选中状态。

绑定值(v-model)

复选框使用 v-model 来绑定一个布尔值,表示复选框是否被选中:

data() {
  return {
    checked: false // 初始状态为未选中
  };
}

禁用状态(Disabled)

可以通过 disabled 属性来设置复选框的禁用状态:

<el-checkbox disabled v-model="checked">不可用的复选框el-checkbox>

只读状态(Readonly)

可以通过 readonly 属性来设置复选框的只读状态:

<el-checkbox readonly v-model="checked">只读复选框el-checkbox>

可选值(True-value / False-value)

可以自定义复选框选中和未选中时绑定的值:

<el-checkbox
  v-model="checked"
  true-value="yes"
  false-value="no">
自定义值复选框
el-checkbox>

多选(Multiple)

当需要用户从多个选项中选择时,可以使用 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-checkboxlabel 属性用于指定该复选框的值。

按钮样式(Button)

复选框可以设置为按钮样式:

<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>

事件处理(Events)

可以为复选框添加事件处理,如 change 事件用于监听复选框状态的变化:

<el-checkbox v-model="checked" @change="handleCheckChange">复选框el-checkbox>

在 Vue 组件的 methods 中定义 handleCheckChange 函数:

methods: {
  handleCheckChange(value) {
    console.log('复选框状态变化:', value);
  }
}

自定义内容(Custom Content)

可以在复选框内部添加自定义内容:

<el-checkbox v-model="checked">
  <span>带自定义内容的复选框span>
el-checkbox>

使用技巧

  • 数据双向绑定:始终使用 v-model 来保持复选框的选中状态与数据状态的同步。
  • 动态选项:根据应用逻辑动态添加或删除复选框选项。
  • 表单验证:结合使用 el-form 组件进行表单验证。
  • 响应式设计:确保复选框在不同设备上都有良好的显示效果。
  • 可访问性:确保复选框对于键盘和屏幕阅读器用户也是可访问的。

5. Radio(单选框)

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)

单选框使用 v-model 来绑定选中项的值:

data() {
  return {
    radioValue: '1' // 初始选中选项1
  };
}

禁用状态(Disabled)

可以通过 disabled 属性来设置单选框的禁用状态:

<el-radio disabled v-model="radioValue" label="1">选项1el-radio>

按钮样式(Button)

单选框可以设置为按钮样式:

<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)

单选框有不同的尺寸,通过 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>

边角(Border)

单选框可以添加边框:

<el-radio border v-model="radioValue" label="1">选项1el-radio>

事件处理(Events)

可以为单选框添加事件处理,如 change 事件用于监听单选框状态的变化:

<el-radio v-model="radioValue" label="1" @change="handleRadioChange">选项1el-radio>

在 Vue 组件的 methods 中定义 handleRadioChange 函数:

methods: {
  handleRadioChange(value) {
    console.log('单选框状态变化:', value);
  }
}

自定义内容(Custom Content)

可以在单选框内部添加自定义内容:

<el-radio v-model="radioValue" label="1">
  <span>带自定义内容的单选框span>
el-radio>

使用技巧

  • 数据双向绑定:使用 v-model 来保持单选框的选中状态与数据状态的同步。
  • 动态选项:根据应用逻辑动态添加或删除单选框选项。
  • 表单验证:结合使用 el-form 组件进行表单验证。
  • 响应式设计:确保单选框在不同设备上都有良好的显示效果。
  • 可访问性:确保单选框对于键盘和屏幕阅读器用户也是可访问的。

6. Switch(开关)

Element Plus 的 Switch 组件是一个开关控件,用于表示开关状态的切换,比如打开或关闭。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:

基本使用

开关的基本 HTML 结构如下:

<el-switch v-model="switchValue">el-switch>

这里,v-model 用于双向绑定开关的状态,true 表示打开状态,false 表示关闭状态。

绑定值(v-model)

开关使用 v-model 来绑定一个布尔值,表示开关是否处于打开状态:

data() {
  return {
    switchValue: false // 初始状态为关闭
  };
}

宽度(Width)

可以设置开关的宽度:

<el-switch :width="100">el-switch>

禁用状态(Disabled)

可以通过 disabled 属性来设置开关的禁用状态:

<el-switch disabled v-model="switchValue">el-switch>

只读状态(Readonly)

可以通过 readonly 属性来设置开关的只读状态:

<el-switch readonly v-model="switchValue">el-switch>

自定义值(Active-value / Inactive-value)

可以自定义开关打开和关闭时绑定的值:

<el-switch
  v-model="switchValue"
  :active-value="true"
  :inactive-value="false">
el-switch>

事件处理(Events)

可以为开关添加事件处理,如 change 事件用于监听开关状态的变化:

<el-switch v-model="switchValue" @change="handleSwitchChange">el-switch>

在 Vue 组件的 methods 中定义 handleSwitchChange 函数:

methods: {
  handleSwitchChange(value) {
    console.log('开关状态变化:', value);
  }
}

自定义文本(Active-text / Inactive-text)

可以设置开关打开和关闭时显示的文本:

<el-switch
  v-model="switchValue"
  active-text="开启"
  inactive-text="关闭">
el-switch>

自定义颜色(Active-color / Inactive-color)

可以设置开关打开和关闭时的背景颜色:

<el-switch
  v-model="switchValue"
  active-color="#13ce66"
  inactive-color="#ff4949">
el-switch>

验证(Validate-event)

可以设置是否在点击时触发表单验证:

<el-switch validate-event v-model="switchValue">el-switch>

使用技巧

  • 数据双向绑定:使用 v-model 来保持开关的状态与数据状态的同步。
  • 自定义样式:通过 active-colorinactive-color 自定义开关的颜色。
  • 表单验证:结合使用 el-form 组件进行表单验证。
  • 响应式设计:确保开关在不同设备上都有良好的显示效果。
  • 可访问性:确保开关对于键盘和屏幕阅读器用户也是可访问的。

7. Slider(滑块)

Element Plus 的 Slider 组件是一个滑动输入控件,允许用户通过滑动选择一个值。以下是一些使用案例和技巧,以及如何使用这个组件的一些详细解释:

基本使用

滑块的基本 HTML 结构如下:

<el-slider v-model="sliderValue">el-slider>

这里,v-model 用于双向绑定滑块的值。

绑定值(v-model)

滑块使用 v-model 来绑定一个数值,表示滑块的位置:

data() {
  return {
    sliderValue: 0 // 初始值
  };
}

最小值和最大值(Min / Max)

可以设置滑块的最小值和最大值:

<el-slider v-model="sliderValue" :min="10" :max="50">el-slider>

步长(Step)

可以设置滑块的步长,即每次滑动变化的数值:

<el-slider v-model="sliderValue" :step="10">el-slider>

禁用状态(Disabled)

可以通过 disabled 属性来设置滑块的禁用状态:

<el-slider disabled v-model="sliderValue">el-slider>

只读状态(Readonly)

可以通过 readonly 属性来设置滑块的只读状态:

<el-slider readonly v-model="sliderValue">el-slider>

范围选择(Range)

滑块可以设置为范围选择模式,允许用户选择一个数值范围:

<el-slider
  v-model="sliderRangeValue"
  range
  :min="10"
  :max="50">
el-slider>

在范围选择模式下,v-model 绑定的变量应该是一个包含两个数值的数组:

data() {
  return {
    sliderRangeValue: [10, 40] // 初始范围
  };
}

显示标记(Marks)

滑块可以显示刻度标记:

<el-slider
  v-model="sliderValue"
  :marks="{10: '10', 20: '20', 30: '30'}">
el-slider>

显示输入框(Show-input)

滑块可以显示输入框,允许用户直接输入数值:

<el-slider v-model="sliderValue" show-input>el-slider>

显示停止按钮(Show-stops)

滑块可以显示停止按钮,即滑块移动时会停在刻度上:

<el-slider v-model="sliderValue" show-stops>el-slider>

垂直方向(Vertical)

滑块可以设置为垂直方向:

<el-slider vertical v-model="sliderValue">el-slider>

事件处理(Events)

可以为滑块添加事件处理,如 change 事件用于监听滑块值的变化:

<el-slider v-model="sliderValue" @change="handleSliderChange">el-slider>

在 Vue 组件的 methods 中定义 handleSliderChange 函数:

methods: {
  handleSliderChange(value) {
    console.log('滑块值变化:', value);
  }
}

使用技巧

  • 数据双向绑定:使用 v-model 来保持滑块的值与数据状态的同步。
  • 自定义样式:通过 CSS 自定义滑块的颜色和样式。
  • 表单验证:结合使用 el-form 组件进行表单验证。
  • 响应式设计:确保滑块在不同设备和屏幕尺寸上都有良好的显示效果。
  • 可访问性:确保滑块对于键盘和屏幕阅读器用户也是可访问的。

8. Table(表格)

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)

表格的数据源是一个数组,每个元素是一个对象,代表表格的一行:

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' },
      // 更多数据...
    ]
  };
}

列定义(Columns)

列通过 el-table-column 组件定义,prop 属性用于指定对象数据中的属性,label 属性用于指定列的标题:

<el-table-column prop="date" label="日期">el-table-column>

宽度和固定宽度(Width)

可以为列设置固定宽度:

<el-table-column prop="date" label="日期" width="180">el-table-column>

边框(Border)

可以为表格添加边框:

<el-table border :data="tableData" style="width: 100%">el-table>

条纹(Striped)

可以为表格添加斑马线效果:

<el-table stripe :data="tableData" style="width: 100%">el-table>

排序(Sorting)

可以为列添加排序功能:

<el-table-column prop="date" label="日期" sortable>el-table-column>

自定义列模板(Custom Column Template)

可以在列中使用自定义模板:

<el-table-column label="操作">
  <template slot-scope="scope">
    <el-button type="text" @click="handleClick(scope.row)">查看el-button>
  template>
el-table-column>

多级表头(Multi-level Headers)

可以创建多级表头:

<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>

展开行(Expandable Rows)

可以为表格的行添加展开功能:

<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>

选择功能(Selection)

可以添加选择功能,允许用户选择表格的行:

<el-table
  :data="tableData"
  style="width: 100%"
  @selection-change="handleSelectionChange">
  <el-table-column type="selection">el-table-column>
  
el-table>

固定列和表头(Fixed Columns and Header)

可以固定列或表头:

<el-table
  :data="tableData"
  style="width: 100%"
  border
  :fit="false">
  <el-table-column fixed prop="date" label="日期" width="150">el-table-column>
  
el-table>

使用技巧

  • 数据驱动:始终使用数据驱动的方式来管理和展示表格数据。
  • 自定义渲染:使用插槽(slots)来自定义列的渲染方式。
  • 响应式设计:确保表格在不同设备和屏幕尺寸上都有良好的显示效果。
  • 性能优化:对于大量数据,考虑使用虚拟滚动或分页来提高性能。
  • 可访问性:确保表格对于键盘和屏幕阅读器用户也是可访问的。

9. Form(表单)

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 用于设置标签的宽度。

数据模型(Model)

表单的数据模型是一个对象,包含了表单项的值:

data() {
  return {
    form: {
      name: '',
      region: '',
      // 其他表单项
    }
  };
}

表单项(Form Items)

表单项通过 el-form-item 组件定义,内部可以包含各种输入组件,如 el-inputel-select 等:

<el-form-item label="邮箱">
  <el-input type="email" v-model="form.email">el-input>
el-form-item>

标签宽度(Label Width)

可以设置表单项标签的宽度:

<el-form label-width="150px">
  
el-form>

表单验证(Validation)

表单验证通过 el-formrules 属性和 el-form-itemprop 属性来实现:

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;
      }
    });
  }
}

内联表单(Inline Form)

表单可以设置为内联布局:

<el-form :inline="true" :model="form">
  
el-form>

表单重置(Reset)

可以重置表单到初始状态:

methods: {
  resetForm() {
    this.$refs.form.resetFields();
  }
}

表单提交(Submit)

可以为表单添加提交事件:

<el-form @submit.native.prevent="onSubmit">
  
el-form>

自定义表单项(Custom Form Items)

可以在表单项中使用自定义模板:

<el-form-item label="自定义内容">
  <template slot="label">
    <span>自定义标签span>
  template>
  <el-input v-model="form.custom">el-input>
el-form-item>

使用技巧

  • 数据双向绑定:使用 v-model 来保持表单项的值与数据状态的同步。
  • 验证规则:定义清晰、合理的验证规则,确保用户输入的有效性。
  • 响应式设计:确保表单在不同设备和屏幕尺寸上都有良好的显示效果。
  • 自定义样式:通过 CSS 自定义表单的样式,包括布局、颜色等。
  • 性能优化:避免在表单中渲染大量数据或复杂组件,以防止性能问题。

10. Dialog(对话框)

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 属性用于设置对话框的标题。

控制显示和隐藏(Visible)

对话框的显示和隐藏通过 v-model 控制:

data() {
  return {
    dialogVisible: false // 控制对话框显示的布尔值
  };
}

标题(Title)

可以设置对话框的标题:

<el-dialog title="我的对话框" :visible.sync="dialogVisible">
  
el-dialog>

宽度(Width)

可以设置对话框的宽度:

<el-dialog width="50%" :visible.sync="dialogVisible">
  
el-dialog>

自定义内容(Custom Content)

可以在对话框内部自定义内容:

<el-dialog :visible.sync="dialogVisible">
  <div>
    <h2>自定义标题h2>
    <p>这是自定义的对话框内容。p>
  div>
  
el-dialog>

底部按钮(Footer Buttons)

可以在对话框底部添加按钮:

<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)

可以设置 before-close 事件,以阻止对话框的关闭:

<el-dialog
  :before-close="handleBeforeClose"
  :visible.sync="dialogVisible">
  
el-dialog>

在 Vue 组件的 methods 中定义 handleBeforeClose 函数:

methods: {
  handleBeforeClose(done) {
    // 执行一些操作,完成后调用 done() 来关闭对话框
    done();
  }
}

居中布局(Center)

可以将对话框内容居中显示:

<el-dialog
  center
  :visible.sync="dialogVisible">
  
el-dialog>

可访问性(Accessibility)

确保对话框可以通过键盘操作,并且屏幕阅读器可以正确读取对话框内容。

使用技巧

  • 控制显示:使用 v-model 来控制对话框的显示状态。
  • 自定义样式:通过 CSS 自定义对话框的样式,包括宽度、背景色等。
  • 表单集成:将对话框与表单组件结合使用,以收集用户输入。
  • 响应式设计:确保对话框在不同设备和屏幕尺寸上都有良好的显示效果。
  • 性能优化:避免在对话框中渲染大量数据或复杂组件,以防止性能问题。

11. Tooltip(文字提示)

Element Plus 的 Tooltip 组件用于创建文字提示,当用户将鼠标悬停在指定元素上时,会显示一段文字信息。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:

基本使用

文字提示的基本 HTML 结构如下:

<el-tooltip content="这是提示信息" placement="top-start" :open-delay="500">
  <el-button>悬停看我el-button>
el-tooltip>

这里,content 属性用于设置提示的内容,placement 属性用于设置提示框出现的位置,open-delay 属性用于设置显示提示框前的延迟时间。

位置(Placement)

提示框可以出现在不同的位置,通过 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)

可以通过 trigger 属性来指定触发提示框的方式:

  • hover:鼠标悬停时显示(默认)
  • click:点击时显示
  • focus:输入框获得焦点时显示
  • manual:手动控制显示
<el-tooltip trigger="click" content="点击提示信息">
  <el-button>点击我el-button>
el-tooltip>

延迟和隐藏(Open-delay / Close-delay)

可以设置显示和隐藏提示框的延迟时间:

<el-tooltip :open-delay="1000" :close-delay="500" content="延迟提示">
  <el-button>悬停我el-button>
el-tooltip>

手动控制(Manual)

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)

可以通过 disabled 属性来设置提示框的禁用状态:

<el-tooltip disabled content="禁用的提示">
  <el-button>悬停我el-button>
el-tooltip>

自定义样式(Custom Style)

可以通过 CSS 来自定义提示框的样式:

.my-tooltip .el-tooltip__popper {
  /* 自定义样式 */
}

并在组件上添加自定义类:

<el-tooltip content="自定义样式" class="my-tooltip">
  <el-button>悬停我el-button>
el-tooltip>

使用技巧

  • 上下文信息:使用 Tooltip 来提供额外的上下文信息或解释。
  • 辅助功能:Tooltip 可以作为辅助功能的一部分,帮助用户更好地理解界面元素。
  • 响应式设计:确保 Tooltip 在不同设备和屏幕尺寸上都能正确显示。
  • 性能优化:避免在 Tooltip 中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

12. Popover(气泡卡片)

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 属性用于设置显示的内容。

触发方式(Trigger)

气泡卡片的触发方式与 Tooltip 相同,可以通过 trigger 属性来指定:

  • hover:鼠标悬停时显示
  • click:点击时显示
  • focus:输入框获得焦点时显示
  • manual:手动控制显示
<el-popover trigger="hover" content="悬停查看更多信息">
  <el-button>悬停我el-button>
el-popover>

手动控制(Manual)

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();
  }
}

自定义内容(Custom Content)

可以在气泡卡片中自定义复杂的 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>

延迟和隐藏(Open-delay / Close-delay)

可以设置显示和隐藏气泡卡片的延迟时间:

<el-popover :open-delay="1000" :close-delay="500" content="延迟显示">
  <el-button>悬停我el-button>
el-popover>

禁用状态(Disabled)

可以通过 disabled 属性来设置气泡卡片的禁用状态:

<el-popover disabled content="禁用的气泡卡片">
  <el-button>点击我el-button>
el-popover>

自定义样式(Custom Style)

可以通过 CSS 来自定义气泡卡片的样式:

.my-popover .popper__arrow {
  /* 自定义箭头样式 */
}

.my-popover .el-popover__title {
  /* 自定义标题样式 */
}

并在组件上添加自定义类:

<el-popover content="自定义样式" class="my-popover">
  <el-button>点击我el-button>
el-popover>

使用技巧

  • 复杂内容展示:使用 Popover 来展示复杂的内容,如表单、列表等。
  • 辅助功能:Popover 可以作为辅助功能的一部分,帮助用户更好地理解界面元素。
  • 响应式设计:确保 Popover 在不同设备和屏幕尺寸上都能正确显示。
  • 性能优化:避免在 Popover 中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

13. Alert(警告)

Element Plus 的 Alert 组件用于向用户显示警告或提示信息。它通常用于页面的角落或内容区域,以吸引用户的注意。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:

基本使用

警告的基本 HTML 结构如下:

<el-alert
  title="成功提示"
  type="success"
  description="这是一条成功的提示信息"
  show-icon>
el-alert>

这里,title 属性用于设置警告的标题,type 属性用于设置警告的类型,description 属性用于提供更详细的描述信息,show-icon 是一个布尔属性,用于显示警告图标。

类型(Type)

警告有不同的类型,通过 type 属性来指定:

  • success:成功警告(绿色)
  • info:信息警告(蓝色)
  • warning:警告警告(黄色)
  • error:错误警告(红色)
<el-alert title="信息提示" type="info" description="这是一条信息提示">el-alert>

描述(Description)

可以为警告添加更详细的描述:

<el-alert
  title="操作成功"
  type="success"
  description="您已成功完成操作,这是一条详细的成功提示信息。"
  show-icon>
el-alert>

图标(Icon)

可以通过 show-icon 属性在警告中显示图标:

<el-alert title="警告信息" type="warning" show-icon>el-alert>

可关闭(Closable)

可以为警告添加一个关闭按钮,允许用户手动关闭警告:

<el-alert title="可关闭的警告" closable>el-alert>

自定义中心内容(Center)

可以将警告内容居中显示:

<el-alert title="居中警告" center>el-alert>

自定义样式(Custom Style)

可以通过 CSS 自定义警告的样式,包括颜色、字体大小等:

.my-alert .el-alert__title {
  font-weight: bold;
}

.my-alert .el-alert__description {
  color: #666;
}

并在组件上添加自定义类:

<el-alert title="自定义样式" class="my-alert">el-alert>

警告组(Alerts)

可以组合多个警告,以警告组的形式显示:

<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' },
      // 更多警告数据...
    ]
  };
}

使用技巧

  • 信息突出:使用不同类型的警告来突出信息的重要性。
  • 用户操作反馈:在用户完成某项操作后,使用警告来提供操作反馈。
  • 页面装饰:警告可以作为页面的装饰元素,吸引用户注意。
  • 响应式设计:确保警告在不同设备和屏幕尺寸上都能正确显示。
  • 性能优化:避免在警告中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

14. Badge(标记)

Element Plus 的 Badge 组件用于在页面元素的角落添加数字或状态标记,通常用于表示未读消息数量、新状态提醒等。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:

基本使用

标记的基本 HTML 结构如下:

<el-badge :value="12" class="item">
  <el-button size="small">按钮el-button>
el-badge>

这里,value 属性用于设置标记显示的数字或文本,class="item" 用于为子元素设置样式。

数字和文本(Value)

标记可以显示数字或文本,通过 value 属性来指定:

<el-badge value="200">新消息el-badge>
<el-badge value="hot">热门el-badge>

最大值(Max)

可以设置标记显示的最大值,超过这个值会显示为 {max}+

<el-badge :value="120" :max="100">新消息el-badge>

隐藏(Hidden)

可以设置 hidden 属性来隐藏标记:

<el-badge :value="0" :hidden="true">无新消息el-badge>

自定义位置(Position)

可以自定义标记的位置,通过 placement 属性来指定:

<el-badge value="1" placement="top-start">
  <el-button>顶部开始el-button>
el-badge>

自定义颜色(Color)

可以自定义标记的背景颜色,通过 color 属性来指定:

<el-badge value="20" color="#f56c6c">新消息el-badge>

自定义内容(Dot)

可以使用 is-dot 属性来显示一个点状标记,而不是数字:

<el-badge is-dot class="item">
  <el-button>新消息el-button>
el-badge>

自定义样式(Custom Style)

可以通过 CSS 自定义标记的样式,包括大小、颜色、字体等:

.custom-badge .el-badge__content {
  background-color: #e6a23c;
  color: #fff;
  border-radius: 5px;
}

并在组件上添加自定义类:

<el-badge value="5" class="custom-badge">el-badge>

使用技巧

  • 视觉突出:使用不同颜色的标记来突出不同级别的信息。
  • 状态提示:使用点状标记来提示用户有新状态或更新。
  • 交互反馈:结合其他组件(如按钮、图标)使用,提供更丰富的交互反馈。
  • 响应式设计:确保标记在不同设备和屏幕尺寸上都能正确显示。
  • 性能优化:避免在标记中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

15. Card(卡片)

Element Plus 的 Card 组件用于展示内容的容器,类似于卡片的样式,常用于展示列表项、文章摘要等。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:

基本使用

卡片的基本 HTML 结构如下:

<el-card>
  卡片内容
el-card>

头部和底部(Header / Footer)

可以为卡片添加头部和底部:

<el-card>
  <template #header>
    卡片头部
  template>
  卡片内容
  <template #footer>
    卡片底部
  template>
el-card>

阴影(Shadow)

可以设置卡片的阴影效果:

<el-card shadow="always">
  卡片内容
el-card>

shadow 属性可以设置为 alwayshovernever

边框(Border)

可以设置卡片是否显示边框:

<el-card :border="false">
  无边框卡片内容
el-card>

尺寸(Size)

可以设置卡片的尺寸,通过 CSS 来控制:

.custom-card {
  width: 300px;
  height: 200px;
}

并在组件上添加自定义类:

<el-card class="custom-card">
  自定义尺寸卡片内容
el-card>

自定义样式(Custom Style)

可以通过 CSS 自定义卡片的样式,包括背景色、边框颜色等:

.my-card {
  background-color: #f9f9f9;
  border-color: #e1e1e1;
}

并在组件上添加自定义类:

<el-card class="my-card">
  自定义样式卡片内容
el-card>

图片和列表(Image / List)

卡片可以包含图片和列表,用于展示文章摘要或项目列表:

<el-card>
  <img src="image-url.jpg" alt="图片描述" class="image">
  <div class="list">
    <ul>
      <li>列表项1li>
      <li>列表项2li>
    ul>
  div>
el-card>

组合使用(Group)

可以将多个卡片组合使用,形成卡片组:

<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>

使用技巧

  • 内容组织:使用卡片来组织和展示相关内容,如博客文章、产品列表等。
  • 响应式设计:确保卡片在不同设备和屏幕尺寸上都能正确显示。
  • 视觉层次:通过卡片的阴影和边框来增强页面的视觉层次。
  • 交互反馈:卡片可以包含链接或其他交互元素,提供用户操作的反馈。
  • 性能优化:避免在卡片中加载大量高分辨率图片或复杂脚本,以防止性能问题。

16. Steps(步骤条)

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>

步骤图标(Icon)

可以为步骤设置图标:

<el-step title="步骤 1" icon="el-icon-edit">el-step>

垂直步骤条(Vertical)

可以设置步骤条为垂直方向:

<el-steps direction="vertical" :active="activeStep">
  
el-steps>

简单步骤条(Simple)

可以设置步骤条为简单模式,隐藏每个步骤的描述信息:

<el-steps :active="activeStep" simple>
  
el-steps>

自定义样式(Custom Style)

可以通过 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;
  }
}

使用技巧

  • 流程导航:使用步骤条来指导用户完成多步骤的任务或流程。
  • 状态展示:通过不同的步骤状态来展示任务的进度和状态。
  • 响应式设计:确保步骤条在不同设备和屏幕尺寸上都能正确显示。
  • 交互反馈:允许用户通过点击步骤来切换流程,提供交互反馈。
  • 性能优化:避免在步骤条中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

17. Menu(菜单)

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 属性用于设置默认激活的菜单项索引。

菜单类型(Type)

菜单有不同的类型,通过 :unique-opened 属性来设置:

  • 默认:每个子菜单都可以展开。
  • unique-opened:同一时间只有一个子菜单可以展开。
<el-menu :default-openeds="['1']" :unique-opened="true">
  
el-menu>

菜单模式(Mode)

菜单可以设置不同的模式,通过 mode 属性来指定:

  • vertical:垂直模式(默认)
  • horizontal:水平模式
<el-menu mode="horizontal">
  
el-menu>

菜单项(Menu Items)

菜单项通过 el-menu-item 组件定义,可以设置点击事件:

<el-menu-item index="1" @click="handleMenuItemClick">
  菜单项 1
el-menu-item>

在 Vue 组件的 methods 中定义 handleMenuItemClick 函数:

methods: {
  handleMenuItemClick(index) {
    console.log('菜单项点击:', index);
  }
}

子菜单(Submenu)

子菜单通过 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>

菜单路由(Router)

如果使用 Vue Router,可以设置菜单项的 route 属性来指定路由链接:

<el-menu-item index="/" route="/">首页el-menu-item>

自定义样式(Custom Style)

可以通过 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>

使用技巧

  • 导航结构:使用菜单组件来展示网站的导航结构。
  • 响应式设计:确保菜单在不同设备和屏幕尺寸上都能正确显示。
  • 样式定制:通过 CSS 定制菜单的样式,以符合网站的整体风格。
  • 交互反馈:为菜单项添加点击事件,提供用户操作的反馈。
  • 性能优化:避免在菜单中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

18. Breadcrumb(面包屑)

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 属性用于设置面包屑之间的分隔符,默认为斜杠 (/)。

路由链接(Router)

如果使用 Vue Router,可以设置 el-breadcrumb-item:to 属性来指定路由链接:

<el-breadcrumb-item :to="{ name: 'home' }">首页el-breadcrumb-item>

自定义分隔符(Separator)

可以自定义面包屑之间的分隔符:

<el-breadcrumb separator-class="el-icon-arrow-right">
  
el-breadcrumb>

面包屑项(Breadcrumb Items)

面包屑项通过 el-breadcrumb-item 组件定义,可以包含文本或链接:

<el-breadcrumb-item>文本面包屑el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/category' }">链接面包屑el-breadcrumb-item>

自定义样式(Custom Style)

可以通过 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>

使用技巧

  • 导航辅助:面包屑作为导航辅助,帮助用户了解当前页面在网站结构中的位置。
  • 响应式设计:确保面包屑在不同设备和屏幕尺寸上都能正确显示。
  • 样式定制:通过 CSS 定制面包屑的样式,以符合网站的整体风格。
  • 交互反馈:允许用户点击面包屑项进行页面跳转,提供交互反馈。
  • 性能优化:避免在面包屑中使用复杂的 JavaScript 或 DOM 操作,以防止性能问题。

19. Pagination(分页)

Element Plus 的 Pagination 组件用于实现分页功能,允许用户通过页码导航浏览数据。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:

基本使用

分页的基本 HTML 结构如下:

<el-pagination
  :total="100"
  :page-size="10"
  layout="prev, pager, next">
el-pagination>

这里,:total 属性表示总数据量,:page-size 属性表示每页显示的数据条数,layout 属性用于定义分页的布局。

页数和页码(Page Count and Current Page)

可以通过 page-countcurrent-page 属性来控制显示的页数和当前页码:

<el-pagination
  :total="500"
  :page-size="20"
  :page-count="5"
  :current-page="3"
  layout="prev, pager, next">
el-pagination>

布局(Layout)

分页组件的布局可以通过 layout 属性来自定义,常见的值包括:

  • "prev, pager, next":显示上一页、页码、下一页
  • "sizes, prev, pager, next, jumper":添加选择每页显示数量的选项和跳转到某页的功能
<el-pagination
  layout="sizes, prev, pager, next, jumper"
  :total="1000"
  :page-size="100">
el-pagination>

事件处理(Events)

可以监听分页组件的事件,如 size-changecurrent-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}`);
  }
}

自定义页码按钮(Custom Pager)

可以自定义页码按钮的显示:

<el-pagination
  :total="200"
  :page-size="10"
  :pager-count="5"
  layout="prev, pager, next">
el-pagination>

:pager-count 属性定义了页码按钮的数量。

自定义样式(Custom Style)

可以通过 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>

使用技巧

  • 数据量适配:根据数据量选择合适的每页显示条数。
  • 响应式设计:确保分页组件在不同设备和屏幕尺寸上都能正确显示。
  • 交互反馈:为分页组件添加事件处理,提供用户操作的反馈。
  • 性能优化:当数据量很大时,确保分页组件的性能不会受到影响。
  • 自定义功能:根据需要添加跳页、选择每页显示数量等功能。

20. Loading(加载中)

Element Plus 的 Loading 组件用于在数据加载过程中向用户显示一个加载指示器,提高用户体验。以下是一些使用案例和技巧,以及如何使用这个组件的详细解释:

基本使用

加载中的的基本 HTML 结构如下:

<el-loading>el-loading>

这将显示一个全屏的加载指示器。el-loading 组件提供了多种方式来自定义加载效果。

目标容器(Target)

可以使用 target 属性指定加载动画的容器,而不是全屏显示:

<div class="box">
  <el-loading :target="'.box'">el-loading>
div>

自定义锁定(Lock)

使用 lock 属性可以锁定滚动条,防止用户在加载时滚动页面:

<el-loading lock>el-loading>

背景颜色(Background)

可以设置加载动画的背景颜色:

<el-loading background-color="rgba(255, 255, 255, 0.9)">el-loading>

直接使用服务(Service)

Element Plus 提供了 useLoading 服务,允许你在组合式 API 中使用:

import { useLoading } from 'element-plus';

export default {
  setup() {
    const loading = useLoading();

    return {
      openLoading() {
        loading.service.start();
      },
      closeLoading() {
        loading.service.end();
      }
    };
  }
};

全局方法(Global Method)

Element Plus 还提供了全局方法 ElLoading 来控制加载动画:

// 显示加载动画
const loadingInstance = ElLoading.service({ lock: true, background: 'rgba(0, 0, 0, 0.7)' });

// 隐藏加载动画
loadingInstance.close();

指令方式(Directive)

在 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>

自定义样式(Custom Style)

可以通过 CSS 自定义加载指示器的样式:

.custom-loading .el-loading-spinner {
  /* 自定义旋转器样式 */
}

.custom-loading .el-loading-spinner i {
  /* 自定义旋转器图标样式 */
}

并在组件上添加自定义类:

<el-loading class="custom-loading">el-loading>

使用技巧

  • 用户体验:在加载数据时显示加载动画,告知用户数据正在处理中。
  • 场景适配:根据加载内容的区域,选择全屏加载或局部加载。
  • 样式定制:通过 CSS 定制加载动画的样式,以符合网站的整体风格。
  • 交互反馈:合理使用加载动画,避免滥用,确保不会干扰用户操作。
  • 性能优化:确保加载动画不会影响页面性能。

最后

以上是 V 哥整理的20个 Element-Plus 的核心组件,这篇内容正如学习手册一样,方便大伙使用时查阅,因此,小伙伴们可以收藏起来,以备不时之需。好了,今天的内容就到这里,欢迎关注威哥爱编程,分享更多全栈技术知识。

你可能感兴趣的:(V哥原创技术栈,javascript,vue.js,前端,element,plus,威哥爱编程)