el-tree 修改每个层级的背景色

news2024/11/24 11:33:42

目录

一、思路

二、代码

1. HTML部分

2. js部分

3. css部分


案例图

一、思路

  1. 使用 render-content 插槽来自定义节点内容。
  2. 根据节点的层级动态添加 CSS 类。
  3. 写一个方法,用于:递归地获取节点的层级。如果节点没有父节点,则返回当前层级;否则,递归调用并增加层级

二、代码

1. HTML部分

<el-tree
          :data="treeData"
          default-expand-all
          :filter-node-method="filterNode"
          ref="tree"
          highlight-current
          node-key="id"
          @node-click="handleNodeClick"
          :props="defaultProps"
          :current-node-key="nodeKey"
          @check-change="handleCheckChange"
          :render-content="renderContent"
        >
        </el-tree>

2. js部分

data(){
return {
 selectTreeData: 10, //获取选中数据的ID
}
}
method:{
   //树形选择,点击选中数据,
    handleNodeClick(val, node) {
      this.selectTreeData = val.id;
    },
    getLevel(node, level = 1) {
      if (!node.parent) {
        return level;
      } else {
        return this.getLevel(node.parent, level + 1);
      }
    },
    /**
     * 动态添加每个层级的类名
     */
    renderContent(h, { node, data, store }) {
      const level = PublicFunction.getLevel(node);
      const isSelected = this.selectTreeData === data.id; // 检查当前节点是否被选中
      const customClass = `tree-node-level-${level} ${
        isSelected ? "selected-node" : ""
      }`;
      return h("span", { class: customClass }, [h("span", null, [data.label])]);
    },
    //#endregion
}

3. css部分

/* 2024-10-10 14. 树结构 每个层级的背景色*/
.tree-node-level-1,
.tree-node-level-2,
.tree-node-level-3 {
  background-color: #e0ecfa;
}

.tree-node-level-4 {
  background-color: #fff;
} 

/* 2024-10-10 14. 树结构 每个层级选中后的背景色*/
.selected-node>span {
  background-color: #2a94de;
  display: inline-block;
}

/* 2024-10-10 14. 树结构 同上*/
.tree-node-level-3:hover,
.tree-node-level-3:active {
  background-color: #2a94de;
  display: inline-block;
}

/*
* 5. 树 鼠标悬浮时的背景色
*/
.el-tree-node__content:hover {
  /* background-color: #a3cbfd !important; 2024-10-9 屏蔽,添加下面代码*/
  background-color: #2a94de !important;
  color: #fff;
}

/* // 2024-10-9
* 处理树默认选中的背景色
*/
.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content {
  background-color: #2a94de !important;
  color: #fff;
}

ps:

如果样式仅用于当前页面,需要加::v-deep ;

如果样式适用于全局,则样式文件在main.js 中引入,且不需要添加::v-deep。

下面可不看...

记录将方法写在公共组件vuePublic.js中,单页面引用

1. vuePublic.js

import router from "@/router";

const PublicFunction = {
  //#region  用于动态修改el-tree 每个层级的背景色
  getLevel(node, level = 1) {
    if (!node.parent) {
      return level;
    } else {
      return this.getLevel(node.parent, level + 1);
    }
  },
  renderContent(h, { node, data, store },selectTreeData) {
    const level = this.getLevel(node);
    const isSelected = selectTreeData === data.id; // 检查当前节点是否被选中
    const customClass = `tree-node-level-${level} ${
      isSelected ? "selected-node" : ""
    }`;
    return h("span", { class: customClass }, [h("span", null, [data.label])]);
  },
  //#endregion


};
export { PublicFunction };

2. 页面引用:

html部分同上。

import { PublicFunction } from "@/utils/vuePublic";
method:{
 /**
     * 修改每个层级的背景色
     */
    renderContent(h, { node, data, store }) {
      return PublicFunction.renderContent(
        h,
        { node, data, store },
        this.selectTreeData
      );
    },
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式工业显示器在食品生产行业的应用

嵌入式工业显示器在食品生产行业的应用主要体现在以下几个方面&#xff1a; 一、自动化控制与精准监测 嵌入式工业显示器通常与各类传感器和执行器集成&#xff0c;能够实时显示生产线的运行状态&#xff0c;实现自动化控制和精准监测。在食品生产过程中&#xff0c;从原材料…

Vscode+Pycharm+Vue.js+WEUI+django火锅(三)理解Vue

新创建的Vue项目里面很多文件&#xff0c;对于新手&#xff0c;老老实实做一下了解。 1.框架逻辑 框架的逻辑都是相通的&#xff0c;花点时间理一下就清晰了。 2.文件目录及文件 创建好的vue项目下&#xff0c;主要的文件和文件夹要先认识一下&#xff0c;并与框架逻辑对应起…

Centos7 搭建单机elasticsearch

以下是在 CentOS 7 上安装 Elasticsearch 7.17.7 的完整步骤&#xff1a;&#xff08;数据默认保存在/var/lib/elasticsearch下&#xff0c;自行更改&#xff09; 一、装 Java 环境 Elasticsearch 是用 Java 编写的&#xff0c;所以需要先安装 Java 运行环境。 检查系统中是…

springboot酒店客房管理系统-计算机毕业设计源码43070

目录 摘要 1 绪论 1.1 选题背景与意义 1.2国内外研究现状 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1系统开发流程 2.2.2 用户登录流程 2.2.3 系统操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 删除信息流程 2.3 系统功能…

模拟堆算法

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e510; int heap[N], sz, cnt; int th[N], ht[N]; void hswap(int a, int b) {swap(heap[a], heap[b]);swap(ht[a], ht[b]);swap(th[ht[a]], th[ht[b]]); } void down(int h) {int t h;if(2*h <…

【开源项目】Jsoncpp的简单使用

Jsoncpp是一个开源项目&#xff0c;它是一个用于处理JSON&#xff08;JavaScript Object Notation&#xff09;数据的C库。它支持将C结构化的数据转化为JSON字符串&#xff0c;也支持将JSON字符串转化为结构化数据 JSON&#xff08;JavaScript Object Notation&#xff09;数据…

质量好的宠物空气净化器分享,希喂、小米、范罗士性能大揭秘

双十一大家都打算买什么&#xff1f;国庆小长假刚结束&#xff0c;没想到下周就开始预售付定金了。看了一圈自己没有什么想买的&#xff0c;就打算给我家毛孩子买点什么。之前一直很纠结要不要买宠物空气净化器&#xff0c;觉得有点贵迟迟没入手&#xff0c;去看了眼&#xff0…

直线导轨在自动化设备中需要注意什么?

直线导轨属于精密传动配件&#xff0c;因而在使用时要求有相当地慎重态度&#xff0c;如果使用不当&#xff0c;也不能达到预期的性能效果&#xff0c;尤其是保管和保养不当&#xff0c;很容易造成导轨失效等问题&#xff0c;导致无法正常使用。因此&#xff0c;自动化设备中使…

UI设计岗前训练

UI设计&#xff0c;全称User Interface Design&#xff0c;即用户界面设计&#xff0c;是指对软件或应用程序的人机交互、操作逻辑、界面美观的整体设计。它涉及软件的操作流程、逻辑、布局、色彩、字体、图标、按钮、动画效果等多个方面&#xff0c;旨在提升用户体验和满意度。…

又被Transformer秀到了!结合小样本学习发A会!

在有限的数据资源下&#xff0c;为了训练出高性能的机器学习模型&#xff0c;我们常会考虑Transformer小样本学习。 这是因为Transformer能从有限的数据中提取更多有用的信息&#xff0c;这样与小样本学习结合&#xff0c;可以更有效的帮助我们提高模型的性能&#xff0c;加速…

C9800的Flex配置

C9800的配置和AireOS WLC的配置架构有了很大的调整&#xff0c;在配置一个WLAN的时候&#xff0c;可能相对麻烦一些&#xff0c;但是架构还是比较清晰。 这里记录一下针对Flex的配置&#xff0c;主要分为如下几个摘要&#xff08;以及对应的CLI配置&#xff09;&#xff1a; 1…

python+request+unittest+ddt自动化框架

参考资料&#xff1a; 用户中心 - 博客园 抓包模拟器笔记 肖sir__接口自动化pythonrequestddt&#xff08;模版&#xff09; - xiaolehua - 博客园 pythonrequestunittestddt自动化框架 博文阅读密码验证 - 博客园 肖sir__python之模块configparser - xiaolehua - 博客园 c…

4G路由网关R10在智能制造生产线的应用

在当今智能制造的时代&#xff0c;高效稳定的网络连接和数据传输至关重要。4G 路由网关 R10 以其卓越的性能&#xff0c;在智能制造生产线中发挥着重要作用。 4G 路由网关 R10 是一款功能强大的网络设备。它支持多种网络连接方式&#xff0c;包括 4G 网络、有线网络等&#xff…

骨传导耳机哪个牌子好?五大高热度骨传导耳机测评推荐

随着科技的不断进步&#xff0c;耳机已经成为了我们日常生活中不可或缺的一部分。从传统的有线耳机到无线蓝牙耳机&#xff0c;再到现在的骨传导耳机&#xff0c;每一次技术的革新都给用户带来了全新的体验。骨传导耳机&#xff0c;作为一种新兴的耳机类型&#xff0c;它通过颅…

乐歌E5,E6系列升降桌质量如何?2024推荐必买的四款热销型号

在数字化时代&#xff0c;电脑桌成为了我们日常生活和工作中不可或缺的一部分。然而&#xff0c;长时间坐在固定高度的电脑桌前&#xff0c;不仅会影响我们的工作效率&#xff0c;还可能对身体健康造成不良影响。因此&#xff0c;一款能够电动升降的电脑桌显得尤为重要。 乐歌…

Linux-创建函数

基本的脚本函数 返回值 在函数中使用变量 数组变量和函数-向函数传递数组参数 数组变量和函数-从函数返回数组 函数递归 创建库 在命令行上使用函数-在命令行上创建函数 在命令行上使用函数-在.bashrc文件中定义函数

计算机组成的抽象以及相关技术

第1章 计算机抽象以及相关技术 最高端的服务器是超级计算机&#xff1a;几十万个处理器和太字节(terabyte)2的40次方的内存TB&#xff0c;成本数千万或数亿。通常写为1000000000000&#xff0c;万亿。 云计算接替了传统服务器称为仓储级计算机中心&#xff0c;可以实现Saas(软…

vue3的知识整理

1. vue3的生命周期 vue3的生命周期一般有2种形式写法&#xff0c;一种是基于vue2的options API的写法&#xff0c;一种是vue3特有的Composition API options API的生命周期 基本同vue2的生命周期基础&#xff0c;只是为了与生命周期beforeCreate和created对应&#xff0c;将bef…

餐企中场战事:高端网红退败,平价品牌向前

餐饮行业&#xff0c;风起云涌。人人都在讨论逆流与寒气的今天&#xff0c;品牌何以为战&#xff1f;步入平价时代&#xff0c;又该如何寻找制胜法宝&#xff1f; 01风浪越大&#xff0c;餐饮机会越多 如果把餐饮业的历史无限拉长&#xff0c;你会发现每个看似经济下行的节点…

Chromium 中前端HTMLDialogElement <Dialog> c++代码实现

一、HTMLDialogElement: open property Baseline Widely available The open property of the HTMLDialogElement interface is a boolean value reflecting the open HTML attribute, indicating whether the <dialog> is available for interaction. Value A boole…