跳转至

第二章:基础组件

Button 按钮

基本用法

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

按钮样式

<template>
  <!-- 朴素按钮 -->
  <el-button type="primary" plain>朴素按钮</el-button>

  <!-- 圆角按钮 -->
  <el-button type="primary" round>圆角按钮</el-button>

  <!-- 圆形按钮 -->
  <el-button type="primary" circle>
    <el-icon><Plus /></el-icon>
  </el-button>

  <!-- 禁用状态 -->
  <el-button type="primary" disabled>禁用按钮</el-button>

  <!-- 加载状态 -->
  <el-button type="primary" loading>加载中</el-button>
</template>

按钮尺寸

<template>
  <el-button size="large">大型按钮</el-button>
  <el-button>默认按钮</el-button>
  <el-button size="small">小型按钮</el-button>
</template>

按钮组

<template>
  <el-button-group>
    <el-button type="primary">上一页</el-button>
    <el-button type="primary">下一页</el-button>
  </el-button-group>
</template>

Input 输入框

基本用法

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

<script setup>
import { ref } from 'vue'
const input = ref('')
</script>

输入框样式

<template>
  <!-- 禁用 -->
  <el-input v-model="input" disabled />

  <!-- 可清空 -->
  <el-input v-model="input" clearable />

  <!-- 密码框 -->
  <el-input v-model="password" show-password />

  <!-- 带图标 -->
  <el-input v-model="input" prefix-icon="Search" />
  <el-input v-model="input" suffix-icon="Calendar" />

  <!-- 文本域 -->
  <el-input v-model="textarea" type="textarea" :rows="3" />
</template>

复合输入框

<template>
  <!-- 前置/后置内容 -->
  <el-input v-model="input">
    <template #prepend>Http://</template>
    <template #append>.com</template>
  </el-input>

  <!-- 前置/后置按钮 -->
  <el-input v-model="input">
    <template #append>
      <el-button :icon="Search" />
    </template>
  </el-input>
</template>

Select 选择器

基本用法

<template>
  <el-select v-model="value" placeholder="请选择">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value"
    />
  </el-select>
</template>

<script setup>
import { ref } from 'vue'

const value = ref('')
const options = [
  { value: 'vue', label: 'Vue' },
  { value: 'react', label: 'React' },
  { value: 'angular', label: 'Angular' }
]
</script>

多选

<template>
  <el-select v-model="values" multiple placeholder="请选择">
    <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
  </el-select>
</template>

<script setup>
const values = ref([])
</script>

可搜索

<template>
  <el-select v-model="value" filterable placeholder="请选择">
    <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
  </el-select>
</template>

分组

<template>
  <el-select v-model="value" placeholder="请选择">
    <el-option-group v-for="group in groups" :key="group.label" :label="group.label">
      <el-option v-for="item in group.options" :key="item.value" :label="item.label" :value="item.value" />
    </el-option-group>
  </el-select>
</template>

Radio 单选框

基本用法

<template>
  <el-radio-group v-model="radio">
    <el-radio :value="1">选项1</el-radio>
    <el-radio :value="2">选项2</el-radio>
  </el-radio-group>
</template>

<script setup>
import { ref } from 'vue'
const radio = ref(1)
</script>

按钮样式

<template>
  <el-radio-group v-model="radio">
    <el-radio-button :value="1">选项1</el-radio-button>
    <el-radio-button :value="2">选项2</el-radio-button>
    <el-radio-button :value="3">选项3</el-radio-button>
  </el-radio-group>
</template>

Checkbox 复选框

基本用法

<template>
  <el-checkbox-group v-model="checkList">
    <el-checkbox value="Vue">Vue</el-checkbox>
    <el-checkbox value="React">React</el-checkbox>
    <el-checkbox value="Angular">Angular</el-checkbox>
  </el-checkbox-group>
</template>

<script setup>
import { ref } from 'vue'
const checkList = ref(['Vue'])
</script>

全选

<template>
  <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" @change="handleCheckAll">
    全选
  </el-checkbox>
  <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
    <el-checkbox v-for="city in cities" :key="city" :value="city">{{ city }}</el-checkbox>
  </el-checkbox-group>
</template>

<script setup>
import { ref } from 'vue'

const checkAll = ref(false)
const isIndeterminate = ref(true)
const cities = ['北京', '上海', '广州', '深圳']
const checkedCities = ref(['北京', '上海'])

function handleCheckAll(val) {
  checkedCities.value = val ? cities : []
  isIndeterminate.value = false
}

function handleCheckedCitiesChange(value) {
  const checkedCount = value.length
  checkAll.value = checkedCount === cities.length
  isIndeterminate.value = checkedCount > 0 && checkedCount < cities.length
}
</script>

Switch 开关

<template>
  <el-switch v-model="value" />

  <!-- 带文字 -->
  <el-switch v-model="value" active-text="开" inactive-text="关" />

  <!-- 自定义颜色 -->
  <el-switch v-model="value" active-color="#13ce66" inactive-color="#ff4949" />

  <!-- 禁用 -->
  <el-switch v-model="value" disabled />
</template>

<script setup>
import { ref } from 'vue'
const value = ref(true)
</script>

Slider 滑块

<template>
  <el-slider v-model="value" />

  <!-- 带输入框 -->
  <el-slider v-model="value" show-input />

  <!-- 范围选择 -->
  <el-slider v-model="range" range :max="100" />

  <!-- 显示标记 -->
  <el-slider v-model="value" :marks="marks" />
</template>

<script setup>
import { ref } from 'vue'

const value = ref(50)
const range = ref([20, 80])
const marks = {
  0: '0°C',
  50: '50°C',
  100: '100°C'
}
</script>

小结

本章学习了:

  • ✅ Button 按钮
  • ✅ Input 输入框
  • ✅ Select 选择器
  • ✅ Radio 单选框
  • ✅ Checkbox 复选框
  • ✅ Switch 开关
  • ✅ Slider 滑块

下一章

第三章:表单组件 - 学习表单相关组件。