大數據畢業設計之前端03:logo、menu的折疊展開實現

關鍵字: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)。

所以我們就需要維護一個類似全局變量的東西:一個地方修改了一個變量,其他使用這個變量也會立即更新,VueXPinia就是干這個的。在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>組件,畢竟后面的很多地方都用到了圖標。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215401.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215401.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215401.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

數據結構與算法-Rust 版讀書筆記-2線性數據結構-棧

數據結構與算法-Rust 版讀書筆記-2線性數據結構-棧 一、線性數據結構概念 數組、棧、隊列、雙端隊列、鏈表這類數據結構都是保存數據的容器&#xff0c;數據項之間的順序由添加或刪除時的順序決定&#xff0c;數據項一旦被添加&#xff0c;其相對于前后元素就會一直保持位置不…

電腦入門基礎知識

1.電腦鍵盤個數一般都是有多少個&#xff1f; 答&#xff1a;一般情況下&#xff0c;電腦鍵盤只有一個。但是&#xff0c;也有一些特殊的情況&#xff0c;例如游戲玩家可能會使用額外的游戲鍵盤&#xff0c;或者一些專業人士可能會使用多個鍵盤來提高工作效率。但是在大多數情…

[Spring~源碼] ControllerAdvice揭秘

在Spring MVC中&#xff0c;我們經常使用ControllerAdvice注解&#xff0c;可以實現全局統一異常處理、全局數據綁定等功能。但是&#xff0c;它的實現原理是什么呢&#xff1f;在本文中&#xff0c;我們將深入探究ControllerAdvice的實現原理。 文章目錄 什么是ControllerAdvi…

docker-compose.yml文件配置詳解

簡介 Compose 是用于定義和運行多容器 Docker 應用程序的工具。通過 Compose&#xff0c;您可以使用 YML 文件來配置應用程序需要的所有服務。然后&#xff0c;使用一個命令&#xff0c;就可以從 YML 文件配置中創建并啟動所有服務。 docker compose文件是一個yaml格式的文件&a…

【Hadoop_04】HDFS的API操作與讀寫流程

1、HDFS的API操作1.1 客戶端環境準備1.2 API創建文件夾1.3 API上傳1.4 API參數的優先級1.5 API文件夾下載1.6 API文件刪除1.7 API文件更名和移動1.8 API文件詳情和查看1.9 API文件和文件夾判斷 2、HDFS的讀寫流程&#xff08;面試重點&#xff09;2.1 HDFS寫數據流程2.2 網絡拓…

學會面向對象經典練習題21道

1.面向對象練習&#xff1a;設計小狗類 需求&#xff1a; 抽象形成一個小狗類Dog 屬性&#xff1a;名字name 年齡age 品種kind 主人host 價格price 功能&#xff1a; 跑run&#xff1a;無參&#xff0c;打印&#xff1a;小狗Dog跑的老快了~ 吃eat&#xff1a;參數int n&#x…

當MongoDB主鍵為String時,mongoTemplate無法根據id查詢的問題

MongoDB推薦使用ObjectId作為主鍵&#xff0c;但國內的開發都知道&#xff0c;事情往往不如人所愿&#xff0c;當我們真的出現了“_id”主鍵的類型為String時&#xff0c;且還必須想用mongoTemplate.findOne或findList時&#xff0c;直接使用該方法會導致查詢結果為空。 因為m…

https 協議

目錄 加密方式 對稱加密 非對稱加密 非對稱加密 非對稱加密 非對稱加密 對稱加密 AC證書 AC證書內容 數據摘要 數據簽名 在我們前面學習的http協議里面&#xff0c;我們發送的內容都是明文傳輸的&#xff0c;所以在安全上并不安全&#xff0c;但是在現在信息發達的時…

Java高級技術:優化性能與擴展性的最佳實踐

標題&#xff1a;Java高級技術&#xff1a;優化性能與擴展性的最佳實踐 摘要&#xff1a;本文將介紹Java中一些高級技術&#xff0c;以提高性能和代碼的擴展性。本文不包括反射和并發編程&#xff0c;旨在幫助開發者進一步提升Java應用程序的質量和可維護性。 優化性能的最佳實…

面試題目總結(三)

1. Spring、Springboot、springMVC、Spring Cloud 的區別&#xff1a; Spring&#xff1a;Spring 是一個開源的、輕量級的Java框架&#xff0c;提供了豐富的功能和組件&#xff0c;用于構建企業級應用程序。Spring框架包含了很多模塊&#xff0c;包括核心容器、數據訪問、事物…

MATLAB算法實戰應用案例精講-【數模應用】漫談機器學習(七)

目錄 幾個高頻面試題目 機器學習算法工程師需要掌握哪些編程語言? 1.Python 2. C# 3.JavaScript 4. R 5.Java

Linux之Apache服務器安裝及配置

一、Apache服務器簡介 Apache HTTP Server&#xff08;簡稱Apache&#xff09;是Apache軟件基金會的一個開放源碼的網頁服務器&#xff0c;可以在大多數計算機操作系統中運行&#xff0c;由于其多平臺和安全性被廣泛使用。Apache曾經是世界使用排名第一的Web服務器軟件&#xf…

VSCODE連接遠程服務器

安裝ssh插件 根據你的操作系統選擇對應的版本進行下載和安裝。 安裝完成之后&#xff0c;啟動vscode&#xff0c;選擇左側Extensions 選項卡&#xff0c;在輸入框搜索 remote &#xff0c;選擇安裝Remote-SSH插件。 安裝完成之后會在左側新增一個選項卡Remote Explorer&#xf…

肥貓游戲報價器|計價器|王者榮耀代練陪練等游戲報價器軟件介紹說明

目錄 1. 前言2. 軟件著作權3. 軟件使用說明3.1 進入軟件3.2 用戶登錄3.3 首頁3.4 報價器3.4.1 總體介紹3.4.2 王者報價器3.4.3 LOL手游報價器3.4.4 英雄聯盟報價器3.4.5 云頂之弈報價器3.4.7 王者水晶報價器3.4.8 和平精英報價器3.4.9 蛋仔派對報價器3.4.10 穿越火線報價器3.4.…

kafka學習筆記--broker工作流程、重要參數

本文內容來自尚硅谷B站公開教學視頻&#xff0c;僅做個人總結、學習、復習使用&#xff0c;任何對此文章的引用&#xff0c;應當說明源出處為尚硅谷&#xff0c;不得用于商業用途。 如有侵權、聯系速刪 視頻教程鏈接&#xff1a;【尚硅谷】Kafka3.x教程&#xff08;從入門到調優…

Linux mc命令教程:如何有效地使用mc命令(附案例詳解和注意事項)

Linux mc命令介紹 mc命令是Linux中的一個視覺文件管理器&#xff0c;全稱為Midnight Commander。它提供了一個用戶友好的界面&#xff0c;使得在Linux環境中的文件和目錄管理變得更加直觀和方便。mc命令支持鼠標操作和顏色顯示&#xff0c;同時也提供了一套菜單接口&#xff0…

TypeScript 常用高級類型

目錄 前言&#xff1a; TypeScript 常用高級類型 基本概念 高級類型 1. 交叉類型&#xff08;Intersection Types&#xff09; 2. 聯合類型&#xff08;Union Types&#xff09; 3. 映射類型&#xff08;Mapped Types&#xff09; 4. 條件類型&#xff08;Conditional…

GGML 或GGUF的14種不同量化模式說明

查看 TheBloke/Llama-2–13B-chat-GGML 存儲庫中的文件&#xff0c;我們可以看到 14 種不同的 GGML 模型&#xff0c;對應于不同類型的量化。它們遵循特定的命名約定&#xff1a;“q” 用于存儲權重的位數&#xff08;精度&#xff09; 特定變體。以下是所有可能的量化方法及其…

Pytorch-Transformer軸承故障一維信號分類(三)

目錄 前言 1 數據集制作與加載 1.1 導入數據 第一步&#xff0c;導入十分類數據 第二步&#xff0c;讀取MAT文件驅動端數據 第三步&#xff0c;制作數據集 第四步&#xff0c;制作訓練集和標簽 1.2 數據加載&#xff0c;訓練數據、測試數據分組&#xff0c;數據分batch…

據房間Id是否存在,判斷當前房間是否到期且實時更改顏色

重點代碼展示&#xff1a; <template><el-col style"width: 100%;height: 100%;"><el-col :span"20"><el-card class"room_info"><avue-data-icons :option"option"></avue-data-icons></el-…