ElementUI el-tree 树组件 增加辅助线

需求

项目需求给elementUI的el-tree添加辅助线,并且不能使用其他插件,没办法只能该样式了。

效果

代码

html

javascript 复制代码
<template>
  <div>
    <el-scrollbar class="long-content">
      <el-tree node-key="id"
               :data="deptTree"
               default-expand-all
               ref="deptTree">
        <span class="custom-tree-node"
              slot-scope="{ node }">
          <el-tooltip class="item"
                      effect="dark"
                      :content="node.label"
                      :open-delay="1000"
                      placement="right">
            <span style="font-size: 14px;">{{ node.label }}</span>
          </el-tooltip>
        </span>
      </el-tree>
    </el-scrollbar>
  </div>
</template>

css

javascript 复制代码
<style lang="scss" scoped>

.long-content {
  height: calc(100% - 40px);
  margin-top: 10px;
  box-sizing: border-box;

  ::v-deep {
    // 设置树形组件节点的定位和左内边距
    .el-tree-node {
      position: relative;
      // padding-left: 13px;
    }
    // 设置树形组件节点的 before 伪类的样式
    .el-tree-node:before {
      width: 1px;
      height: 100%;
      content: '';
      position: absolute;
      top: -38px;
      bottom: 0;
      left: 0;
      right: auto;
      border-width: 1px;
      border-left: 1px dashed #b8b9bb;
    }
    // 设置树形组件节点的 after 伪类的样式
    .el-tree-node:after {
      width: 13px;
      height: 13px;
      content: '';
      position: absolute;
      left: 0;
      right: auto;
      top: 11px;
      bottom: auto;
      border-width: 1px;
      border-top: 1px dashed #b8b9bb;
    }

    // 设置树形组件首节点的左边框不显示
    .el-tree > .el-tree-node:before {
      border-left: none;
    }

    // 设置树形组件首节点的顶部边框不显示
    .el-tree > .el-tree-node:after {
      border-top: none;
    }

    // 设置树形组件末节点的 before 伪类的高度
    .el-tree .el-tree-node:last-child:before {
      height: 50px;
    }

    // 设置树形组件节点字体大小、以及取消左内边距
    .el-tree .el-tree-node__content {
      color: #000;
      font-size: 14px;
      padding-left: 0 !important;
    }

    // 设置树形组件孩子节点左内边距
    .el-tree .el-tree-node__children {
      padding-left: 11.5px;
    }

    // 设置树形组件复选框左右外边距
    .el-tree .el-tree-node__content > label.el-checkbox {
      margin: 0 5px 0 5px !important;
    }

    // 设置树形组件展开图标定位、图层、内边距
    .el-tree .el-tree-node__expand-icon {
      position: relative;
      z-index: 99;
    }

    // 设置树形组件叶子节点的默认图标不显示
    .el-tree .el-tree-node__expand-icon.is-leaf {
      display: none;
    }

    // 设置树形组件叶子节点的横线
    .el-tree .leaf-node-line {
      width: 23px;
      height: 13px;
      content: '';
      position: absolute;
      left: 13px;
      right: auto;
      top: 12px;
      bottom: auto;
      border-width: 1px;
      border-top: 1px solid #b8b9bb;
    }

    // 设置树形组件有叶子节点的左外边距
    .el-tree .el-tree-node__content:has(.is-leaf) {
      // color: aqua;
      margin-left: 24px !important;
    }
  }
}
</style>
相关推荐
sunbyte1 小时前
50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ThemeClock(主题时钟)
前端·javascript·css·vue.js·前端框架·tailwindcss
浏览器API调用工程师_Taylor1 小时前
AOP魔法:一招实现登录弹窗的全局拦截与动态处理
前端·javascript·vue.js
一个水瓶座程序猿.1 小时前
Vue3 中使用 Vueuse
前端·javascript·vue.js
网络点点滴2 小时前
Vue如何处理数据、v-HTML的使用及总结
前端·vue.js·html
paopaokaka_luck2 小时前
基于SpringBoot+Vue的酒类仓储管理系统
数据库·vue.js·spring boot·后端·小程序
雲墨款哥3 小时前
Vue3.0 项目初始化及 Element Plus 配置实战
前端·vue.js
前端小饭桌3 小时前
关于 Vue 3 的 ref,这些细节你了解了多少?
前端·vue.js
光影少年3 小时前
vue3.0性能提升主要通过那几方面体现的?
前端·vue.js
江城开朗的豌豆4 小时前
路由守卫:你的Vue路由‘保安’,全局把关还是局部盯梢?
前端·javascript·vue.js
Jinxiansen02114 小时前
Vue 3 响应式核心源码详解(基于 @vue/reactivity)
前端·javascript·vue.js