HTML中自定義鼠標右鍵菜單

今天突然有人跟我提到了HTML中如何自定義鼠標右鍵菜單,這里大概記錄一下吧,方便下次直接復制。免得還去看API文檔。

文章目錄

  • HTML中自定義鼠標右鍵菜單
    • 結果如下所示
    • 可以稍微改一下鼠標懸浮到右鍵菜單時的樣式
    • 結果如下所示
  • 只在某個特定的div才可以顯示右鍵菜單
    • 結果如下所示
  • 在多個特定的div中都可以顯示右鍵菜單
    • 結果如下所示

HTML中自定義鼠標右鍵菜單

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>鼠標右鍵菜單示例</title><style>.context-menu {display: none;position: absolute;background-color: #fff;border: 1px solid #ccc;min-width: 100px;box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);z-index: 999;}.context-menu-item {padding: 5px 10px;cursor: pointer;}</style>
</head>
<body><div id="contextMenu" class="context-menu"><div class="context-menu-item" onclick="handleItemClick('復制')">復制</div><div class="context-menu-item" onclick="handleItemClick('粘貼')">粘貼</div><div class="context-menu-item" onclick="handleItemClick('剪切')">剪切</div>
</div><script>document.addEventListener('contextmenu', function (e) {e.preventDefault(); // 阻止默認右鍵菜單var menu = document.getElementById('contextMenu');menu.style.display = 'block';menu.style.left = `${e.pageX}px`;menu.style.top = `${e.pageY}px`;});document.addEventListener('click', function () {document.getElementById('contextMenu').style.display = 'none'; // 點擊頁面其他地方隱藏菜單});function handleItemClick(itemName) {console.log(`用戶點擊了菜單項:${itemName}`);// 在此處添加實際的業務邏輯,如執行復制、粘貼或剪切操作switch (itemName) {case '復制':// 執行復制操作...break;case '粘貼':// 執行粘貼操作...break;case '剪切':// 執行剪切操作...break;}document.getElementById('contextMenu').style.display = 'none'; // 點擊菜單項后隱藏菜單}
</script></body>
</html>

結果如下所示

在這里插入圖片描述
在這個例子中,當用戶在網頁上右鍵點擊時,會顯示一個自定義菜單。并在點擊菜單項時執行相應的函數。這個就要根據自己具體的實際場景中實現了。

可以稍微改一下鼠標懸浮到右鍵菜單時的樣式

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>鼠標右鍵菜單示例</title><style>.context-menu {display: none;position: absolute;background-color: #fff;border: 1px solid #ccc;min-width: 100px;box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);z-index: 999;}.context-menu-item {padding: 5px 10px;cursor: pointer;}.context-menu-item:hover {background-color: #e6f7ff;}</style>
</head>
<body><div id="contextMenu" class="context-menu"><div class="context-menu-item" onclick="handleItemClick('復制')">復制</div><div class="context-menu-item" onclick="handleItemClick('粘貼')">粘貼</div><div class="context-menu-item" onclick="handleItemClick('剪切')">剪切</div>
</div><script>document.addEventListener('contextmenu', function (e) {e.preventDefault(); // 阻止默認右鍵菜單var menu = document.getElementById('contextMenu');menu.style.display = 'block';menu.style.left = `${e.pageX}px`;menu.style.top = `${e.pageY}px`;});document.addEventListener('click', function () {document.getElementById('contextMenu').style.display = 'none'; // 點擊頁面其他地方隱藏菜單});function handleItemClick(itemName) {console.log(`用戶點擊了菜單項:${itemName}`);// 在此處添加實際的業務邏輯,如執行復制、粘貼或剪切操作switch (itemName) {case '復制':// 執行復制操作...break;case '粘貼':// 執行粘貼操作...break;case '剪切':// 執行剪切操作...break;}document.getElementById('contextMenu').style.display = 'none'; // 點擊菜單項后隱藏菜單}
</script></body>
</html>

結果如下所示

在這里插入圖片描述

只在某個特定的div才可以顯示右鍵菜單

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>鼠標右鍵菜單示例</title><style>.context-menu {display: none;position: absolute;background-color: #fff;border: 1px solid #ccc;min-width: 100px;box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);z-index: 999;}.context-menu-item {padding: 5px 10px;cursor: pointer;}.context-menu-item:hover {background-color: #f5f5f5;}</style>
</head>
<body><div id="targetDiv" style="width: 300px; height: 300px; background-color: #eee;">右鍵點擊我顯示自定義菜單
</div><div id="contextMenu" class="context-menu"><div class="context-menu-item" onclick="handleItemClick('復制')">復制</div><div class="context-menu-item" onclick="handleItemClick('粘貼')">粘貼</div><div class="context-menu-item" onclick="handleItemClick('剪切')">剪切</div>
</div><script>const targetDiv = document.getElementById('targetDiv');targetDiv.addEventListener('contextmenu', function (e) {e.preventDefault(); // 阻止默認右鍵菜單if (e.target === targetDiv) { // 只有當點擊的目標是目標div時才顯示菜單var menu = document.getElementById('contextMenu');menu.style.display = 'block';menu.style.left = `${e.pageX}px`;menu.style.top = `${e.pageY}px`;}});document.addEventListener('click', function () {document.getElementById('contextMenu').style.display = 'none'; // 點擊頁面其他地方隱藏菜單});function handleItemClick(itemName) {console.log(`用戶點擊了菜單項:${itemName}`);// 在此處添加實際的業務邏輯,如執行復制、粘貼或剪切操作switch (itemName) {case '復制':// 執行復制操作...break;case '粘貼':// 執行粘貼操作...break;case '剪切':// 執行剪切操作...break;}document.getElementById('contextMenu').style.display = 'none'; // 點擊菜單項后隱藏菜單}
</script></body>
</html>

結果如下所示

在這里插入圖片描述
在這個例子中,右鍵菜單只會出現在具有ID為targetDiv的div元素上。當用戶在其他位置右鍵點擊時,不會顯示自定義菜單。

在多個特定的div中都可以顯示右鍵菜單

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>鼠標右鍵菜單示例</title><style>.context-menu {display: none;position: absolute;background-color: #fff;border: 1px solid #ccc;min-width: 100px;box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);z-index: 999;}.context-menu-item {padding: 5px 10px;cursor: pointer;}.context-menu-item:hover {background-color: #24d0d6;}</style>
</head>
<body><div id="targetDiv1" class="target-divs" style="width: 300px; height: 300px; background-color: #eee;">右鍵點擊我顯示自定義菜單
</div><div id="targetDiv2" class="target-divs" style="width: 300px; height: 300px; background-color: #ddd;">右鍵點擊我顯示自定義菜單
</div><div id="contextMenu" class="context-menu"><div class="context-menu-item" onclick="handleItemClick('復制')">復制</div><div class="context-menu-item" onclick="handleItemClick('粘貼')">粘貼</div><div class="context-menu-item" onclick="handleItemClick('剪切')">剪切</div>
</div><script>const targetDivs = document.getElementsByClassName('target-divs');for (const div of targetDivs) {div.addEventListener('contextmenu', function (e) {e.preventDefault(); // 阻止默認右鍵菜單var menu = document.getElementById('contextMenu');menu.style.display = 'block';menu.style.left = `${e.pageX}px`;menu.style.top = `${e.pageY}px`;});}document.addEventListener('click', function () {document.getElementById('contextMenu').style.display = 'none'; // 點擊頁面其他地方隱藏菜單});function handleItemClick(itemName) {console.log(`用戶點擊了菜單項:${itemName}`);// 在此處添加實際的業務邏輯,如執行復制、粘貼或剪切操作switch (itemName) {case '復制':// 執行復制操作...break;case '粘貼':// 執行粘貼操作...break;case '剪切':// 執行剪切操作...break;}document.getElementById('contextMenu').style.display = 'none'; // 點擊菜單項后隱藏菜單}
</script></body>
</html>

結果如下所示

在這里插入圖片描述
在這個例子中,我們首先通過類名target-divs獲取所有需要添加右鍵菜單功能的div元素,然后遍歷這個集合,為每個元素添加右鍵菜單事件監聽器。這樣,在任何具有target-divs類名的div上右鍵點擊時都會顯示自定義菜單。

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

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

相關文章

javascript 的eval()和with是干嘛的

原來JavaScript 中的eval() 和 with 是兩個強大的功能&#xff0c;但同時它們也具有潛在風險的特性&#xff0c;所以謹慎使用。 首先說說eval() 函數&#xff1a; 它接收一個字符串參數&#xff0c;并將其作為 JavaScript 代碼來解析和執行。 這意味著你可以使用 eval() 動態地…

《Scratch等級認證CCF-GESP真題解析》專欄總目錄

?? 專欄名稱:《Scratch等級認證CCF-GESP真題解析》 ?? 專欄介紹:中國計算機學會GESP《CCF編程能力等級認證》Scratch圖形化編程(1~4級)歷屆真題解析。 ?? 訂閱專欄:訂閱后可閱讀專欄內所有真題解析,真題持續更新中,限時9.9元,歡迎訂閱! Scratch圖形化編程一級 序…

2368. 受限條件下可到達節點的數目

2368. 受限條件下可到達節點的數目 題目鏈接&#xff1a;2368. 受限條件下可到達節點的數目 代碼如下&#xff1a; //深度優先遍歷 //參考&#xff1a;https://leetcode.cn/problems/reachable-nodes-with-restrictions/solutions/2662538/shu-shang-dfspythonjavacgojsrust-…

C++自學精簡實踐教程

一、介紹 1.1 教程特點 一篇文章從入門到就業有圖有真相&#xff0c;有測試用例&#xff0c;有作業&#xff1b;提供框架代碼&#xff0c;作業只需要代碼填空規范開發習慣&#xff0c;培養設計能力 1.2 參考書 唯一參考書《C Primer 第5版》?參考書下載&#xff1a; 藍奏云…

Acwing---3777. 磚塊

磚塊 1.題目2.基本思想3.代碼實現 1.題目 n 個磚塊排成一排&#xff0c;從左到右編號依次為 1~n。 每個磚塊要么是黑色的&#xff0c;要么是白色的。 現在你可以進行以下操作若干次&#xff08;可以是 0 次&#xff09;&#xff1a; 選擇兩個相鄰的磚塊&#xff0c;反轉它…

STL——stack

目錄 stack stack都有哪些接口 模擬實現一個stack stack 1. stack是一種容器適配器&#xff0c;專門用在具有后進先出操作的上下文環境中&#xff0c;其刪除只能從容器的一端進行元素的插入與提取操作。 2. stack是作為容器適配器被實現的&#xff0c;容器適配器即…

數據分析-Pandas數據的畫圖設置

數據分析-Pandas數據的畫圖設置 數據分析和處理中&#xff0c;難免會遇到各種數據&#xff0c;那么數據呈現怎樣的規律呢&#xff1f;不管金融數據&#xff0c;風控數據&#xff0c;營銷數據等等&#xff0c;莫不如此。如何通過圖示展示數據的規律&#xff1f; 數據表&#x…

春招!啟動了

大家好&#xff0c;我是洋子。今年的春招很多企業已經開始招聘了&#xff0c;像美團今年繼續發力&#xff0c;24屆春招以及25屆暑期轉正實習一共招聘4000人。另外&#xff0c;阿里&#xff0c;京東&#xff0c;順豐等公司也已經開始春招&#xff0c;可以說招聘的號角已經正式吹…

GO語言學習筆記(與Java的比較學習)(十)

錯誤處理與測試 Go 沒有像 Java 和 .NET 那樣的 try/catch 異常機制&#xff1a;不能執行拋異常操作。但是有一套 defer-panic-and-recover 機制 錯誤處理 Go 有一個預先定義的 error 接口類型 type error interface {Error() string } errors 包中有一個 errorString 結構…

十二、類與聲明

類與聲明 什么是類&#xff1f; 前情總結 前面22講的課基本上就做了兩件事 學習C#的基本元素學習類的成員 析構函數&#xff1a; 當對象不再被引用的時候&#xff0c;就會被垃圾回收器gc&#xff0c;回收。而收回的過程當中&#xff0c;如果需要做什么事情&#xff0c;就放在…

遠程調用--Http Interface

遠程調用--Http Interface 前言1、導入依賴2、定義接口3 創建代理&測試4、創建成配置變量 前言 這個功能是spring boot6提供的新功能&#xff0c;spring允許我們通過自定義接口的方式&#xff0c;給任意位置發送http請求&#xff0c;實現遠程調用&#xff0c;可以用來簡化…

已解決org.springframework.dao.DataRetrievalFailureException數據檢索失敗異常的正確解決方法,親測有效!!!

已解決org.springframework.dao.DataRetrievalFailureException數據檢索失敗異常的正確解決方法&#xff0c;親測有效&#xff01;&#xff01;&#xff01; 目錄 問題分析 出現問題的場景 報錯原因 解決思路 解決方法 總結 在使用Spring Framework進行數據庫操作時&…

關于硅金屬電阻器?

EAK金屬硅電阻器類似于陶瓷復合電阻器&#xff0c;在脈沖負載方面具有優勢&#xff0c;需要高峰值功率或高電壓與低電感&#xff08;如預充電電路&#xff09;的組合。硅金屬電阻器具有更高的連續額定溫度&#xff0c;為 350C&#xff0c;而陶瓷電阻器為 250C。這種擴展的溫度范…

[藍橋杯 2023 省 B] 冶煉金屬

P9240 [藍橋杯 2023 省 B] 冶煉金屬 - 洛谷 | 計算機科學教育新生態 (luogu.com.cn) 參考題解&#xff1a; #C3150——藍橋杯2023年第十四屆省賽真題-冶煉金屬(分塊)-Dotcpp編程社區 https://www.bilibili.com/video/BV1wc411x7KU/?spm_id_from333.1007.top_right_bar_windo…

RT-Thread操作系統 串口DMA接收時數據被拆分多包

一、問題現象 在使用RT Thread操作系統&#xff0c;串口DMA接收數據時&#xff0c;通過log打印發現&#xff0c;例如GPS NEMA數據一包數據量較大或者時&#xff0c;接收到的數據被拆分多包處理&#xff1b; 二、問題解決方案 修改DMA驅動程序 在drivers/drv_usart.c中屏蔽如…

板子合集1.0

版權聲明&#xff1a;本文為博主原創文章&#xff0c;遵循 CC 4.0 BY-SA 版權協議&#xff0c;轉載請附上原文出處鏈接和本聲明。 原文鏈接&#xff1a;https://blog.csdn.net/JK01WYX/ 文章目錄 1.快速冪板子2.gcd得最大公約數3.堆優化的dijkstra板子4.線段樹1板子 區間加線段…

中綴表達式轉換逆波蘭式(后綴表達式)

算法思路來自于王道的數據結構 #include <iostream> #include <stack> #include <map>using namespace std; string eq; stack<char> op; string rst ""; map<char, int> dict;// 獲取優先級 int getPrio(char op) {if (op )return …

【Dubbo專欄 01 】深入探索:dubbo的架構是什么?

文章目錄 Dubbo&#xff1a;深入解析分布式服務框架的核心概念與實現01 Dubbo簡介02 Dubbo核心概念2.1 服務提供者&#xff08;Provider&#xff09;2.2 服務消費者&#xff08;Consumer&#xff09;2.3 注冊中心&#xff08;Registry&#xff09;2.4 負載均衡&#xff08;Load…

如何對用OpenCV開發的API進行測試 (Google Test 版本)

如何對用OpenCV開發的API進行測試 &#xff08;Google Test 版本&#xff09; 如何對用OpenCV開發的API進行測試斷言介紹斷言基礎的斷言數值比較字符串比較 如何對用OpenCV開發的API進行測試 假設你想測試一個使用OpenCV開發的圖像處理API&#xff0c;例如一個圖像濾波函數。以…

SWC Runnable

runnable概念 runnable是編寫應用程序行為邏輯的 SWC 的一部分。Runnable 類似于 C 中的函數,類似RTOS中的task,程序運行的實體,swc的靈魂。在 AUTOSAR 中,我們在配置期間在 SWC 中創建 Runnable,并且 在 SWC 的相應源文件中生成Runnable 或函數骨架。骨架函數的名稱與我…