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>
相关推荐
小彭努力中7 小时前
191.Vue3 + OpenLayers 实战:可控化版权信息(Attribution)详解与完整示例
前端·javascript·vue.js·#地图开发·#cesium
发现一只大呆瓜8 小时前
Vue-Vue2与Vue3核心差异与进化
前端·vue.js·面试
发现一只大呆瓜8 小时前
Vue2:数组/对象操作避坑大全
前端·vue.js·面试
发现一只大呆瓜8 小时前
Vue3:ref 与 reactive 超全对比
前端·vue.js·面试
程序猿大波9 小时前
基于java,SpringBoot和Vue餐饮公司食堂管理系统设计
java·vue.js·spring boot
前端小趴菜0510 小时前
vue3项目优化方案
前端·javascript·vue.js
Irene199111 小时前
对比总结:Vue3中的 watch 和 Pinia中的 $subscribe
vue.js·pinia·watch·subscribe
Luna-player12 小时前
gitee上的vue项目,刚刚创建了一个分支,怎么在本地上拉取分支项目
前端·vue.js·gitee
徐小夕12 小时前
借助AI,1周,0后端成本,我开源了一款Office预览SDK
前端·vue.js·github
还是大剑师兰特12 小时前
Vue3 按钮切换示例(启动 / 关闭互斥显示)
开发语言·javascript·vue.js