前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何优雅解决若依二级菜单名字过长问题:若依(RuoYi)菜单字体大小,菜单长度修改攻略

如何优雅解决若依二级菜单名字过长问题:若依(RuoYi)菜单字体大小,菜单长度修改攻略

作者头像
猫头虎
发布2024-04-08 16:08:23
1960
发布2024-04-08 16:08:23
举报

如何优雅解决若依二级菜单名字过长问题:菜单长度展示优化攻略 🐾

摘要

在使用若依框架过程中,经常遇到菜单名称太长导致显示不全的问题。本文详细介绍两种有效的解决策略,包括如何增加菜单列宽和使用文本框动态显示标签名称。本文适合对前端布局优化感兴趣的开发者,无论是初学者还是经验丰富的大佬。掌握这些技巧后,你将能够优化菜单展示,提升用户体验。关键词:若依框架、菜单展示优化、前端开发、界面布局、CSS。

引言

嗨,大家好!我是猫头虎博主,今天要和大家分享的是在使用若依框架时遇到的一个小挑战:菜单名称太长怎么办?这不仅是个美观问题,也关系到用户体验。接下来,让我们一起深入了解如何巧妙解决这个问题吧!🌟

正文

🐾 方案概览

在若依框架中,菜单名称过长是一个常见问题。本文将详细介绍两种解决方法:

  1. 增加列宽
  2. 动态显示标签名称
  3. 增大或者减小全局字号

🐾 一、增加列宽(推荐

修改路径

src--->assets--->styles--->variables.scss

代码语言:javascript
复制
$base-sidebar-width: 220px;

在这个文件中,我们可以调整菜单列的宽度。这是最直接的方法,但并不总是最有效的。因为如果菜单名称长度不一,单纯增加宽度可能无法完全解决问题。

🐾 二、动态显示标签名称

实现效果

通过动态显示标签,我们可以在不影响布局的前提下,展示完整的菜单名称。

实现代码

修改路径: src—>layout—>Sidebar—>SidebarItem.vue

改为:

代码语言:javascript
复制
   <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
        <el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{ 'submenu-title-noDropdown': !isNest }">
          <!-- <item :icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)" :title="onlyOneChild.meta.title" /> -->
          <el-tooltip class="item" effect="dark" :content="onlyOneChild.meta.title" placement="right-start">

            <span v-if="onlyOneChild.meta">

              <item :icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)" :title="onlyOneChild.meta.title" />

            </span>

          </el-tooltip>

        </el-menu-item>
      </app-link>

代码示例:

代码语言:javascript
复制
<el-tooltip class="item" effect="dark" :content="onlyOneChild.meta.title" placement="right-start">
  <span v-if="onlyOneChild.meta">
    <item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)":title="onlyOneChild.meta.title" />
  </span>
</el-tooltip>

在这种方法中,我们使用了<el-tooltip>组件来动态显示菜单名称。当鼠标悬停在菜单项上时,会显示完整的菜单名称。

注意事项

在修改过程中,需要注意若依默认的鼠标展示值可能与我们设置的值发生重复。为此,需要适当调整以避免冲突。

路径:-> src–>layout–>Sidebar—>item.vue

🐾 小结

以上两种方法各有利弊。增加列宽简单直接,但不够灵活;而动态显示标签名称虽然复杂一些,但更加用户友好。根据具体的需求和场景选择合适的方法。

三、🐾 增大/缩小菜单字体

修改路径

src--->assets--->styles--->sidebar.scss vue2-ui-Demo\src\assets\styles\sidebar.scss

代码语言:javascript
复制
    .el-menu-item, .el-submenu__title {
      overflow: hidden !important;
      text-overflow: ellipsis !important;
      white-space: nowrap !important;
      font-size: 24px; // 修改左侧菜单字体大小,根据实际需求调整
    }

IDE代码位置图:

小结

在本节中,我们探讨了如何调整 Vue2 UI 演示项目中侧边栏菜单的字体大小。具体的修改步骤如下:

  1. 文件路径:首先,需要定位到文件 sidebar.scss,其位于路径 vue2-ui-Demo\src\assets\styles\ 下。
  2. 代码修改:在该文件中,对 .el-menu-item.el-submenu__title 类的样式进行了调整。主要修改是设置 font-size24px,这是菜单项的新字体大小。此外,还设置了 overflow, text-overflow, 和 white-space 属性以确保文本的正确显示。
  3. 自定义:这个字体大小是可根据项目的实际需求进行调整的,因此开发者可以根据具体情况自行修改这个值。

通过以上步骤,可以有效地增大或缩小 Vue2 UI 项目中侧边栏菜单的字体大小,以达到更佳的用户界面体验。

四、🐾 若依菜单拖拽实现方案(仅供参考,还没有完全实现)

目录: vue3-ruoyi-ui\src\layout\components\Sidebar\index.vue

代码语言:javascript
复制
<template>
  <div class="container">
    <div :class="{ 'has-logo': showLogo }"
      :style="{ width: menuWidth, backgroundColor: sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground }">
      <logo v-if="showLogo" :collapse="isCollapse" />
      <el-scrollbar :class="sideTheme" wrap-class="scrollbar-wrapper">
        <el-menu :default-active="activeMenu" :collapse="isCollapse"
          :background-color="sideTheme === 'theme-dark' ? variables.menuBackground : variables.menuLightBackground"
          :text-color="sideTheme === 'theme-dark' ? variables.menuColor : variables.menuLightColor" :unique-opened="true"
          :active-text-color="theme" :collapse-transition="false" mode="vertical">
          <sidebar-item v-for="(route, index) in sidebarRouters" :key="route.path + index" :item="route"
            :base-path="route.path" />
        </el-menu>
      </el-scrollbar>


    </div>
    <div class="drag-bar" @mousedown="startResize"></div>

  </div>
</template>

<script setup>
import Logo from './Logo'
import SidebarItem from './SidebarItem'
import variables from '@/assets/styles/variables.module.scss'
import useAppStore from '@/store/modules/app'
import useSettingsStore from '@/store/modules/settings'
import usePermissionStore from '@/store/modules/permission'

const route = useRoute();
const appStore = useAppStore()
const settingsStore = useSettingsStore()
const permissionStore = usePermissionStore()

const sidebarRouters = computed(() => permissionStore.sidebarRouters);
const showLogo = computed(() => settingsStore.sidebarLogo);
const sideTheme = computed(() => settingsStore.sideTheme);
const theme = computed(() => settingsStore.theme);
const isCollapse = computed(() => !appStore.sidebar.opened);

const activeMenu = computed(() => {
  const { meta, path } = route;
  // if set path, the sidebar will highlight the path you set
  if (meta.activeMenu) {
    return meta.activeMenu;
  }
  return path;
})



// 增加拖拽相关的响应式数据
const resizing = ref(false);
const menuWidth = ref('200px'); // 初始菜单宽度

// 开始调整大小
// 开始调整大小
function startResize(event) {
  resizing.value = true;
  console.log("开始调整大小"); // 用于调试
  resizing.value = true; // 设置正在调整大小的标志
  event.preventDefault(); // 防止默认事件干扰
  const startX = event.clientX;
  const startWidth = parseInt(menuWidth.value, 10);
  

  function handleMouseMove(e) {
    e.preventDefault();
    console.log("正在调整大小"); // 用于调试
    if (!resizing.value) return; // 确保在拖拽状态时才调整大小
    const currentWidth = startWidth + e.clientX - startX;
    menuWidth.value = `${currentWidth}px`;
  }

  function handleMouseUp() {
    resizing.value = false;
    console.log("调整大小结束"); // 用于调试
    // 移除监听器
    window.removeEventListener('mousemove', handleMouseMove);
    window.removeEventListener('mouseup', handleMouseUp);
  }

  window.addEventListener('mousemove', handleMouseMove);
  window.addEventListener('mouseup', handleMouseUp);
}


// 监听 mousemove 和 mouseup 事件

</script>
<style scoped>
.drag-bar {
  width: 15px;
  /* 可以适当增加宽度,确保容易拖拽 */
  height: 100%;
  /* 确保高度足够 */
  cursor: ew-resize;
  position: absolute;
  /* 可能需要绝对定位来正确放置 */
  right: 0;
  /* 根据实际布局调整 */
  top: 0;
  /* 根据实际布局调整 */
}

.container {
  display: flex;
  position: relative;
  /* 为了绝对定位拖拽条 */
}
</style>

参考资料

  1. 若依官方文档
  2. Vue.js文档
  3. Element UI组件库

核心知识点表格

知识点

说明

增加列宽

直接修改variables.scss中的列宽值

动态显示标签名称

使用<el-tooltip>组件动态展示菜单名称

注意事项

避免修改后的值与若依默认值产生冲突

总结

处理菜单名称过长的问题是提升用户体验的一个细节,但非常关键。希望本文介绍的两种方法能帮助你优化若依框架的菜单展示。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 如何优雅解决若依二级菜单名字过长问题:菜单长度展示优化攻略 🐾
  • 摘要
  • 引言
  • 正文
    • 🐾 方案概览
      • 🐾 一、增加列宽(推荐)
        • 🐾 二、动态显示标签名称
          • 🐾 小结
        • 三、🐾 增大/缩小菜单字体
          • 小结
        • 四、🐾 若依菜单拖拽实现方案(仅供参考,还没有完全实现)
          • 参考资料
            • 核心知识点表格
            • 总结
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档