使用el-tree实现自定义树结构样式

实现效果:

直接上代码:

<template>
    <div>
        <div class="tops">
            <el-tree  :default-expanded-keys="['1']" ref="myTree" :data="data" :props="defaultProps" @node-click="handleNodeClick" highlight-current node-key="value">
                <span class="custom-tree-node" slot-scope="{ node, data }">
                    <i v-if="node.level == 1" class="father" />
                    <i v-else-if="node.level == 2" class="son" />
                    <i v-else-if="node.level == 3" />
                    {{ data.label }}
                </span>
            </el-tree>
        </div>
    </div>
</template>

<script>
let that=this
      export default {
        data() {
        return {
            data: [
                        {
                        label: '1号生活区',
                        value:'1',
                        isShow:true,//当前折叠部分是否打开
                        children: [
                                {
                                label: '1号楼',
                                value:'1-1',
                                },
                                {
                                    label: '2号楼',
                                    value:'1-2',
                                },
                                {
                                    label: '3号楼',
                                    value:'1-3',
                                },
                                {
                                    label: '4号楼',
                                    value:'1-4',
                                },
                        ]
                        }, 
                        {
                        label: '2号生活区',
                        value:'2',
                        isShow:false,
                        children: [
                            {
                                label: '1号楼',
                                value:'2-1',
                                },
                                {
                                    label: '2号楼',
                                    value:'2-2'
                                },
                        ]
                        }, 
                        {
                        label: '3号生活区',
                        value:'3',
                        isShow:false,
                        children: [
                                {
                                label: '1号楼',
                                value:'3-1',
                                },
                                {
                                    label: '2号楼',
                                    value:'3-2',
                                },
                                {
                                    label: '3号楼',
                                    value:'3-3',
                                },
                        ]
                        },
                        {
                        label: '4号生活区',
                        value:'4',
                        isShow:false,
                        children: [
                                {
                                label: '1号楼',
                                value:'4-1',
                                },
                                {
                                    label: '2号楼',
                                    value:'4-2',
                                },
                                {
                                    label: '3号楼',
                                    value:'4-3',
                                },
                        ]
                        }
                    ],
            defaultProps: {
            children: 'children',
            label: 'label'
            },
            value1: '',
            value2:'',
        
        };

        },
        methods: {
        handleNodeClick(data) {
            this.$emit('treesVal',data)
        }, 
        },
        mounted () {
            this.$nextTick(function () {
            this.$nextTick(() => {
                // myTree 数组件的ref  默认让第一项高亮 
                // data是树组件对应的数据
                // 通过data中的第一项的id找到对应的节点,然后把这个节点设置为高亮
                this.$refs.myTree.setCurrentKey(this.data[0].value)
            });
        });
        },
  };
</script>

<style lang="scss" scoped>
@import '@/style/util.scss';
.tops{
    width: vw(260);
    height: 100%;
    background-color: #fff;
    margin: 0 auto;
    padding:0 vw(8);
    box-shadow: 0 vw(2) vw(10) 0 rgba(0,5,10,0.1);
     //设置行高
    >>>.el-tree-node__content{
        position: relative;
        height: vh(52);
        box-sizing: border-box;
    }
   //小三角的位置 以及默认时候的位置
    >>>.el-tree-node__expand-icon{
        webkit-transform:rotate(-90deg);
        transform: rotate(-90deg);
        user-select: none;
        position: absolute;
        top: vh(8);
        right: 0;
    } 
  //小三角点击展开时候旋转的角度
    >>>.el-tree-node__expand-icon.expanded{
        webkit-transform:rotate(90deg);
        transform: rotate(90deg);
        user-select: none;
    }
  //插入的父级的图标的样式  
    .father {
        background: url('../assets/img/flower-wxz.png') no-repeat;
        width: vw(18);
        height: vw(18);
        display: inline-block;
        background-size: 100% 100%;
        // margin-left: vw(20) !important;
        margin: 0 vw(8) 0 vw(20) !important;
    }
    //插入的自己的图标样式
    .son {
        width: vw(4);
        height: vw(4);
        border-radius: 50%;
        background: #666666;
        display: inline-block;
        background-size: 100% 100%;
        margin: 0 vw(8) vh(3) vw(35) !important;
    }

    //有子节点 且未展开 小三角
    .el-tree /deep/ .el-icon-caret-right:before {
        color: #858585;
        font-weight: 600;
    }
    //有子节点 且已展开 小三角
    .el-tree /deep/ .el-tree-node__expand-icon.expanded.el-icon-caret-right:before {
    color: #4F8BE2 !important;
    font-weight: 600;
    }
    //没有子节点 小三角
    .el-tree /deep/.el-tree-node__expand-icon.is-leaf::before {
    content: "";
    display: block;
    font-weight: 600;
    width: vw(12);
    height: vw(12);
    font-size: vw(16);
    background-size: 100% 100%;
    }
    >>>.el-tree-node__content .custom-tree-node{
        font-family: 'pfm';
        font-size: vw(16);
        color: #4e4e4e;
        line-height: vh(52);
        font-weight: 500;
        user-select: none;
    }
    >>>.el-tree-node__children .el-tree-node .el-tree-node__content .custom-tree-node{
        font-family: 'pf';
        font-size: vw(16);
        color: #666666;
        line-height: vh(52);
        font-weight: 500;
        user-select: none;
    }
    >>>.el-tree-node__content {
        border-left: vw(4) solid  transparent;
    }
    //选中颜色
    /deep/ .el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
            background: #ECF4FF !important;
            border-left: vw(4) solid  #4F8BE2;
            span{
                color: #4F8BE2;
                font-weight: 600;
            }
            .father {
                background: url('../assets/img/flower-xz.png') no-repeat;
                width: vw(18);
                height: vw(18);
                display: inline-block;
                background-size: 100% 100%;
                // margin-left: vw(20) !important;
                margin: vh(-3) vw(8) 0 vw(20) !important;
            
                }
                .son {
                    width: vw(4);
                    height: vw(4);
                    border-radius: 50%;
                    background:  #4F8BE2;
                    display: inline-block;
                    background-size: 100% 100%;
                    margin: 0 vw(8) vh(3) vw(35) !important;
                }    
        
    }
   
}
</style>

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/79685.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

广州华锐互动:奶牛难产原因及救治VR仿真实训系统

奶牛难产是一种常见的疾病&#xff0c;对奶牛的健康和生产造成很大的影响。为了解决这一问题&#xff0c;许多奶牛养殖场开始采用VR仿真技术来培训奶牛兽医&#xff0c;帮助学生更好地理解奶牛养殖的实际过程&#xff0c;提高他们的实践能力的教学方式。 VR技术开发公司广州华锐…

二十二、策略模式

目录 1、项目需求2、传统方案解决鸭子问题的分析和代码实现3、传统方式实现存在的问题分析和解决方案4、策略模式基本介绍5、使用策略模式解决鸭子问题6、策略模式的注意事项和细节7、策略模式的使用场景 以具体项目来演示为什么需要策略模式&#xff0c;策略模式的优点&#x…

如何快速的合并多个PPT使之成为一个PPT?

如何快速的合并多个PPT使之成为一个PPT&#xff1f; 项目过程中&#xff0c;经常给客户汇报&#xff0c;经常做PPT&#xff0c;有时候&#xff0c;需要把之前的ppt内容整合到新的内容中&#xff0c;如何快速合并以及使用呢&#xff1f; 幻灯片&#xff08;PPT中&#xff09;点…

SpringBoot3集成Kafka

标签&#xff1a;Kafka3.Kafka-eagle3&#xff1b; 一、简介 Kafka是一个开源的分布式事件流平台&#xff0c;常被用于高性能数据管道、流分析、数据集成和关键任务应用&#xff0c;基于Zookeeper协调的处理平台&#xff0c;也是一种消息系统&#xff0c;具有更好的吞吐量、内…

Python入门【动态添加属性和方法、正则表达式概述、match函数的使用、常用匹配符、限定符 、限定符使用示例】(二十九)

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小王&#xff0c;CSDN博客博主,Python小白 &#x1f4d5;系列专栏&#xff1a;python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 &#x1f4e7;如果文章知识点有错误…

List Label Standard Reporting Edition Crack

List & Label Standard Reporting Edition Crack List&Label是适用于所有主要开发平台的报告解决方案&#xff0c;提供了强大的报告引擎、灵活的API和功能丰富的报告设计器。只需要几行代码就可以在桌面、web或云应用程序中嵌入List&Label。它允许您的应用程序用户…

Oracle字段长度不足位数补零

Oracle字段长度不足位数补零 有时候从数据库中取出的月份值是1&#xff0c;而不是01&#xff0c;该怎么办呢 SELECTLPAD( CODE_MONTH, 2, 0 ) FROMtb_cube_TY001 WHERECODE_BM_MEATYPE TY20 AND code_measure MYLX01 AND code_month <> ~ AND CODE_ENTITY 01A AND…

Spring框架中JavaBean的生命周期及单例模式与多列模式

Spring框架中JavaBean的生命周期及单例模式与多列模式 1. Spring框架中JavaBean的管理过程1.1 #定义Bean1.2 Bean的实例化1.3 属性注入1.4 初始化方法1.5 Bean的使用和引用1.6 销毁方法 2. 单例模式与原型模式在JavaBean管理中的应用1.在Spring管理JavaBean的过程中&#xff0c…

抖音短视频SEO矩阵系统源码开发

一、概述 抖音短视频SEO矩阵系统源码是一项综合技术&#xff0c;旨在帮助用户在抖音平台上创建并优化短视频内容。本文将详细介绍该系统的技术架构、核心代码、实现过程以及优化建议&#xff0c;以便读者更好地理解并应用这项技术。 二、技术架构 抖音短视频SEO矩阵系统采用前…

回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现TSO-BP金枪鱼群优化算法优化BP神经网络多输入单输出回归预测&#xff08;多指标&#xff0c;多图&#xff09;效果…

机器学习|决策树:数学原理及代码解析

机器学习&#xff5c;决策树&#xff1a;数学原理及代码解析 决策树是一种常用的监督学习算法&#xff0c;适用于解决分类和回归问题。在本文中&#xff0c;我们将深入探讨决策树的数学原理&#xff0c;并提供 Python 示例代码帮助读者更好地理解和实现该算法。 决策树数学原…

3.若依前后端分离版开发用户自定义配置表格功能

一、背景 在项目上线测试的时候&#xff0c;关于同一个界面的表格&#xff0c;不同的用户会出现不同的字段排列需求&#xff0c;有些用户希望把A字段排在最前面&#xff0c;有些用户则希望A字段不显示。针对这种情况&#xff0c;开发一个表格自定义配置的功能&#xff0c;每个…

QT的核心——信号与槽

目录 回顾C 语言信号 1、信号与槽 2、关联信号与槽 2.1自动关联信号与槽 2.2手动关联信号与槽 2.3断开信号与槽 3、自定义信号 3.1自定义信号使用条件 3.2自定义槽函数使用条件 4、信号与槽参数传递 4.1自定义一个带参的信号 4.2关联带参的信号与槽 4.3发送一个带…

奥威BI数据可视化工具:个性化定制,打造独特大屏

每个人都有自己独特的审美&#xff0c;因此即使是做可视化大屏&#xff0c;也有很多人希望做出不一样的报表&#xff0c;用以缓解审美疲劳的同时提高报表浏览效率。因此这也催生出了数据可视化工具的个性化可视化大屏制作需求。 奥威BI数据可视化工具&#xff1a;个性化定制&a…

[线程/C++]线程同(异)步和原子变量

文章目录 1.线程的使用1.1 函数构造1.2 公共成员函数1.2.1 get_id()1.2.2 join()2.2.3 detach()2.2.5 joinable()2.2.6 operator 1.3 静态函数1.4 call_once 2. this_thread 命名空间2.1 get_id()2.2 sleep_for()2.3 sleep_until()2.4 yield() 3. 线程同步之互斥锁3.1 std:mute…

Open cv C++安装

注意;要退出conda的虚拟环境 依赖 1.更新系统 sudo apt-get update sudo apt-get upgrade 2.安装相关的依赖 sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install libjpeg-de…

C语言 poll多路复用

NAME poll, ppoll - wait for some event on a file descriptor SYNOPSIS #include <poll.h> 函数原型&#xff1a; int poll(struct pollfd *fds, nfds_t nfds, int timeout); #define _GNU_SOURCE /* See feature_test_macros(7) */ …

网格(mesh)点跟踪及在贴图中的应用

本文介绍网格跟踪的思路及其在贴图中的使用效果。网格跟踪即跟踪所有的网格点&#xff0c;然后根据网格点估算某一点的变形&#xff0c;相较于曲面跟踪可以在保证一定精度条件下大幅提高处理速度。这里介绍一种简单的网格跟踪思路&#xff0c;效果如下图所示&#xff1a; 创建网…

vue3中使用第三方插件mitt实现任意组件通讯

vue3中使用第三方插件mitt实现任意组件通讯 组件通讯是vue3组合式开发的核心之一&#xff0c;现在我在写代码时&#xff0c;一个组件的代码超过了200行&#xff0c;基本都会拆分组件。组件拆分后&#xff0c;组件之间的通讯就很重要&#xff0c;总结了一下&#xff0c;目前有这…

微服务—Eureka注册中心

eureka相当于是一个公司的管理人事HR,各部门之间如果有合作时&#xff0c;由HR进行人员的分配以及调度&#xff0c;具体选哪个人&#xff0c;全凭HR的心情&#xff0c;如果你这个部门存在没有意义&#xff0c;直接把你这个部门撤销&#xff0c;全体人员裁掉&#xff0c;所以不想…