VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线

这篇具有很好参考价值的文章主要介绍了VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

步骤:

定义模板(做循环遍历处理):

<template>
          <div class="container">
            <el-card v-for="(item,index) in routeList" :key="index" class="routeList-box">
              <!-- <el-collapse v-model="activeNames">
              <el-collapse-item :title="item.title" :name="index"> -->
              <el-tree
                ref="tree"
                class="el-tree"
                show-checkbox
                node-key="id"
                :indent="0"
                :data="item.list"
                :props="defaultProps"
                :highlight-current="true"
                :default-expand-all="true"
                :render-content="renderContent"
                @node-expand="handleExpand"
              />
              <!--:indent="0"为相邻级节点间的水平缩进,单位为像素,如果要加指示线需设置为0,否则缩进会很大-->
              <!-- </el-collapse-item>
              </el-collapse> -->
            </el-card>
          </div>
        </template>

tree的参数说明请参考官方文档el-tree
定义模板数据:

data() {
	return {
		routeList: [
        {
          // title: '授权管理后台',
          list: [
            {
              id: 1,
              label: '工程管理', //一级控件
              children: [
                {
                  id: 2,
                  label: '物料管理', //二级控件
                  children: [
                    {
                      id: 4,
                      label: '列表查看', //三级控件
                      // children: [
                      //   {
                      //     id: 7,
                      //     label: '页面查看权限' //四级控件
                      //   },
                      //   {
                      //     id: 8,
                      //     label: '编辑'
                      //   }
                      // ]
                    },
                    {
                      id: 5,
                      label: '查询',
                      // children: [
                      //   {
                      //     id: 9,
                      //     label: '次数分布child1'
                      //   },
                      //   {
                      //     id: 10,
                      //     label: '次数分布child2'
                      //   }
                      // ]
                    }
                  ]
                },
                {
                  id: 3,
                  label: '工艺流程管理',
                  children: [
                    {
                      id: 6,
                      label: '列表查看',
                      // children: [
                      //   {
                      //     id: 7,
                      //     label: '页面查看权限'
                      //   }
                      // ]
                    },
                    {
                      id: 7,
                      label: '查询',
                      // children: [
                      //   {
                      //     id: 7,
                      //     label: '页面查看权限'
                      //   }
                      // ]
                    }
                  ]
                }
              ]
            },
            {
              id: 111,
              label: '销售管理',
              children: [
                {
                  id: 112,
                  label: '订单管理',
                  children: [
                    {
                      id: 113,
                      label: '列表查看'
                    },
                    {
                      id: 114,
                      label: '查询'
                    },
                    {
                      id: 114,
                      label: '重置'
                    },
                    {
                      id: 114,
                      label: '复选框'
                    },
                    {
                      id: 114,
                      label: '新增订单'
                    },
                    {
                      id: 114,
                      label: '导出'
                    },
                    {
                      id: 114,
                      label: '打印'
                    },
                    {
                      id: 114,
                      label: '操作'
                    },
                    {
                      id: 114,
                      label: '订单详情'
                    },
                    {
                      id: 114,
                      label: '编辑'
                    },
                    {
                      id: 114,
                      label: '作废'
                    },
                    {
                      id: 114,
                      label: '出库'
                    },
                    {
                      id: 114,
                      label: '结束'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ],
      defaultProps: {
        children: 'children',
        label: 'label'
      }
	}
}

js部分:

mounted() {
    this.changeCss() //默认调用此方法将子节点渲染为横向排列
  },
methods: {
	handleExpand() { // 节点被展开时触发的事件
      // 因为该函数执行在renderContent函数之前,所以得加this.$nextTick()
     	this.$nextTick(() => {
        this.changeCss()
      })
    },
    renderContent(h, { node, data, store }) { // 树节点的内容区的渲染 Function
	  let classname = ''
      // 由于项目中有三级菜单也有四级级菜单,就要在此做出判断
      if (node.level === 4) {
        classname = 'foo'
      }
      if (node.level === 3 && node.childNodes.length === 0) {
        classname = 'foo'
      }
      return h(
        'p',
        {
          class: classname
        },
        node.label
      )
    },
    changeCss() { //将子节点横向排列方法
      var levelName = document.getElementsByClassName('foo') // levelname是上面的最底层节点的名字
      for (var i = 0; i < levelName.length; i++) {
        // cssFloat 兼容 ie6-8  styleFloat 兼容ie9及标准浏览器
        levelName[i].parentNode.style.cssFloat = 'left' // 最底层的节点,包括多选框和名字都让他左浮动
        levelName[i].parentNode.style.styleFloat = 'left'
        levelName[i].parentNode.onmouseover = function() {
          this.style.backgroundColor = '#fff'
        }
      }
    }
}

指示线样式部分:

<style scoped lang="scss">
// 树样式
.el-tree{
  ::v-deep .el-tree-node{
    position: relative;
    padding-left: 16px; // 缩进量
  }
  ::v-deep .el-tree-node__children{
    padding-left: 16px; // 缩进量
  }
  // 竖线
  ::v-deep .el-tree-node::before{
    content:"";
    height: 100%;
    width: 1px;
    position: absolute;
    left: -3px;
    top: -26px;
    border-width: 1px;
    border-left: 1px dashed #ccc;
  }
  // 当前层最后⼀个节点的竖线⾼度固定
  ::v-deep .el-tree-node:last-child::before{
    height: 38px; // 可以⾃⼰调节到合适数值
  }
  // 横线
  ::v-deep .el-tree-node::after{
    content:"";
    width: 24px;
    height: 20px;
    position: absolute;
    left: -3px;
    top: 12px;
    border-width: 1px;
    border-top: 1px dashed #ccc;
  }
  // 去掉最顶层的虚线,放最下⾯样式才不会被上⾯的覆盖了
  & > ::v-deep .el-tree-node::after{
    border-top: none;
  }
  & > ::v-deep .el-tree-node::before{
    border-left: none;
  }
  // 展开关闭的icon
  ::v-deep .el-tree-node__expand-icon{
    font-size: 16px;
    // 叶⼦节点(⽆⼦节点)
    ::v-deep &.is-leaf{
      color: transparent;
      // display: none; // 也可以去掉
    }
  }
}
</style>

实际效果:

VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线
VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线
VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线文章来源地址https://www.toymoban.com/news/detail-511941.html

到了这里,关于VUE element-ui之el-tree树形控件循环遍历渲染dom节点;子节点横向排列;控件添加指示线的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • element-ui树形控件(tree)

    1.基础用法 通过:data绑定了数据源,通过:props绑定了属性绑定对象,其中label代表着我们看到的是哪个属性对应的值,children代表父子节点通过哪个属性实现嵌套的 2.为树形控件添加show-checkbox属性,可实现复选框效果。如果要求选中的是文本对应的id值,而不是文本值本身。可

    2024年02月13日
    浏览(46)
  • element ui el-tree控制树形结构全选、取消全选,展开收起

    element ui el-tree控制树形结构全选、取消全选,展开收起

    控制树形结构全选、取消全选,展开收起   

    2024年02月11日
    浏览(15)
  • Element-UI定制化Tree 树形控件

    Element-UI定制化Tree 树形控件

    说明:复制Tree树形控件。 说明:每一个label前面都有一个定制图标 或者     说明: 将默认箭头形式变成加号形式。      

    2024年02月04日
    浏览(80)
  • [element-ui] el-tree全部展开与收回

    参考: el-tree全部展开与收回

    2024年02月10日
    浏览(46)
  • [element-ui] el-tree 懒加载load

    懒加载:点击节点时才进行该层数据的获取。 注意:使用了懒加载之后,一般情况下就可以不用绑定:data。 懒加载—由于在点击节点时才进行该层数据的获取,默认情况下 Tree 无法预知某个节点是否为叶子节点,所以会为每个节点添加一个下拉按钮,如果节点没有下层数据,

    2024年02月11日
    浏览(51)
  • Element-UI控件Tree实现数据树形结构

    Element-UI控件Tree实现数据树形结构

            在前端开发中,有时会遇到所有菜单数据在同一级的情况,后端未对数据进行分级处理;但前端渲染需要是树状结构的数据,如何实现数据的树状化?将数组中通过父节点的ID与子节点的parentId关联,通过递归函数来实现。         前端框架这里使用element-ui的tree控件

    2024年02月05日
    浏览(247)
  • 在Vue3+ElementPlus项目中使用具有懒加载的el-tree树形控件

    在Vue3+ElementPlus项目中使用具有懒加载的el-tree树形控件

    有时遇到一些需求就是在使用树形控件时,服务端并没有一次性返回所有数据,而是返回首层节点列表。然后点击展开首层节点中的某个节点,再去请求该节点的子节点列表,那么就得用上懒加载的机制了。在此以ElementPlus的树形控件为例,实现一个具有懒加载的树形控件的

    2024年02月06日
    浏览(16)
  • 78.(前端)分配权限页面显示——树形结构使用(Element-ui的Tree树形控件)

    78.(前端)分配权限页面显示——树形结构使用(Element-ui的Tree树形控件)

    在前端的操作中,应该增加修改、删除、分配权限的操作 这次主要是实现分配权限的显示!!!!!! 更换icon图标,并设计大小 绑定函数,点击弹出提示框(DIalog对话框) 在对话框内,应该显示一个树形结构提供选择(Tree树形控件) 初始化树形结构,并填充数据

    2024年02月05日
    浏览(44)
  • element-ui el-tree 设置指定级别节点显示复选框el-checkbox

    element-ui el-tree 设置指定级别节点显示复选框el-checkbox

            /deep/ .el-tree {         padding-top: 15px;         padding-left: 10px;         // 不可全选样式         .el-tree-node {           .is-leaf + .el-checkbox .el-checkbox__inner {             display: inline-block;           }           .el-checkbox .el-checkbox__inner {             display: none;    

    2023年04月08日
    浏览(48)
  • Element-UI实现的下拉搜索树组件(el-select、el-input、el-tree组合使用)

    Element-UI实现的下拉搜索树组件(el-select、el-input、el-tree组合使用)

    1、子组件封装 注意使用:正常使用 // 子组件使用 父组件调用

    2024年02月11日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包