在使用若依框架过程中,经常遇到菜单名称太长导致显示不全的问题。本文详细介绍两种有效的解决策略,包括如何增加菜单列宽和使用文本框动态显示标签名称。本文适合对前端布局优化感兴趣的开发者,无论是初学者还是经验丰富的大佬。掌握这些技巧后,你将能够优化菜单展示,提升用户体验。关键词:若依框架、菜单展示优化、前端开发、界面布局、CSS。
嗨,大家好!我是猫头虎博主,今天要和大家分享的是在使用若依框架时遇到的一个小挑战:菜单名称太长怎么办?这不仅是个美观问题,也关系到用户体验。接下来,让我们一起深入了解如何巧妙解决这个问题吧!🌟
在若依框架中,菜单名称过长是一个常见问题。本文将详细介绍两种解决方法:
推荐
)src--->assets--->styles--->variables.scss
$base-sidebar-width: 220px;
在这个文件中,我们可以调整菜单列的宽度。这是最直接的方法,但并不总是最有效的。因为如果菜单名称长度不一,单纯增加宽度可能无法完全解决问题。
通过动态显示标签,我们可以在不影响布局的前提下,展示完整的菜单名称。
修改路径: src—>layout—>Sidebar—>SidebarItem.vue
改为:
<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>
代码示例:
<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
.el-menu-item, .el-submenu__title {
overflow: hidden !important;
text-overflow: ellipsis !important;
white-space: nowrap !important;
font-size: 24px; // 修改左侧菜单字体大小,根据实际需求调整
}
IDE代码位置图:
在本节中,我们探讨了如何调整 Vue2 UI 演示项目中侧边栏菜单的字体大小。具体的修改步骤如下:
sidebar.scss
,其位于路径 vue2-ui-Demo\src\assets\styles\
下。
.el-menu-item
和 .el-submenu__title
类的样式进行了调整。主要修改是设置 font-size
为 24px
,这是菜单项的新字体大小。此外,还设置了 overflow
, text-overflow
, 和 white-space
属性以确保文本的正确显示。
通过以上步骤,可以有效地增大或缩小 Vue2 UI 项目中侧边栏菜单的字体大小,以达到更佳的用户界面体验。
目录: vue3-ruoyi-ui\src\layout\components\Sidebar\index.vue
<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>
知识点 | 说明 |
---|---|
增加列宽 | 直接修改variables.scss中的列宽值 |
动态显示标签名称 | 使用<el-tooltip>组件动态展示菜单名称 |
注意事项 | 避免修改后的值与若依默认值产生冲突 |
处理菜单名称过长的问题是提升用户体验的一个细节,但非常关键。希望本文介绍的两种方法能帮助你优化若依框架的菜单展示。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有