避免在 Element Plus el-sub-menu 组件中使用 <span> 标签添加图标的注意事项

本文介绍了Element Plus的el-sub-menu组件在添加图标时遇到的问题,分析了在<span>标签内添加图标可能导致折叠时图标消失的原因,并提供了解决方案和最佳实践,建议使用插槽或直接在菜单项标签内添加图标以确保显示正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.前言

Element Plus 是一个基于 Vue.js 的 UI 组件库,提供了一系列的组件用于构建 Web 应用程序。其中 el-sub-menu 组件是用于创建嵌套菜单的重要组件之一。然而,在使用 el-sub-menu 组件时,需要注意一些重要细节,特别是关于在 <span> 标签内添加图标可能导致折叠菜单时图标消失的问题。

2.简介

el-sub-menu 组件是 Element Plus 中用于创建子菜单的组件之一。它允许用户在应用程序中构建复杂的菜单结构,使用户能够更轻松地导航和访问各种功能和页面。

3.分析问题

在使用 el-sub-menu 组件时,一些开发者可能会尝试在 <span> 标签内添加图标来实现特定的样式或设计需求。然而,这种做法可能会导致在折叠菜单时,图标消失或无法正确显示。这是因为折叠菜单时,内部元素可能会受到 CSS 样式或布局的影响而不再可见。

4.解决问题

为避免在折叠菜单时图标消失的问题,开发者可以采取一些替代方案。首先,可以尝试将图标放置在菜单项的标签内,而不是 <span> 标签内。其次,可以利用 Element Plus 提供的图标属性或插槽,以更可靠的方式在菜单中添加图标。

5.示例代码

以下是一些示例代码,演示如何在 el-sub-menu 组件中添加图标而不受折叠菜单影响:

修复前:
<template>
  <el-menu>
    <el-sub-menu index="1">
    
<template> <div class="common-layout"> <el-container class="layout-container"> <!-- 头部 --> <el-header class="header"> <span class="title">AI教学管理系统</span> <div class="tools"> <a href=""> <el-icon><User /></el-icon> 修改密码 </a> <a href=""> <el-icon><SwitchButton /></el-icon> 退出登录 </a> </div> </el-header> <el-container class="main-container"> <!-- 侧边栏 --> <el-aside class="aside"> <!-- 使用 el-scrollbar 包裹菜单 --> <el-scrollbar class="menu-scrollbar"> <el-menu router default-active="1" class="side-menu" background-color="#2c3e50" text-color="#ecf0f1" active-text-color="#f39c12" > <!-- 首页 --> <el-menu-item index="/index"> <el-icon><Menu /></el-icon> <span>首页</span> </el-menu-item> <!-- 班级学员管理子菜单 --> <el-sub-menu index="2" class="menu-group"> <template #title> <el-icon><Document /></el-icon> <span>班级学员管理</span> </template> <el-menu-item index="/stu">学员管理</el-menu-item> <el-menu-item index="/clazz">班级管理</el-menu-item> </el-sub-menu> <!-- 部门员工管理子菜单 --> <el-sub-menu index="3" class="menu-group"> <template #title> <el-icon><Avatar /></el-icon> <span>部门管理</span> </template> <el-menu-item index="/emp">员工管理</el-menu-item> <el-menu-item index="/dept">部门管理</el-menu-item> </el-sub-menu> <!-- 新增的统计管理子菜单 --> <el-sub-menu index="4" class="menu-group"> <template #title> <el-icon><PieChart /></el-icon> <span>统计管理</span> </template> <el-menu-item index="4-1">学员统计</el-menu-item> <el-menu-item index="4-2">部门统计</el-menu-item> </el-sub-menu> </el-menu> </el-scrollbar> </el-aside> <!-- 主内容区 --> <el-main class="main-content"> <router-view></router-view> </el-main> </el-container> </el-container> </div> </template> <script setup lang="ts"></script> HomeIndex.vue代码如下 <!-- 图片展示 --> <img src="@/assets/【哲风壁纸】rap-动感篮球元素.png" alt="" /> </template> <style scoped></style> 帮我调整一下首页图片样式,美化一下首页
07-18
这段代码中,页面顶部正中间的位置,加一个隐藏的悬浮按钮,鼠标移动上去的时候显示,按钮的效果是,点击后,隐藏导航栏和标题栏,再次点击则显示,, 导航栏和标题栏显示的隐藏时,不要瞬间完成,有个动画效果,以下为代码<template> <div class="app-container"> <!-- 导航标题 --> <div class="nav-header"> <h3>iiot</h3> </div> <!-- 主布局 --> <div class="main-layout"> <!-- 左侧导航栏 --> <div class="left-nav"> <el-menu class="custom-menu" :collapse="false" background-color="#1a2b4a" text-color="#d7e3ff" active-text-color="#409EFF" :unique-opened="true" router > <el-sub-menu index="1"> <template #title> <el-icon><Document /></el-icon> <span>任务管理</span> </template> <el-menu-item-group> <el-menu-item index="/taskList">调度任务</el-menu-item> <el-menu-item index="/taskType">任务编辑</el-menu-item> <el-menu-item index="/commandSet">指令编辑</el-menu-item> <el-menu-item index="/log-types">任务日志</el-menu-item> </el-menu-item-group> </el-sub-menu> <el-sub-menu index="2"> <template #title> <el-icon><Files /></el-icon> <span>大屏展示</span> </template> <el-menu-item-group> <el-menu-item index="/display_all">总览</el-menu-item> <el-menu-item index="/warehouse_status">仓库状态</el-menu-item> </el-menu-item-group> </el-sub-menu> <el-sub-menu index="3"> <template #title> <el-icon><Notebook /></el-icon> <span>库位管理</span> </template> <el-menu-item-group> <el-menu-item index="/warehouse">库位管理</el-menu-item> <el-menu-item index="/station">站点管理</el-menu-item> </el-menu-item-group> </el-sub-menu> <el-sub-menu index="4"> <template #title> <el-icon><Setting /></el-icon> <span>配置模块</span> </template> <el-menu-item-group> <el-menu-item index="4-1">设备管理</el-menu-item> <el-menu-item index="4-2">变量管理</el-menu-item> <el-menu-item index="4-5">路径管理</el-menu-item> <el-menu-item index="4-6">管控区域</el-menu-item> </el-menu-item-group> </el-sub-menu> </el-menu> </div> <!-- 右侧内容区 --> <div class="right-content"> <router-view> </router-view> </div> </div> </div> </template> <script lang="ts" setup> import { Document, Notebook, Files, Setting } from "@element-plus/icons-vue"; </script> <style> /* 全局样式重置 */ body, html { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; } /* 确保所有元素使用border-box */ *, *::before, *::after { box-sizing: border-box; } </style> <style scoped> .app-container { width: 100vw; height: 100vh; margin: 0; padding: 0; display: flex; flex-direction: column; background-color: #ffffff; overflow: hidden; } .nav-header { padding: 12px 15px; display: flex; align-items: center; background-color: #152238; border-bottom: 0px solid #000000; flex-shrink: 0; } .left-nav { height: 100%; display: flex; flex-direction: column; width: 200px; /* 固定宽度 */ } .nav-header h3 { margin: 0; font-size: 22px; color: #d7e3ff; font-weight: 600; margin-left: 10px; } .main-layout { display: flex; flex: 1; overflow: hidden; min-width: 0; } .right-content { flex: 1; height: 100%; background-color: #f0f2f5; overflow: auto; padding: 0px; } .custom-menu { border-right: none; flex: 1; width: 100%; /* 占满容器 */ } /* 调整菜单项样式 */ .custom-menu .el-menu-item, .custom-menu .el-sub-menu__title { height: 50px; line-height: 50px; } /* 调整图标和文字的间距 */ .custom-menu .el-icon { margin-right: 8px; } </style>
最新发布
08-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星际编程喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值