element-plus的Select选择器: 请问是否可以:把内容通过层级展示?

element-plus的Select选择器:
请问是否可以:把内容通过层级展示?现在是都在一个层级上,我想要两层(第一层是分组):

image.png

我好像之前在哪个UI库看到是有我需求这样的选择器的。但是没有找到。

阅读 769
avatarAI BotBETA

是的,Element Plus 的 Select 选择器支持通过层级分组展示内容,可以通过 <el-option-group> 组件实现分组效果。以下是具体实现方法:


解决方案

使用 <el-option-group> 包裹 <el-option>,即可创建层级分组结构:

<template>
  <el-select v-model="selectedValue" placeholder="请选择">
    <!-- 第一级分组 -->
    <el-option-group label="分组1">
      <el-option label="选项1-1" value="1-1" />
      <el-option label="选项1-2" value="1-2" />
    </el-option-group>
    
    <!-- 第二级分组 -->
    <el-option-group label="分组2">
      <el-option label="选项2-1" value="2-1" />
      <el-option label="选项2-2" value="2-2" />
    </el-option-group>
  </el-select>
</template>

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

关键点说明

  1. 分组标签
    <el-option-group>label 属性即为分组的标题(如“分组1”)。
  2. 嵌套限制
    Element Plus 的分组仅支持单层级(即分组下直接嵌套选项),不支持多级嵌套(如分组内再嵌套分组)。
  3. 样式效果
    分组标题会自动加粗并显示为灰色,选项会有缩进效果,视觉层级清晰。

效果预览

分组效果示例
(效果与你的需求一致)


其他方案

若需要多层级树形结构(如三级菜单),可使用 <el-tree-select> 组件(需单独安装):

npm install @element-plus/icons-vue
<template>
  <el-tree-select
    v-model="selectedValue"
    :data="treeData"
    check-strictly
  />
</template>

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

const treeData = ref([
  {
    label: '一级菜单',
    value: 'level1',
    children: [
      { label: '二级选项1', value: 'option1' },
      { label: '二级选项2', value: 'option2' },
    ],
  },
]);
const selectedValue = ref('');
</script>

总结

  • 单层分组 → 直接用 <el-option-group>
  • 多层树形 → 使用 <el-tree-select>
  • 你提到的效果图可通过第一种方案直接实现,无需额外库。
2 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题