大数据毕业设计之前端03:logo、menu的折叠展开实现

2023-12-16

关键字:BuildAdmin、pinia、logo、aside、menu、菜单折叠、Vue、ElementUI

前言

上一篇文章中,借助aside的实现讲了一些开发的小技巧,以及css的解读。本篇文章主要写一下如何填充aside的内容。

aside主要是由两个部分组成的:logo和菜单。这里明确一下需求:

  1. 实现logo和菜单
  2. 在点击图标时,菜单和logo会进行折叠
  3. 封装图标组件

logo

logo就是一个div,这个div主要由img、项目名称和图标构成。其中<Icon>就是需求3中封装的图标组件,后面会讲。

logo.png是实现选好的logo图片,siteName是项目名称。

菜单

菜单的实现ElementUI的menu组件,直接照抄官网的样例代码,然后修改菜单名即可。但是,后面要实现动态路由,菜单的名称根据从后台请求的数据进行渲染,所以这里需要写一写逻辑,后面的 动态路由 主要讲的就是这一块的实现。

菜单折叠功能

菜单的折叠功能如下图所演示:

在点击logo旁的折叠按钮时,可以观察到4种变化:

  1. aside变窄,不再是260px
  2. 折叠按钮图标变化
  3. logo折叠(消失)
  4. 菜单栏折叠,只剩图标

当点击折叠按钮时,logo和menu都需要知道:“我要折叠/展开了”。我们知道logo和menu是两个独立的组件,而vue中的 ref 响应式变量只能在单组件内使用(不明白的可以看看vue的ref和reactive)。

所以我们就需要维护一个类似全局变量的东西: 一个地方修改了一个变量,其他使用这个变量也会立即更新 , VueX Pinia 就是干这个的。在BuildAdmin中,使用的是Pinia。 stores 目录下存放的就是各种各样的全局变量。

其中, config.ts 就是pinia维护的menu共享状态变量。

1. 菜单状态变量

pinia定义的变量如下:

当点击折叠按钮时,通过修改 menuCollapse 就可以通知到logo和menu组件是否折叠。同时我们也看到了 menuWidth 变量,即菜单栏的宽度为260,那么当折叠之后宽度变为多少呢?

在pinia中定义了 menuWidth() 来计算宽度: 当menuCollapse为true,即菜单折叠时,宽度是64;为false不折叠时,宽度为menuWidth,即260

可以看到,aside的width绑定了menuWidth作为计算属性,当menuCollapse发生变化时,menuWidth()就会被调用计算出新的宽度。

接下来,我们看看logo和menu是如何引用状态变量实现折叠/展开的?

2. logo折叠

使用vue的 v-if 来控制logo的展示,当menuCollapse为true,则取反为false,即不展示img和div。

再看Icon,绑定了一个名为 onMenuCollapse 的点击事件,用来修改menuCollapse,从而实现菜单栏的折叠与展开。并且当折叠时,Icon使用 fa-indent 图标,展开时使用 fa-dedent 图标,这样就实现了折叠与站看图片的切换。

3. menu折叠实现

menu使用ElementUI自身menu组件的 collapse 属性来控制折叠和展开。

同样,可以看到collapse属性的值,引用的是pinia定义的menuCollapse变量。

4.构思分析

最后发现,只是通过一个 menuCollapse 变量,就实现了aside中logo和menu的折叠与展开。提出需求的同时,也可以构思实现思路:

  1. 让logo部分消失:用v-if或者v-show
  2. 让menu组件折叠:ElementUI提供了collapse属性
  3. logo和menu同步折叠和展开:用pinia定义全局状态变量

结语

本篇文章主要写的是logo和menu的实现。其中menu后面菜单的渲染、动态路由是BuildAdmin的一个重点,后面会用很大的篇幅去写。下一篇先写<Icon>组件,毕竟后面的很多地方都用到了图标。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大数据毕业设计之前端03:logo、menu的折叠展开实现 的相关文章

随机推荐

  • CleanMyMac X2024免费许可证(激活教程)

    CleanMyMac X是一款流行的系统优化工具 专为Mac用户设计 它可以帮助用户清理Mac系统中的垃圾文件 卸载不需要的程序 加速Mac性能以及保护Mac系统的安全 一 简介 CleanMyMac X是一款功能强大的系统优化工具 它可以
  • 中断管理学习

    中断管理 什么是中断 简单的解释就是系统正在处理某一个正常事件 忽然被另一个需要马上处理的紧急事件打断 系统转而处理这个紧急事件 待处理完毕 再恢复运行刚才被打断的事件 生活中 我们经常会遇到这样的场景 当你正在专心看书的时候 忽然来了一个
  • MacBook电脑内存容量小根本不够用?如何一键解决?

    得益于M1系列芯片的强势表现 很多朋友都换用了MacBook 首次接触到了macOS系统 但出乎意料的是 很多人就开始受罪了 明明这么出色的硬件 为何到处都不顺手呢 尤其是容量 MacBook相比同价位的Windows笔记本 硬盘本来就偏小
  • FL Studio21最新FL水果编曲软件中文版在哪下载?

    FL Studio21水果编曲软件是一款专业的音乐制作软件 被广泛地应用于电子音乐 hip hop 流行乐等多种音乐类型的制作 该软件提供了丰富的音频编曲工具和音乐效果器 让用户可以轻松地创作出高品质的音乐作品 同时 这也是一款非常易于上手
  • CleanMyMac X2024(Mac优化清理工具)v4.14.5中文版

    CleanMyMac X是一款颇受欢迎的专业清理软件 拥有十多项强大的功能 可以进行系统清理 清空废纸篓 清除大旧型文件 程序卸载 除恶意软件 系统维护等等 并且这款清理软件操作简易 非常好上手 特别适用于那些刚入手苹果系统的宝宝们 只需两
  • flstudio21.3.2304高级版水果编曲音乐软件

    flstudio高级版是一款适用于广泛领域的音频编辑软件 它支持多通道混音器和VST插件 包括数百种乐器和效果插件 它还为您提供了一个乐谱编辑器 需要对不同乐器的节奏进行必要的编辑 Flstudio具有许多内置电子合成声音 可提供更广泛的电
  • fl studio2024水果21.3免费汉化版

    fl studio2024全称Fruity Loops Studio2024 这款软件也被人们亲切的称之为水果 它是一款功能强大的音乐创作编辑软件 拥有全功能的录音室 大混音盘以及先进的音乐制作工具 用户通过使用该软件 就可以轻松制作出自己
  • 【408】计算机学科专业基础 - 计算机组成原理

    一 计算机系统概述 复习提示 本章是组成原理的概述 考查时易针对有关概念或性能指标出选择题 也可能综合后续章节的内容出有关性能分析的综合题 掌握本章的基本概念 是学好后续章节的基础 部分知识点在初学时理解不深刻也无须担忧 相信随着后续章节的
  • 汽车EDI:Chrysler EDI项目案例

    菲亚特克莱斯勒汽车Fiat Chrysler Automobiles FCA 是一家全球性汽车制造商 主营产品包括轿车 SUV 皮卡车 商用车和豪华车等多种车型 其旗下品牌包括菲亚特 克莱斯勒 道奇 Jeep Ram 阿尔法 罗密欧和玛莎拉
  • 物流EDI:COSCO的EDI对接

    当产品的原产地和最终目的地之间以及生产商和分销商之间实现了即时 安全和高效通信 意味着业务已经取得成功 无论是在物理层面的货物运输 还是在数据层面的信息交互 物流在供应链中都是至关重要的一环 物流发展进程的加快能够促进供应链各个环节实现完美
  • 解决 vue3 使用mitt(发布订阅库)时,多次触发事件订阅问题

    问题起源 在日常vue项目开发中 有时会用到mitt 前身事件总线mittBus 进行事件传递 然而使用经常就是mitt emit mitt on 就结束了 未考虑到取消订阅事件 订阅事件会创建回调函数 并将其添加到事件总线中 如果在实例卸
  • MyBatis——Java 持久层框架

    文章目录 MyBatis 是什么 准备工作 创建一个数据库和表 引入依赖 配置连接字符串和 MyBatis MyBatis 组成 MyBatis 使用步骤 定义一个类
  • VSCode中如何查看EDI报文?

    VSCode是开发人员常用的一款软件 为了降低EDI报文的阅读门槛 知行的开发人员设计了EDI插件 可以在VSCode中下载使用 如何打开一个EDI报文 VSCode EDI插件介绍 EDI插件下载流程 进入VSCode 打开Extensi
  • 【腾讯云AI绘画】与AI绘画和解,和AI绘画共成长

    前言 六月份的时候 买了腾讯AI绘画的资源包 可当通过API去使用AI绘画后 我顿时就被整破防了 于是写了一篇文章 算是无声控诉 被腾讯云AI绘画整破防了 再回首 腾讯绘画不仅提供了API调用 还构建了 智能图像创作平台 用于提供AI绘画在
  • Spring MVC

    文章目录 Spring MVC 是什么 什么是 MVC 如何学习 Spring MVC Spring MVC 创建和连接 获取参数 传统方式 简便的方式 获取一个自定义类的对象 从 json 字符
  • 快速入手 vue3 defindeModel 双向绑定数据,赶快了解下

    彩蛋 在vue3 3x 版本中 官方 RFC 放出了 一个新特性 defineModel 它将让我们在自定义组件上双向绑定数据更加快捷 举个 以前我们父子组件双向数据绑定要在子组件里声明对应的props emts computed 子组件
  • 前端非常好用的免费网页工具推荐(值得收藏)

    1 iloveimg 可在线进行图片编辑 压缩 转换等功能 操作方便 完全免费 2 草料二维码 可在线进行文本 网站 文件 图片 微信等二维码生成 3 比特虫 在线制作网站 ico 图标 4 facicongrabber 免费网页 favi
  • Daimler EDI 项目案例

    戴姆勒Daimler包括梅赛德斯 奔驰汽车 梅赛德斯 奔驰轻型商用车 戴姆勒载重车和戴姆勒金融服务等四大业务单元 戴姆勒Daimler早在1983年就开始使用EDI电子数据交换了 EDI那时还是数据交互一个新兴技术 如今早已成为商业往来中一
  • 如何通过EDI向Daimler发送发票?

    此前的文章 Daimler EDI 项目案例 中 我们已经成功对接Daimler 接下来我将为大家介绍如何将发票由Daimler的发票系统切换至EDI EDI需求背景 在Daimler的前期需求中 只涉及到了VDA4905交付预测以及VDA
  • 大数据毕业设计之前端03:logo、menu的折叠展开实现

    关键字 BuildAdmin pinia logo aside menu 菜单折叠 Vue ElementUI 前言 上一篇文章中 借助aside的实现讲了一些开发的小技巧 以及css的解读 本篇文章主要写一下如何填充aside的内容 as