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>
相关推荐
金金金__2 小时前
Element-Plus:popconfirm与tooltip一起使用不生效?
前端·vue.js·element
前端梭哈攻城狮2 小时前
uniapp图片上传添加水印/压缩/剪裁
前端·javascript·vue.js
踢足球的,程序猿3 小时前
从 Vue 2.0 进阶到 Vue 3.0 的核心技术解析指南
前端·javascript·vue.js·前端框架·html
掘金安东尼5 小时前
仅仅是发送一封邮件?暴露安全边界!
javascript·vue.js·面试
bo521005 小时前
突破性能瓶颈:基于虚拟滚动的大数据需求文档方案——告别卡顿与分页,实现Word级流畅体验
javascript·vue.js
小张快跑。5 小时前
【Vue3】(三)vue3中的pinia状态管理、组件通信
前端·javascript·vue.js
一颗奇趣蛋5 小时前
vue性能优化(响应数据&静态数据)
vue.js·性能优化
Hilaku6 小时前
用好了 defineProps 才叫会用 Vue3,90% 的写法都错了
前端·javascript·vue.js
Dignity_呱6 小时前
vue3对组件通信做了哪些升级?
前端·vue.js·面试
独立开阀者_FwtCoder6 小时前
最全301/302重定向指南:从SEO到实战,一篇就够了
前端·javascript·vue.js