后臺管理系統-3-vue3之左側菜單欄和頭部導航欄的靜態搭建

文章目錄

  • 1 CommonAside組件(靜態搭建)
    • 1.1 Menu菜單
    • 1.2 準備菜單數據
    • 1.3 循環渲染菜單
      • 1.3.1 el-menu結構
      • 1.3.2 動態渲染圖標
    • 1.4 樣式設計
    • 1.5 整體代碼(CommonAside.vue)
  • 2 CommonHeader組件(靜態搭建)
    • 2.1 準備圖片URL數據
    • 2.2 頁面布局
    • 2.3 樣式設計
    • 2.4 整體代碼(CommonHeader.vue)
  • 3 附錄
    • 3.1 列表filter
    • 3.2 參考附錄

左側菜單欄:el-menu構建菜單,通過component渲染圖標。頭部導航欄:左側是一個圖標,中間是面包屑,右側是dropdown。

請添加圖片描述

1 CommonAside組件(靜態搭建)

1.1 Menu菜單

從element-ui中將Menu菜單的代碼拷貝過來,如下所示:
在這里插入圖片描述

1.2 準備菜單數據

對其進行循環操作,提前準備一份數據,如下所示:
(1)path: 路由路徑(URL地址)。
(2)name: 路由名稱,用于編程式導航或RouterLink。
(3)label: 菜單上顯示的名稱。
(4)icon: 顯示的圖標(可能使用如 Element Plus, Font Awesome 等圖標庫)。
(5)url: 可能指向對應的組件文件名或組件名稱。
在這里插入圖片描述
使用了Vue 3的computed(計算屬性)來對一個菜單或樹形結構的列表list進行分類,分別篩選出:
(1)沒有子項的項(葉子節點)。
(2)有子項的項(非葉子節點,通常用于展開的菜單組)。

1.3 循環渲染菜單

圖標+標簽
在這里插入圖片描述

1.3.1 el-menu結構

<el-menu-item>菜單項</el-menu-item>
<el-sub-menu index="group"><template #title>主標題</template><el-menu-item-group title="分組標題"><el-menu-item index="1">選項1</el-menu-item><el-menu-item index="2">選項2</el-menu-item></el-menu-item-group>
</el-sub-menu>

el-menu-item-group通常嵌套在el-sub-menu或直接放在el-menu內。
在這里插入圖片描述

1.3.2 動態渲染圖標

需要確保:圖標組件已注冊(全局或局部)。

<component :is="item.icon" class="icons" />

(1)component:是Vue內置的“元組件”,用于動態渲染不同的組件。
(2):is=“item.icon”:綁定is屬性,告訴Vue要渲染哪一個組件。
item.icon應該是一個組件的名稱或組件本身的引用。
(3)class=“icons”:無論渲染哪個組件,都會加上icons這個CSS類。

1.4 樣式設計

在這里插入圖片描述

1.5 整體代碼(CommonAside.vue)

<template><el-aside width="180px"><el-menu background-color="#545c64"><h3>通用后臺管理系統</h3><el-menu-item v-for="item in noChildren" :index="item.path" :key="item.path"><component class="icons" :is="item.icon"></component><span>{{ item.label }}</span></el-menu-item><el-sub-menu v-for="item in hasChildren" :index="item.path" :key="item.path"><template #title><component class="icons" :is="item.icon"></component><span>{{ item.label }}</span></template><el-menu-item-group><el-menu-item v-for="(subItem,subIndex) in item.children" :index="subItem.path" :key="subItem.path"><component class="icons" :is="subItem.icon"></component><span>{{ subItem.label }}</span></el-menu-item></el-menu-item-group></el-sub-menu></el-menu></el-aside>
</template >
<script setup>import {ref,computed} from 'vue'import { useRouter } from 'vue-router';const router = useRouter()const list = ref([{path:"/home",name:"home",label:"首頁",icon:"house",url:"Home"},{path:"/mail",name:"mail",label:"商品管理",icon:"video-play",url:"Mail"},{path:"/user",name:"user",label:"用戶管理",icon:"user",url:"User"},{path:"other",label:"其他",icon:"location",children:[{path:"/page1",name:"page1",label:"頁面1",icon:"setting",url:"Page1"},{path:"/page2",name:"page2",label:"頁面2",icon:"setting",url:"Page2"}]}])const noChildren = computed(()=>list.value.filter(item=>!item.children))const hasChildren = computed(()=>list.value.filter(item=>item.children))
</script>
<style lang="less" scoped> .icons{width: 18px;height: 18px;margin-right: 5px;}.el-menu{border: none;h3{line-height: 48px;color: #333;text-align:center;}}.el-aside{ height: 100%;background-color: #545C64;}
</style>

在這里插入圖片描述

2 CommonHeader組件(靜態搭建)

左中右三部分:左側是一個圖標,中間是面包屑,右側是dropdown。

2.1 準備圖片URL數據

Vue 3 + Vite項目中動態引入本地靜態資源(如圖片)的推薦方式。
根據傳入的user名稱(如 ‘avatar’),動態生成指向src/assets/img/avatar.png的絕對路徑URL,確保圖片能在生產環境中正確加載。

<script setup>const getImageUrl= (user) => { return new URL(`../assets/img/${user}.png`,import.meta.url).href}
</script>

(1)import.meta.url: 這是一個特殊的元屬性,它返回當前模塊文件(即這個.vue文件)的完整URL。
Vite(Vue常用的構建工具)利用這個信息來計算第一個參數中相對路徑的絕對位置。
(2).href: new URL()返回一個URL對象,.href屬性獲取該對象的完整字符串形式的URL。
這個URL是經過Vite構建系統處理過的,確保在開發和生產環境中都能正確訪問資源(例如,生產環境可能包含哈希值)。

2.2 頁面布局

按鈕、面包屑、下拉菜單。
在這里插入圖片描述

2.3 樣式設計

(1)display: flex; 啟用Flex布局,讓子元素可以靈活排列。
(2)justify-content: space-between; 主軸方向兩端對齊,第一個子元素靠左,最后一個靠右,中間自動留白。
(3)align-items: center; 交叉軸居中對齊,所有子元素在垂直方向居中。
(4)width: 100%; height: 100%; 占滿父容器的寬高(常用于el-header或類似容器)。
(5)background-color: #333; 深灰色背景,常用于導航欄。
在這里插入圖片描述
(1):deep(…):Vue提供的深度選擇器(deep selector),用于在scoped樣式中穿透到子組件的內部DOM。
(2).bread span:選擇所有擁有class="bread"的元素內部的span。
(3)color: #fff !important; cursor: pointer !important;:
強制將文字顏色設為白色。
鼠標懸停時顯示為手型指針(可點擊提示)。

2.4 整體代碼(CommonHeader.vue)

<template><div class="header"><div class="l-content"><el-button size="small"><component class="icons" is="menu"></component></el-button><el-breadcrumb separator="/" class="bread"><el-breadcrumb-item :to="{ path: '/' }">首頁</el-breadcrumb-item></el-breadcrumb></div><div class="r-content"><el-dropdown><span class="el-dropdown-link"><img :src="getImageUrl('user')" class="user"/></span><template #dropdown><el-dropdown-menu><el-dropdown-item>個人中心</el-dropdown-item><el-dropdown-item>退出</el-dropdown-item></el-dropdown-menu></template></el-dropdown></div></div>
</template><script setup>const getImageUrl= (user) => { return new URL(`../assets/img/${user}.png`,import.meta.url).href}
</script><style lang="less" scoped> .header{ display: flex;justify-content: space-between;align-items: center;width: 100%;height: 100%;background-color: #333;}.icons{width: 20px;height: 20px;}.l-content{display: flex;align-items: center;.el-button{margin-right: 20px;}}.r-content{.user{width: 40px;height: 40px;border-radius: 50%;}}:deep(.bread span){color:#fff !important;cursor: pointer !important;}
</style>

在這里插入圖片描述

3 附錄

3.1 列表filter

const list = [1,2,3];
const a = list.filter(item => item != 1);
alert(a);

返回2、3。

3.2 參考附錄

參考elementplus官網地址
參考vue3實現通用后臺管理(傻瓜式一步一步記錄代碼實現過程)
參考js代碼在線運行工具

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

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

相關文章

VS Code配置MinGW64編譯非線性優化庫NLopt

VS Code用MinGW64編譯C代碼安裝MSYS2軟件并配置非線性優化庫NLopt和測試引用庫代碼的完整具體步驟。 1. 安裝MSYS2 下載安裝程序&#xff1a; 訪問 MSYS2官網下載 msys2-x86_64-xxxx.exe 并運行 完成安裝&#xff1a; 默認安裝路徑&#xff1a;C:\msys64安裝完成后&#xff0c…

C#通過TCP_IP與PLC通信

C#通過TCP/IP與PLC通信 本文將全面介紹如何使用C#通過TCP/IP協議與各種PLC進行通信&#xff0c;包括西門子、羅克韋爾、三菱等主流品牌PLC的連接方法。 一、PLC通信基礎 PLC通信協議概覽協議類型適用品牌特點Modbus TCP通用協議簡單易用&#xff0c;廣泛支持Siemens S7西門子PL…

Java 學習筆記(基礎篇3)

1. 數組&#xff1a;① 靜態初始化&#xff1a;(1) 格式&#xff1a;int[] arr {1, 2, 3};② 遍歷/* 格式&#xff1a; 數組名.length */ for(int i 0; i < arr.length; i){//在循環的過程中&#xff0c;i依次表示數組中的每一個索引sout(arr[i]);//就可以把數組里面的每一…

知識點匯總linuxC高級-3 shell腳本編程

shell腳本編程shell ---> 解析器&#xff1a;sh csh ksh bashshell命令 ---> shell解析的命令shell腳本 --> shell命令的有序集合shell腳本編程&#xff1a;將shell命令結合按照一定邏輯集合到一起&#xff0c;寫到一個 .sh 文件&#xff0c;去實現一個或多個功能&…

【C++學習篇】:基礎

文章目錄前言1. main() 函數2. 變量賦值3. cin和cout的一些細節4. 基本類型運算5. 內存占用6. 引用7. 常量前言 C 語法的學習整理&#xff0c;作為個人總結使用。 1. main() 函數 #include <iostream> //使用輸入輸出流庫&#xff08;cin&#xff0c;cout&#xff09;…

使用nginx反向代理kkfile

這篇說一下我解決的思路和方式哈&#xff0c;不一定適用于大家&#xff0c;可以做個參考比如我們的系統服務是http://10.63.25.35:80&#xff0c;而我們的文件服務是在10.63.25.37:8012上&#xff0c;正常不使用代理的話&#xff0c;我們前端調用后端接口&#xff0c;后端調用k…

【低成本擴容】動態擴容實戰指南

面對擴容操作時&#xff0c;下面這種操作是否也會迷惑你&#xff1f;下面來為大家解惑~size_t newcapacity 2*_capacity > (_size len)?2*_capacity:(_sizelen); //len為即將插入的字符串有效字符個數//_size為當前字符串有效字符個數//_capacity為當前容量大小//newcapa…

Product Hunt 每日熱榜 | 2025-08-14

1. Autumn 標語&#xff1a;為AI初創公司簡化的Stripe服務 介紹&#xff1a;Autumn幫助AI初創公司通過只需三個API調用來定價、計量和控制使用情況。基于Stripe搭建&#xff0c;它可以在一個地方管理訂閱、使用情況和訪問權限。無需復雜的webhooks或后端邏輯&#xff0c;非常…

Scrapy + Django爬蟲可視化項目實戰(二) 詳細版

系列文章 Scrapy + Django爬蟲可視化項目實戰(一)_django scrapy-CSDN博客 實現技術 Scrapy Django Echarts 引言 可視化部分需要讀者具備一定的Django基礎!!! 上一個文章我們已經實現了爬取景點的數據,那么接下來就是根據爬取到的數據進行可視化 一、環境搭建 (一) 創…

選擇式與生成式超啟發算法總結

這里寫目錄標題Selection HHGeneration HHGPHH示例存在大量針對特定問題設計的啟發式算法&#xff0c;近年來學術界提出了一個關鍵問題&#xff1a;如何選擇最合適的啟發式方法。這一問題推動了超啟發式&#xff08;hyper-heuristic&#xff09;方法的研究發展。超啟發式是一種…

NetBIOS 設置

在 Windows 系統中,WINS (Windows Internet Name Service) 和 NetBIOS 緊密相關,主要用于 NetBIOS 名稱解析(將計算機名轉換為 IP 地址)。WINS 是一個動態數據庫,類似于 DNS,但專門用于 NetBIOS 名稱解析,適用于早期 Windows 網絡(如 Windows NT/2000/XP)。 1. 查看 N…

vue2 + SimpleMindMap 制作思維導圖

vue2 SimpleMindMap 制作思維導圖 該代碼包含SimpleMindMap已知的所有功能&#xff0c;有需要的小伙伴可自行copy&#xff0c;框架使用el-ementui。其中有些圖標是阿里巴巴矢量圖的圖片&#xff0c;可自行進行替換。保姆級教程 以下是vue文件&#xff1a; <template><…

Discord x Pulsar: 使用 Pulsar、Flink 和 Iceberg 搭建流式機器學習平臺

本文整理自 Discord 機器學習工程師 David Christle 在 Pulsar Summit NA 上的演講內容&#xff0c;一起來看 Discord 是如何基于 Pulsar 實現兼顧安全和個性化功能的實時流式機器學習平臺的&#xff5e;1. 背景Discord 是一個實時?視頻通信平臺&#xff0c;?持?本/語?/視頻…

【數據結構入門】二叉樹(2)

目錄 1.二叉樹遍歷順序 1.1 前序&#xff08;先根&#xff09;遍歷 1.2 中序&#xff08;中根&#xff09;遍歷 1.3 后序&#xff08;后根&#xff09;遍歷 1.4 層序遍歷 1.5 深度優先遍歷&廣度優先遍歷 2.二叉樹的遍歷 2.1 前根遍歷&#xff08;遞歸&#xff09; …

【電機參數】電壓、電流、轉速標幺化推算過程

【電機參數】電壓、電流、轉速標幺化推算過程 文章目錄[TOC](文章目錄)前言一、標幺化目的——優化計算二、Q15與標幺化的關系三、標幺值計算1.電壓標幺值2.電流標幺值3.轉速標幺值四、參考資料總結前言 一、標幺化目的——優化計算 不同物理量的量綱和數值范圍差異巨大&#…

v-scale-scree: 根據屏幕尺寸縮放內容

&#x1f90d; 前端開發工程師、技術日更博主、已過CET6 &#x1f368; 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 &#x1f560; 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 &#x1f35a; 藍橋云課簽約作者、…

linux設備驅動之字符設備驅動

一、cdev結構體?成員/功能??說明??相關操作函數/宏??kobj?內嵌的kobject對象&#xff0c;用于Linux設備模型管理&#xff0c;實現引用計數和sysfs接口kobject_init()?owner?指向擁有該結構體的模塊指針&#xff08;通常為THIS_MODULE&#xff09;&#xff0c;防止模塊…

★CentOS:MySQL數據備份

一、cp 命令備份特點&#xff1a;優點&#xff1a;備份恢復數據快&#xff1a;直接復制文件&#xff0c;無需進行數據轉換和復雜的處理&#xff0c;因此備份恢復速度非常快缺點&#xff1a;需要停止數據庫服務&#xff0c;靈活性差&#xff0c;占用空間大&#xff0c;可移植性差…

Python代碼規范與靜態檢查(ruff/black/mypy + pyproject.toml + Makefile)自動化工具鏈介紹

文章目錄**1. 核心工具的作用****(1) black&#xff1a;代碼格式化工具****(2) ruff&#xff1a;代碼質量檢查工具****(3) mypy&#xff1a;靜態類型檢查工具****2. pyproject.toml&#xff1a;統一配置中心****示例配置**&#xff08;pyproject.toml&#xff09;&#xff1a;*…

軟件需求管理過程詳解

需求管理過程需求管理是軟件工程和系統開發中的核心過程&#xff0c;它確保項目始終圍繞正確、穩定且可追溯的需求進行。在復雜系統開發中&#xff0c;需求往往動態變化&#xff0c;需求管理通過系統化的方法控制變更、維護版本、建立追溯關系&#xff0c;從而降低項目風險、保…