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>
相关推荐
计算机-秋大田6 小时前
基于Spring Boot的兴顺物流管理系统设计与实现(LW+源码+讲解)
java·vue.js·spring boot·后端·spring·课程设计
禾苗种树7 小时前
在 Vue 3 中使用 ECharts 制作多 Y 轴折线图时,若希望 **Y 轴颜色自动匹配折线颜色**且无需手动干预,可以通过以下步骤实现:
前端·vue.js·echarts
小盼江8 小时前
水果生鲜农产品推荐系统 协同过滤余弦函数推荐水果生鲜农产品 Springboot Vue Element-UI前后端分离 代码+开发文档+视频教程
vue.js·spring boot·ui
初遇你时动了情9 小时前
react module.scss 避免全局冲突类似vue中scoped
vue.js·react.js·scss
烂蜻蜓9 小时前
Uniapp 设计思路全分享
前端·css·vue.js·uni-app·html
bin915310 小时前
DeepSeek 助力 Vue 开发:打造丝滑的二维码生成(QR Code)
前端·javascript·vue.js·ecmascript·deepseek
浪九天14 小时前
Vue 不同大版本与 Node.js 版本匹配的详细参数
前端·vue.js·node.js
尚学教辅学习资料15 小时前
基于SpringBoot+vue+uniapp的智慧旅游小程序+LW示例参考
vue.js·spring boot·uni-app·旅游
IT、木易16 小时前
跟着AI学vue第五章
前端·javascript·vue.js
薛定谔的猫-菜鸟程序员16 小时前
Vue 2全屏滚动动画实战:结合fullpage-vue与animate.css打造炫酷H5页面
前端·css·vue.js