前端:純HTML、CSS和JS菜單樣式

實現了一個多級折疊菜單系統,使用純HTML、CSS和JavaScript(無任何框架)

一、二級菜單展開

1、實現效果

初始狀態-展示全部一級菜單

選中共狀態,一級標題選中共為藍色背景色,二級標題選中共為藍色文字,展開右側圖標為-,后縮狀態右側圖標為+

2、實現

??HTML結構??

<ul class="menu"><li class="menu-item"><div class="menu-header"><a href="#" class="menu-link">一級標題</a><span class="toggle">+</span></div><ul class="submenu"><li><a href="#" class="submenu-link">子菜單項</a></li><!-- 更多子項... --></ul></li><!-- 更多一級菜單... -->
</ul>
  • ??層級關系??:menu > menu-item > menu-header + submenu
  • ??關鍵元素??:
    • .menu-header - 可點擊的菜單標題區域
    • .toggle - 控制展開/折疊的"+"/-"按鈕
    • .submenu - 默認隱藏的子菜單容器

CSS樣式??

.menu-header {display: flex; /* Flex布局實現水平排列 */align-items: center; /* 垂直居中 */justify-content: space-between; /* 左右分散對齊 */background-color: #76787b; /* 灰色背景 */transition: background-color 0.3s ease; /* 懸停動畫 */
}.submenu {display: none; /* 初始隱藏子菜單 */padding-left: 30px; /* 縮進效果 */background-color: #f1f1f1; /* 淺灰色背景 */
}.active .menu-header {background-color: #0096c7; /* 選中狀態藍色高亮 */
}
  • ??布局特點??:
    • 使用Flexbox實現菜單標題和切換按鈕的完美對齊
    • 子菜單默認隱藏(display: none
    • 通過縮進(padding-left)實現層級視覺區分

??JavaScript交互??

function toggleSubmenu(item) {const submenu = item.querySelector('.submenu');const toggle = item.querySelector('.toggle');if (submenu.style.display === 'block') {// 折疊邏輯submenu.style.display = 'none';toggle.textContent = '+';} else {// 展開邏輯submenu.style.display = 'block';toggle.textContent = '-';}
}
  • ??核心功能??:

    1. ??點擊菜單頭??時切換子菜單顯示狀態
    2. ??自動關閉其他菜單??(保持單開模式)
    3. ??視覺反饋??:
      • 切換"+"和"-"圖標
      • 添加.active類改變背景色

??關鍵實現技巧??

  • ??純CSS隱藏/顯示??:通過display: none/block控制子菜單顯隱
  • ??狀態管理??:用.active類標記當前展開的菜單項
  • ??事件委托??:直接給每個菜單頭綁定點擊事件(適合簡單結構)
  • ??視覺層次??:通過背景色和縮進區分不同級別菜單

實現代碼

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Multi-Level Menu with Flexbox</title><style>/* styles.css */body {font-family: Arial, sans-serif;margin: 0;padding: 0;}.menu-container {padding: 20px;}.menu {list-style-type: none;padding: 0;margin: 0;width:400px;}.menu-header {display: flex;/* 使用 Flexbox 布局 */align-items: center;/* 垂直居中對齊 */justify-content: space-between;/* 圖標和文字之間的間距 */padding: 10px 20px;background-color: #76787b;color: white;cursor: pointer;transition: background-color 0.3s ease;border:1px solid #fff;}.menu-header:hover {background-color: #444;}.toggle {font-size: 20px;color: white;}.menu-link {color: white;text-decoration: none;flex-grow: 1;/* 讓鏈接占據剩余空間 */}.submenu {list-style-type: none;padding-left: 30px;display: none;/* 初始狀態下隱藏子菜單 */background-color: #f1f1f1;}.submenu-link {display: block;padding: 5px 0;colo

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

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

相關文章

Centos8 安裝 Docker

yum 更換國內源 1. 備份原 yum 配置 cd /etc/yum.repos.d/ mkdir backup mv *.repo backup/2. 下載新 yum 配置&#xff08;阿里源&#xff09; wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo3. 替換源中的系統版本變量 sed -…

AI測試工具Testim——告別自動化測試維護難題

隨著人工智能技術的快速發展&#xff0c;AI測試工具正在成為提升軟件研發效能的關鍵。每款AI的特性各有差異&#xff0c;今天&#xff0c;我們就給大家介紹一款專注于Web和移動應用的端到端的AI測試工具--Testim。 Testim的簡介 官網地址&#xff1a;https://www.testim.io/ 簡…

【默子AI】萬字長文:MCP與A2A協議詳解

【默子AI】萬字長文&#xff1a;MCP與A2A協議詳解 引言&#xff1a; 讓一個大模型憑空解決所有問題&#xff0c;就像讓一個書呆子不借助工具就去修汽車 即便他腦子里裝滿了理論知識&#xff0c;也缺少實踐的“手腳”。 長期以來&#xff0c;AI助手&#xff08;尤其是LLM&#x…

LeNet5 神經網絡的參數解析和圖片尺寸解析

1.LeNet-5 神經網絡 以下是針對 LeNet-5 神經網絡的詳細參數解析和圖片尺寸變化分析&#xff0c;和原始論文設計&#xff0c;通過分步計算說明各層的張量變換過程。 經典的 LeNet-5架構簡化版&#xff08;原始論文輸入為 32x32&#xff0c;MNIST 常用 28x28 需調整&#xff09…

第二節:文件系統

理論知識 文件系統的基本概念&#xff1a;文件系統是操作系統中負責管理持久數據的子系統&#xff0c;它將數據組織成文件和目錄的形式&#xff0c;方便用戶存儲和訪問數據。Linux文件系統的類型&#xff1a;常見的 Linux 文件系統類型有 Ext2、Ext3、Ext4、XFS、Btrfs 等。Ex…

Python數據結構與算法(5)——動態規劃

Python數據結構與算法(5)——動態規劃 0. 學習目標1. 動態規劃的基本概念1.1 什么是動態規劃1.2 動態規劃的核心思想1.3 動態規劃的適用條件2. 動態規劃的實現思路2.1 自頂向下:備忘錄法 (Memoization)2.2 自底向上:表格法(Tabulation)3. 0/1 背包問題4. 最長公共子序列5…

【JAVA ee初階】多線程(3)

一、出現線程安全的原因 1.【根本原因】線程的調度執行時隨機的&#xff08;搶占式執行&#xff09;->罪魁禍首 2.多個線程同時修改同一個變量 如果是一個線程修改一個變量 或者 多個線程讀取同一個變量 或者 多個線程修改不同變量 這些都沒事。 3.修改操作不是原子的&a…

Halcon 3D 表面匹配基于形狀

文章目錄 prepare_object_model_3d 準備 3D 物體模型read_shape_model_3d — 讀取3D匹配模型create_shape_model_3d 準備要匹配的3D模型find_shape_model_3d ——發現匹配模型project_shape_model_3d 將三維形狀模型的邊緣投影到圖像坐標中。示例ignore_part_polarity&#xff…

【Linux】Java 開發者的 Linux 常用命令指南

Java 開發者的 Linux 常用命令指南 目錄標題 Java 開發者的 Linux 常用命令指南1. Linux 目錄結構2. 系統信息命令3. 服務管理系統服務防火墻管理 4. 文本編輯 (vi/vim)常用模式 5. 文件和目錄操作查看與導航創建與刪除查看文件內容查找文件 6. 用戶管理7. 壓縮和解壓8. 權限管…

每日c/c++題 備戰藍橋杯(P1252洛谷 馬拉松接力賽)

洛谷P1060 馬拉松接力賽題解&#xff1a;貪心算法在資源分配中的巧妙應用 題目描述 P1060 馬拉松接力賽是一道結合貪心策略與動態規劃思想的資源分配問題。題目要求將25公里的馬拉松接力賽合理分配給5名選手&#xff0c;使得總耗時最短。每位選手可跑1-10公里的整數距離&…

Nginx 中間件

Nginx&#xff08;發音為 "engine-x"&#xff09;是一款開源的高性能 HTTP 服務器和反向代理服務器&#xff0c;最初由 Igor Sysoev 開發。 它以其高性能、穩定性、豐富的功能集和低資源消耗而聞名&#xff0c;廣泛應用于全球的 Web 服務架構中。 作為中間件&#…

Neo4j在win下安裝教程(docker環境)

1. 安裝命令 1.1 基于正式neo4j安裝–不用 docker run --name neo4j-container -p 7474:7474 -p 7687:7687 -d neo4j1.2 基于community安裝 需要部署兩個Neo4j&#xff0c;一個正式庫prod&#xff0c;一個測試庫dev。 neo4j默認監聽7474&#xff08;HTTP-也就是瀏覽器端口&…

kylin v10 + argo + ascend 310p多機多卡 pytorch distributed 訓練

最近接了個模型訓練編排多機多卡的改造需求&#xff0c;要求使用argo dag task啟動多個節點&#xff0c;同時多個節點能實現 torch.distributed.launch 這樣多機多卡的訓練模式 簡述技術 torch.distributed.launch命令介紹 我們在訓練分布式時候&#xff0c;會使用到 torch.d…

[Mac] 使用homebrew安裝miniconda

使用虛擬環境可以對不同項目的依賴進行隔離。可以使用venv或者conda來創建和使用虛擬環境。 venv是Python內置的虛擬環境管理模塊&#xff0c;適合純Python項目以及快速輕量級的開發和部署。conda具備更強大的版本管理能力&#xff0c;但是占用較大的磁盤空間。 考慮到我基本不…

CMU-15445(1)——環境搭建

前言 最近在找完暑期實習之后&#xff0c;終于有了一些干項目外的空余時間學習新的知識&#xff0c;在這么多輪面試中&#xff0c;數據庫的考察非常多&#xff0c;但孱弱的數據庫基礎導致我有很多次面試被問住&#xff0c;因此我希望在學習CMU-15445&#xff08;Fall 2024&…

CSS元素動畫篇:基于當前位置的變換動畫(四)

基于當前位置的變換動畫&#xff08;四&#xff09; 前言透明效果類元素動畫閃爍動畫效果效果預覽代碼實現 淡入動畫效果效果預覽代碼實現 淡出動畫效果效果預覽代碼實現 結語 前言 CSS元素動畫一般分為兩種&#xff1a;一種是元素基于當前位置的變換動畫&#xff0c;通過不明…

STM32驅動AD5318配置8通道DA詳細講解

目錄 1. AD5318 芯片特性 2、AD5318寄存器概述 3、SPI數據幀格式 3.1 控制位(Bit15) 3.2 地址位(Bit14-Bit12,3 位) 3.3 數據 / 控制碼(Bit11-Bit0) 4、控制功能寄存器(控制位 = 1 時激活) 4.1 參考與增益配置(MM = 00) 4.2. LDAC模式(MM = 01) 4.3 掉…

如何搭建spark yarn 模式的集群集群

以下是搭建Spark YARN模式集群的一般步驟&#xff1a; 準備工作 - 確保集群中各節點安裝了Java環境&#xff0c;并配置好 JAVA_HOME 環境變量。 - 各節點間能通過SSH免密登錄。 - 安裝并配置好Hadoop集群&#xff0c;YARN作為Hadoop的資源管理器&#xff0c;Spark YARN模式需要…

SpringMVC處理請求映射路徑和接收參數

目錄 springmvc處理請求映射路徑 案例&#xff1a;訪問 OrderController類的pirntUser方法報錯&#xff1a;java.lang.IllegalStateException&#xff1a;映射不明確 核心錯誤信息 springmvc接收參數 一 &#xff0c;常見的字符串和數字類型的參數接收方式 1.1 請求路徑的…

在 Windows 系統上升級 Node.js

一、查詢電腦端已經安裝的 Node.js 版本 1、通過【winR】 鍵&#xff0c;輸入 cmd&#xff0c;點擊【確定】按鈕打開 cmd 窗口 2、命令行界面輸入 node -v 查看目前 Node.js 版本 3、命令行界面輸入 npm -v 查看目前 npm 版本 二、進入官網地址下載安裝包 1、官網地址&#x…