vue 组件el-tree添加结构指示线条

效果展示:

注意:组件中需要添加:indent="0" 进行子级缩进处理,否则会出现子级缩进逐级递增

:expand-on-click-node="false" 设置点击箭头图标才会展开或者收起

代码:

html 复制代码
<el-tree class="tree filter-tree" 
    :data="treeList" 
    :props="defaultProps" 
    default-expand-all 
    :indent="0"
    :expand-on-click-node="false" 
    @node-click="handleNodeClick" 
    :filter-node-method="filterNode" 
    highlight-current ref="tree">
</el-tree>
css 复制代码
/* 点击树结构项的选中颜色 */
    .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
        background-color: #c7d1de;
    }

    /* 树形结构节点添加连线 */
    .tree {
        .el-tree-node {
            position: relative;
            padding-left: 20px;
            /* 缩进量 */
        }

        .el-tree-node__children {
            padding-left: 20px;
            /* 缩进量 */
        }

        /* 竖线 */
        .el-tree-node::before {
            content: "";
            height: 100%;
            width: 1px;
            position: absolute;
            left: -3px;
            top: -26px;
            border-width: 1px;
            border-left: 1px dashed #52627C;
        }

        /* 当前层最后一个节点的竖线高度固定 */
        .el-tree-node:last-child::before {
            height: 38px;
            /* 可以自己调节到合适数值 */
        }

        /* 横线 */
        .el-tree-node::after {
            content: "";
            width: 24px;
            height: 20px;
            position: absolute;
            left: -3px;
            top: 16px;
            border-width: 1px;
            border-top: 1px dashed #52627C;
        }

        /* 去掉最顶层的虚线,放最下面样式才不会被上面的覆盖了 */
        &>.el-tree-node::after {
            border-top: none;
        }

        &>.el-tree-node::before {
            border-left: none;
        }

        /* 展开关闭的icon */
        .el-tree-node__expand-icon {
            font-size: 16px;

            /* 叶子节点(无子节点) */
            &.is-leaf {
                color: transparent;
                /* 也可以去掉 */
                display: none;
            }
        }

    }
相关推荐
数研小生几秒前
亚马逊商品列表API详解
前端·数据库·python·pandas
你听得到112 分钟前
我彻底搞懂了 SSE,原来流式响应效果还能这么玩的?(附 JS/Dart 双端实战)
前端·面试·github
不倒翁玩偶3 分钟前
npm : 无法将“npm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。
前端·npm·node.js
奔跑的web.5 分钟前
UniApp 路由导航守
前端·javascript·uni-app
EchoEcho9 分钟前
记录overflow:hidden和scrollIntoView导致的页面问题
前端·css
Cache技术分享11 分钟前
318. Java Stream API - 深入理解 Java Stream 的中间 Collector —— mapping、filtering 和 fla
前端·后端
竟未曾年少轻狂14 分钟前
Vue3 生命周期钩子
前端·javascript·vue.js·前端框架·生命周期
TT哇19 分钟前
【实习】数字营销系统 银行经理端(interact_bank)前端 Vue 移动端页面的 UI 重构与优化
java·前端·vue.js·ui
蓝帆傲亦20 分钟前
Web前端跨浏览器兼容性完全指南:构建无缝用户体验的最佳实践
前端