vue中下拉框如何显示树形结构

原理:其实就是利用<el-tree>插件与<Input>插件模拟一个树形结构的下拉框 重点在样式代码

代码:

<template>
  <label class="select-tree" @click="showTree = true">
    <el-input v-model="inputVal" placeholder="请下拉选择树形结构数据"/>
    <el-collapse-transition>
      <div class="tree-modal" v-show="showTree" @mouseleave="showTree = false">
        <el-tree :data="filterList" ref="selectTreeData" node-key="id" show-checkbox/>
        <div class="popper-arrow" style="left: 35px;"></div>
      </div>
    </el-collapse-transition>
  </label>
</template>

<script>
  export default {
    name: "test",
    data() {
      return {
        inputVal:"",
        showTree:false,
        filterList: [{
          id: 1,
          label: '一级 1',
          children: [{
            id: 4,
            label: '二级 1-1',
            children: [{
              id: 9,
              label: '三级 1-1-1'
            }, {
              id: 10,
              label: '三级 1-1-2'
            }]
          }]
        }, {
          id: 2,
          label: '一级 2',
          children: [{
            id: 5,
            label: '二级 2-1'
          }, {
            id: 6,
            label: '二级 2-2'
          }]
        }, {
          id: 3,
          label: '一级 3',
          children: [{
            id: 7,
            label: '二级 3-1'
          }, {
            id: 8,
            label: '二级 3-2'
          }]
        }],
        defaultProps: {
          children: 'children',
          label: 'label'
        }
      };
    }
  }
</script>

<style lang="less">
  .select-tree {
    flex: 1;
    margin-right: 10px;
    max-width: 300px;
    height: 30px;
    background: #FFFFFF;
    line-height: 30px;
    .el-input__inner{
      height: 30px;
      border-radius: 1px;
      line-height: 30px;
    }
    .tree-modal{
      position: absolute;
      max-width: 300px;
      overflow:auto;
      z-index: 888;
      box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.5);
      margin-top: 10px;
      .el-tree {
        width: auto;
        max-height: 300px;
        z-index: 999;
        padding-right: 10px;
        padding-bottom: 10px;
        overflow: auto;
        min-width: 200px;
        max-width: inherit;
        margin-top: 5px;
      }

      .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
        background-color: rgba(87, 163, 243, 0.8);
        color: #FFFFFF;
      }
      .popper-arrow {
        top: 28px;
        margin-right: 3px;
        border-top-width: 0;
        position: absolute;
        border-width: 6px;
        border-color: #FFFFFF;
        animation: mymove 2s;
        opacity: 1
      }
      @keyframes mymove {
        0% {
          opacity: 0
        }
        100% {
          opacity: 1
        }
      }
      .popper-arrow::after {
        content: "";
        position: absolute;
        display: block;
        width: 0;
        height: 0;
        border-color: transparent;
        border-style: solid;
        top: 1px;
        margin-left: -6px;
        border-top-width: 0;
        border-bottom-color: #FFFFFF;
        border-width: 6px;
      }
    }
  }
</style>

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue的ElementUI库提供了一个非常实用的树形下拉框组件,可以用于展示树形结构的数据并且支持选择功能。 树形下拉框可以帮助我们展示层次化的数据结构,比如组织架构、目录结构等。ElementUI的树形下拉框组件提供了丰富的配置项,我们可以自定义树形的图标、节点的样式以及行为。 使用ElementUI的树形下拉框组件非常简单。我们只需要在Vue实例引入ElementUI库,并在页面使用`<el-cascader>`标签即可。通过传递相应的数据和配置项,我们就能够快速构建一个树形下拉框。 在使用树形下拉框时,我们可以通过配置`props`属性来提供数据源。ElementUI的树形下拉框支持三种类型的数据格式:`value`、`label`、`children`。其,`value`代表节点的值,`label`代表节点的显示文本,`children`代表子节点的数据。 除了数据源,我们还可以配置`expand-trigger`属性来指定展开节点的触发方式,默认是点击节点展开。如果我们希望鼠标悬浮在节点上时展开节点,我们可以将`expand-trigger`设置为`hover`,这样用户就可以通过鼠标悬浮来展开节点了。 总之,Vue的ElementUI树形下拉框组件为我们展示树形结构的数据提供了非常便利和灵活的方式。无论是展示组织架构、目录结构,还是其他层次化的数据,我们都可以通过这个组件轻松实现。它的简单易用和丰富的配置项,让我们能够轻松满足各种业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值