element-ui 2 el-tree 内容超长滚动条不显示问题

elementUI用到tree 树形组件时碰到tree节点过多需要横向滚动显示,但是组件文档上没有上没有正常显示,具体解决方案请往下看。

如图所示,需要显示纵向和横向滚动条:

1、在tree外包一层div,并设置父元素的高,这样才不会出现横向滚动条在树的最低端,需要滚动竖向滚动条才能看到。

2、定义tree的样式 "tree-container"

3、**【可选】**重写tree样式(这个可以全局或是使用v-deep)

4、**【可选】**防止树多出了莫名的高度设置以下属性

::v-deep{

.el-tree-node > .el-tree-node__children {

overflow: visible;

}

}

5、具体实现代码

复制代码
<template>
<div class="tree-container">
<el-tree
      class="el-tree-custom"
      :data="dataTree"
      :props="treeProps"
      :expand-on-click-node="false"
      :filter-node-method="filterNode"
      ref="tree"
      node-key="id"
      default-expand-all
      highlight-current
      @node-click="handleNodeClick"
  />
</div>
</template>

<script>
export default{
    data(){
        return{
    dataTree: [{
          label: '一级 1',
          children: [{
            label: '二级 1-1',
            children: [{
              label: '三级 1-1-1'
            }]
          }]
        }, {
          label: '一级 2',
          children: [{
            label: '二级 2-1',
            children: [{
              label: '三级 2-1-1'
            }]
          }, {
            label: '二级 2-2',
            children: [{
              label: '三级 2-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1',
               children: [{
                label: '四级 4-1-1'
            }],
            label: '三级 100003-1000001-1011111',
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1',
               children: [{
                label: '四级 4-1-1'
            }],
            label: '三级 100003-1000001-1011111',
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1',
               children: [{
                label: '四级 4-1-1'
            }],
            label: '三级 100003-1000001-1011111',
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1',
               children: [{
                label: '四级 4-1-1'
            }],
            label: '三级 100003-1000001-1011111',
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1',
               children: [{
                label: '四级 4-1-1'
            }],
            label: '三级 100003-1000001-1011111',
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }, {
          label: '一级 3',
          children: [{
            label: '二级 3-1',
            children: [{
              label: '三级 3-1-1',
               children: [{
                label: '四级 4-1-1'
            }],
            label: '三级 100003-1000001-1011111',
            }]
          }, {
            label: '二级 3-2',
            children: [{
              label: '三级 3-2-1'
            }]
          }]
        }],

        treeProps:{
          children: 'children',
          label: 'label'
        }
        }
    }
}
</script>

<style scoped lang="scss">
.tree-container {
  /*显示父容器滚动条*/
  overflow-x: auto;
  /*显示父容器滚动条*/
  max-height: 700px;
   /*显示父容器滚动条*/
  .el-tree-custom {
    display: inline-block;
    /* 防止换行 */
    white-space: nowrap;
    /* 防止换行 */
    overflow-x: auto;
  }
}
</style>

这里如果使用v-deep 修改样式,横向滚动条可能不会固定到底部分,如

复制代码
 /*(1)*/
 ::v-deep .el-tree-node.is-expanded > .el-tree-node__children {
    display: inline;
 }
 /**(2)*/
::v-deep .el-tree-node > .el-tree-node__content {
  display: block !important;
}
/*(3)*/
::v-deep .el-tree-node > .el-tree-node__children {
  overflow: visible;
}
/*(4)*/
::v-deep .el-tree > .el-tree-node{
  min-width:100%;
  display: inline-block;
}
相关推荐
一个被程序员耽误的厨师几秒前
01-设计篇-我用前端那一套手艺造了一个AI-Native工具
前端·ai-native
不吃糖葫芦312 分钟前
vue3实现拓扑图编辑功能(谨以此纪念我当前的最后一份前端工作)
前端
大家的林语冰20 分钟前
超越 TypeScript,Flow 强势回归,语法高仿 TS,功能更丰富,类型更安全!
前端·javascript·typescript
এ慕ོ冬℘゜40 分钟前
jQuery 高可用多图上传组件(企业级封装 + 踩坑全解 + 可直接上线)
前端·javascript·jquery
爱勇宝1 小时前
AI 时代,前端工程师的话语权正在下降?
前端·后端
kymjs张涛1 小时前
一个月,纯VibeCoding,全平台云笔记APP
前端·javascript·后端
巴勒个啦1 小时前
esbuild 插件实战:5个真实场景带你自定义构建流水线
前端·angular.js
英勇无比的消炎药1 小时前
一文吃透TinyRobot Bubble:从基础组件搭建完整AI消息渲染体系
vue.js
狗头大军之江苏分军1 小时前
前端路由是怎么来的
前端·javascript·后端