ruoyi(若依)(el-menu也可参考)菜单栏过长显示省略号才显示气泡

一、背景

若依前后端分离的版本,新版本中优化了菜单名称过长悬停显示标题,但是是悬浮所有长度大于5的标题。可以查看提交记录:https://gitee.com/y_project/RuoYi-Cloud/commit/99932d91c0144da9f34f5bb05683cc0b86303217
但是我希望是只悬浮菜单名称过长的菜单,所以做了改进。
因为菜单使用的是elementUI的el-menu做的,所以都可以做参考。

二、效果

鼠标放到展示省略号的菜单栏上会展示气泡,没省略号的则不展示气泡。
实现后效果如下图↓↓↓
在这里插入图片描述

三、代码修改

1、如果使用的是最新版本的ruoyi,可以先去掉路径src/layout/components/Sidebar/Item.vue文件中做的标题长度大于5的判断
在这里插入图片描述
2、修改路径src\layout\components\Sidebar\SidebarItem.vue代码,新增部分我做了注释:

<template><div v-if="!item.hidden"><templatev-if="hasOneShowingChild(item.children, item) &&(!onlyOneChild.children || onlyOneChild.noShowingChildren) &&!item.alwaysShow"><!-- 新增气泡部分 --><app-linkv-if="onlyOneChild.meta":to="resolvePath(onlyOneChild.path, onlyOneChild.query)"><el-tooltipclass="item"effect="dark":disabled="isShowTooltip":content="onlyOneChild.meta.title"placement="right-start"><el-menu-item:index="resolvePath(onlyOneChild.path)":class="{ 'submenu-title-noDropdown': !isNest }"@mouseenter.native="onMouseOver($event)"><span v-if="onlyOneChild.meta"><item:icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)":title="onlyOneChild.meta.title"/></span></el-menu-item></el-tooltip></app-link></template><el-submenuv-elseref="subMenu":index="resolvePath(item.path)"popper-append-to-body><template slot="title"><itemv-if="item.meta":icon="item.meta && item.meta.icon":title="item.meta.title"/></template><sidebar-itemv-for="child in item.children":key="child.path":is-nest="true":item="child":base-path="resolvePath(child.path)"class="nest-menu"/></el-submenu></div>
</template><script>
import path from "path";
import { isExternal } from "@/utils/validate";
import Item from "./Item";
import AppLink from "./Link";
import FixiOSBug from "./FixiOSBug";export default {name: "SidebarItem",components: { Item, AppLink },mixins: [FixiOSBug],props: {// route objectitem: {type: Object,required: true,},isNest: {type: Boolean,default: false,},basePath: {type: String,default: "",},},data() {this.onlyOneChild = null;// 新增是否显示气泡判定return {isShowTooltip: false,};},methods: {hasOneShowingChild(children = [], parent) {if (!children) {children = [];}const showingChildren = children.filter((item) => {if (item.hidden) {return false;} else {// Temp set(will be used if only has one showing child)this.onlyOneChild = item;return true;}});// When there is only one child router, the child router is displayed by defaultif (showingChildren.length === 1) {return true;}// Show parent if there are no child router to displayif (showingChildren.length === 0) {this.onlyOneChild = { ...parent, path: "", noShowingChildren: true };return true;}return false;},resolvePath(routePath, routeQuery) {if (isExternal(routePath)) {return routePath;}if (isExternal(this.basePath)) {return this.basePath;}if (routeQuery) {let query = JSON.parse(routeQuery);return { path: path.resolve(this.basePath, routePath), query: query };}return path.resolve(this.basePath, routePath);},// 新增当显示省略号是才显示气泡方法onMouseOver(e) {const target = e.target;const computedStyle = window.getComputedStyle(target);this.isShowTooltip =this.$el.querySelector("span")?.offsetWidth <=parseFloat(computedStyle?.width) -parseFloat(computedStyle?.paddingLeft) -parseFloat(computedStyle?.paddingRight);},},
};
</script>

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

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

相关文章

如何判断测试覆盖率是否达标?常见提高覆盖率方法总结

前言 大家好&#xff0c;我是chowley&#xff0c;今天来介绍一下测试覆盖率的内容。 在软件开发的过程中&#xff0c;测试覆盖率是衡量测试质量的重要指标之一。通过有效的测试覆盖&#xff0c;我们能够更全面地了解软件在不同条件下的运行情况&#xff0c;减少潜在的缺陷和问…

VC++中使用OpenCV绘制直线、矩形、圆和文字

VC中使用OpenCV绘制直线、矩形、圆和文字 在VC中使用OpenCV绘制直线、矩形、圆和文字非常简单&#xff0c;分别使用OpenCV中的line、rectangle、circle、putText这四个函数即可。具体可以参考OpenCV官方文档&#xff1a;https://docs.opencv.org/4.x/index.html 下面的代码展…

nodejs express中使用连接池或者MySQL链接数据库出现Cannot read property ‘query‘ of undefined报错

1.如果你已经排除了数据库的启动状态原因和本地服务是否启动的原因 2.不妨看看你是否没有排查其他的数据库&#xff0c;我就是一直在排查第一个主数据库&#xff0c;却忘了我还连接了第二个数据库&#xff0c;就是第二个数据库的原因&#xff0c;出现这个错误。 3.我们可以通…

【文本到上下文 #10】探索地平线:GPT 和 NLP 中大型语言模型的未来

一、说明 欢迎阅读我们【文本到上下文 #10】&#xff1a;此为最后一章。以我们之前对 BERT 和迁移学习的讨论为基础&#xff0c;将重点转移到更广阔的视角&#xff0c;包括语言模型的演变和未来&#xff0c;特别是生成式预训练转换器 &#xff08;GPT&#xff09; 及其在 NLP 中…

「 CISSP学习笔记 」08. 安全运营

该知识领域涉及如下考点&#xff0c;具体内容分布于如下各个子章节&#xff1a; 理解并遵守调查执行记录和监控活动执行配置管理 (CM)&#xff08;例如&#xff0c;预配、基线、自动化&#xff09;应用基本的安全操作概念应用资源保护执行事故管理执行和维护检测和预防措施实施…

我们使用的IPv4耗尽(We‘re running out of IPv4)

IPv4(Internet Protocol version 4)是互联网上使用最广泛的网络层协议之一,于1981年在 RFC 791 中发布,它定义了 32 位的IP地址结构和基本的协议操作。 由于 IPv4 使用 32 位的地址,因此只有四十亿(4,294,967,296,2^32)个地址。 这就导致随着地址不断被分配,IPv4 地…

邦芒忠告:初入职场的菜鸟小白谨记这3种聊天

在人际交往上应该注意分寸&#xff0c;也应该注意尺度&#xff0c;也应该注意不要麻烦别人&#xff0c;也不能够出现一些言语上的漏洞&#xff0c;也不能够说出一些不合时宜的话。 1、不要轻易表现出你特别讨厌的东西 比如某些明星&#xff0c;说不定他们十分喜欢&#xff0c;谈…

【力扣刷题练习】876. 链表的中间结点

题目描述&#xff1a; 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 题目解答&#xff1a; class Solution {public ListNode middleNode(ListNode head) {ListNode slow head, fast head…

用threejs模拟太阳系运动三维模型

最近在学习threejs&#xff0c;觉得非常有趣。于是决定用这个来模拟太阳系各行星的运行轨迹。 关于threejs的基础知识就不再赘述了&#xff0c;大家可以查看官网&#xff1a;threejs官方网站 本文的demo可以从下面下载&#xff1a;threejs模拟太阳系八大行星公转及自转三维模…

未来电话呼叫技术的社会影响与发展趋势----云微呼

未来电话呼叫技术将以更为智能化、便捷化和个性化为主要发展趋势&#xff0c;其所带来的社会影响也将是多层面的。以下将探讨未来电话呼叫技术可能的发展趋势以及对社会的影响&#xff1a; 智能化助力生活便捷&#xff1a; 未来电话呼叫技术将更加智能化&#xff0c;通过人工智…

聊聊PowerJob日志的上报及存储

序 本文主要研究一下PowerJob的日志上报及存储 OmsLoggerFactory.build tech/powerjob/worker/log/OmsLoggerFactory.java public class OmsLoggerFactory {public static OmsLogger build(Long instanceId, String logConfig, WorkerRuntime workerRuntime) {LogConfig cf…

uniapp 组件封装

1. uniapp 组件封装时间戳格式化为星期 1.1. components/m-week.vue <template><text>{{week}}</text> </template> <script>export default {props: {time: String},mounted(e) {this.week this.getWeek(Number(this.time))},data() {return …

FreeMark ${r‘原样输出‘} ${r“原样输出“}

FreeMark ${r’原样输出’} ${r"原样输出"} 在${}使用 小写字母r接两个单引号或两个双引号包裹的内容可以原样输出, 字母r只能用小写 ${r想要原样输出的内容} --用了单引号${r"想要原样输出的内容"} --用了双引号 例子: ${r"${r}"} 得到 ${r…

Unity引擎学习笔记之【动画、动画器操作】

动画Animate Animation是基于关键帧的动画系统&#xff0c;适用于简单的动画需求&#xff1b; 而Animator是一种状态机驱动的动画系统&#xff0c;适用于更复杂的动画逻辑和交互式动画。 通常&#xff0c;Animator组件更适合用于游戏中的角色动画控制&#xff0c; 而Animation…

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除

车载测试Vector工具——基于DoIP的ECU/车辆的连接故障排除 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和…

【考研408】计算机网络笔记

文章目录 计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题 计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题 物理层通信基础基本概念奈奎斯特定理与香农定…

PyCharm / DataSpell 导入WSL2 解析器,实现GPU加速

PyCharm / DataSpell 导入WSL2 解析器的实现 Windows的解析器不好么&#xff1f;设置WSL2和实现GPU加速为PyCharm / DataSpell 设置WSL解析器设置Interpreter Windows的解析器不好么&#xff1f; Windows上的解析器的确很方便&#xff0c;也省去了我们很多的麻烦。但是WSL2的解…

cesium-水平测距

cesium测量两点间的距离 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><el-breadcrumb-item&…

React16源码: React中处理hydrate的核心流程源码实现

hydrate 1 &#xff09;概述 hydrate 在react当中不算特别重要, 但是很多时候会用到的一个API这个 API 它主要作用就是在进入第一次渲染的时候&#xff0c;如果本身 dom 树上面已经有一个dom结构存在是否可以去利用这一部分已经存在的dom&#xff0c;然后去避免掉在第一次渲染…

千万级数据深分页查询SQL性能优化实践-京东零售技术团队

一、系统介绍和问题描述 如何在Mysql中实现上亿数据的遍历查询&#xff1f;先来介绍一下系统主角&#xff1a;关注系统&#xff0c;主要是维护京东用户和业务对象之前的关注关系&#xff1b;并对外提供各种关系查询&#xff0c;比如查询用户的关注商品或店铺列表&#xff0c;查…