js实现右键弹出自定义的菜单

2023-10-27

js实现右键弹出自定义的菜单
实现的步骤:1、首先阻止右键弹出系统默认的菜单
2、自定义菜单并隐藏
3、点击右键弹出自定义菜单
4、点击桌面除菜单任意位置,菜单隐藏,点击菜单,菜单不隐藏。
在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding:0;
        }
        li{
            list-style: none;
            height: 30px;
            width: 80px;
            text-align: center;
            line-height: 30px;
            border-top: 1px solid rgb(187, 181, 181);
        }
        .mydiv{
            margin:20px auto;
            width: 400px;
            height: 300px;
            background-color: rgb(170, 238, 232);
            position: relative;
        }
        .mydiv ul{
            width: 80px;
            height: 150px;
            background-color: rgb(206, 195, 247);
            position: absolute;
            display: none;
        }
    </style>
</head>
<body>
    <div class="mydiv">
        <ul class="myul">
            <li>菜单1</li>
            <li>菜单2</li>
            <li>菜单3</li>
            <li>菜单4</li>
            <li>菜单5</li>
        </ul>
    </div>

    <script>
        let mydiv=document.querySelector('.mydiv');
        let myul=document.querySelector('.myul');

        mydiv.addEventListener('contextmenu',fn);
            //contextmenu右键
        function fn(e){
            e.preventDefault();//preventDefault()阻止默认事件(这里阻止了默认菜单)
            myul.style.display='block';//点击右键菜单显示出来
            let X=e.pageX - this.offsetLeft;
            let Y=e.pageY - this.offsetTop;
            myul.style.left=X+'px';
            myul.style.top=Y+'px';
        }
        window.onclick=function(event){
            if(event.target.tagName=='LI'){
                //如果点击到 LI(菜单)就停止执行return之后的代码,菜单就不会隐藏
                return;
            }
            myul.style.display='none'
            //如果点击菜单外的任意位置,菜单被隐藏
        }
    </script>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js实现右键弹出自定义的菜单 的相关文章

  • 求二叉树中两个指定节点的最短距离

    给定一个二叉树 找到该树中两个指定节点间的最短距离 思路 求最近公共祖先节点 然后再求最近公共祖先节点到两个指定节点的路径 再求两个节点的路径之和 const shortestDistance function root p q let l
  • js倒计时

    html部分代码 div class time span 60 span span s span div js部分代码 var second document getElementById second var m 60 var time
  • 元字符的详细解析

    上一篇文章介绍了正则的用处以及正则中这些元字符的基本含义 但是如果我们只知道那些元字符的含义 不知道怎么使用和加以练习 那么对于正则我们还只是看见了门槛 并没有踏入 那么本篇文章就让我们迈起脚步正式走入正则的世界吧 let s go 我的学
  • 问题记录:js的=>和function

    这个问题搞了一整天 是这么一个功能
  • 封装一个通用的ajax请求

    封装ajax function useajax method url data callback type 创建兼容对象 var xhr if window XMLHttpRequest xhr new XMLHttpRequest els
  • IntelliJ IDEA 15款 神级超级牛逼插件推荐(自用,真的超级牛逼)

    来源 http suo im 5X5Rql 满满的都是干货 所有插件都是在 ctrl alt s 里的plugins 里进行搜索安装 1 CodeGlance 代码迷你缩放图插件 2 Codota 代码提示工具 扫描你的代码后 根据你的敲击
  • postMan使用技巧

    使用postMan调试接口 一些接口要实现登录才能访问 即要还token才能访问 一般登录后 拿到token才复制到其他接口下添加token变量 如些复制感觉是挺麻烦的 这时我们可以设置postman的全局变量 操作如下 添加调试环境和全局
  • js数组相加相减函数

    数组相减 reduceArray arr1 arr2 for var i arr1 length 1 i gt 0 i var a arr1 i for var j arr2 length 1 j gt 0 j var b arr2 j i
  • live-server的使用

    本地开发常常需要搭建临时的服务 第一时间我们会想到用http server 但现在流行修改文件浏览器自动刷新hot socketing 热拔插 如live reload 若想浏览器自动打开项目 用opener 现在live server实现
  • js-年月日时分秒字符串切割,只显示年月日

    substring 方法用于提取字符串中介于两个指定下标之间的字符 var date 2020 01 01 00 00 00 date substring 0 10 console log date 2020 01 01
  • html标签中src=“图片路径”,怎么用变量替换路径

    div style background image none bg0 gif bg5 gif div
  • 用于富 Web 开发的 13 个免费 JavaScript 库和插件

    在这个新的一天伴随着最新技术崛起的舞台上 让您的商业品牌绽放光芒的唯一方法就是紧跟市场流行的趋势 使用 HTML 和 JavaScript 等技术是通过其中使用的一流功能获得盈利业务的灵魂 当从技术角度谈论 JavaScript 时 考虑到
  • crypto-js md5加密和解密

    直接上代码 import CryptoJS from crypto js const encodeFactor zq87dopenf67eg 加密 export function encrypt txt var key CryptoJS e
  • Vue中key

    相信很多小伙伴跟我一样在使用v for的时候对key值的存在和必要性有疑问 通过ESlint进行代码检查的时候不加上key还会报错 想知道key为什么存在可以先想想key为什么产生 会不会是尤雨溪灵光一闪就给Vue添加上了key 也有可能
  • js formatDate 时间转换

    formatDate function time fmt type type 类型 0 时间为秒 1 时间为毫秒 var date new Date type 0 time 1000 time var o M date getMonth 1
  • javascript,声明变量和导入时,大括号的特殊用法

    作为一个新手 今天看到一段奇怪的代码 定义变量时用大括号把变量名括起来了 还有import时也使用了大括号 import getToken from utils auth let data request 一脸懵 这是啥意思 度娘一番 记录
  • 6.js--布尔值和null

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 目录 1 布尔数据 boolean 2 null 3 null和undefined的意义 1 布尔数据 boolean var a true var b false
  • UE编辑器下简单把 excel格式的表格转换为wiki支持的表格

    觉得 wiki下 mediawiki 导入excel和word表格好麻烦 微软自带的offic插件wiki转换工具一直都安装不上 为了更新wiki内容只能手动来做了后来总结了以下手动方法 1 复制编辑好的Excel表格到记事本 用ue打开
  • WPF 路径动画PathAnimations的使用

    在wpf中让一个控件按照一定的路径运行的动画 叫做路径动画 这个示例演示了让一个rectangle按照一个s形曲线反复运行的动画 效果 只有一个文件 全部代码如下
  • 30天精通Nodejs--第十四天:MongoDB

    这里写目录标题 前言 什么是 MongoDB 安装 MongoDB 驱动 连接到 MongoDB 数据库 执行基本操作 插入文档 查询文档 更新文档 删除文档

随机推荐

  • python监视mysql最大连接数

    usr local bin python3 5import pymysqlimport time sum 0 while True open db connection db pymysql connect localhost root a
  • You can‘t specify target table ‘XXXX‘ for update in FROM clause mysql错误解决方法

    mysql数据库同时对一个表进行查询和删改操作时 会报 You can t specify target table XXXX for update in FROM clause 错误 无法执行 错误提示的意思是 不能在 FROM 子句中指
  • 2022年度回顾

    2022年接近尾声 驻足回看行业这一年的跌宕起伏 无论是技术的突破 应用的创新 还是生态的兴衰 皆成为了行业发展的历史注脚 如往年一样 万向区块链于年末推出重磅年度回顾系列文章 公链技术篇 应用篇 和 监管篇 以期记录当前行业发展的缩影 下
  • Java快捷键(学到会慢慢更新)

    大家都知道快捷键的重要性 尤其在代码中 懂得运用快捷键的小伙伴写代码速度就是快 目前我学Java还不是很久 之前学c的 所以所知道的快捷键比较少 后续会一直更新这条博文 第一个快捷键 psvm 回车 这是main函数快速生成快捷键 具体还是
  • 顺序表的基本操作

    目录 一 实验要求 二 代码实现 三 运行结果 一 实验要求 1 验证性实验 实现顺序表的基本操作 实验内容 编写一个程序sqlist cpp 或 c 实现顺序表的各种基本运算和整体建表算法 假设顺序表的内容类型ElemType为char
  • Git-常用命令

    系列文章 Git 入门小结 Git 分支 Git 常用命令 Git 注册远程仓库 1 提交代码到暂存区 git add 添加当前目录的所有文件到缓存区 git add file1 file2 添加指定文件到缓存区 git rm file1
  • 1分钟学会在C++中将图像转换为Word文档,快速入手光学字符处理控件Aspose.OCR

    图像和扫描的文档可能包含您可能需要进一步处理的文本信息 可能已经使用智能手机拍摄了文本文档的图片 并将其转换为可编辑的文档 为此 对图像执行 OCR 可以证明是有帮助的 使用 OCR 可以将图像转换为可搜索和可编辑的 Word 文档 为此
  • c 语言软链接函数,C++/C链接过程详解

    头文件可以被多个编译单元包含 如果头文件里有定义 那么每个包含这个头文件的编译单元就都会对同一个符号 进行定义 如果该符号为外部链接 则会导致duplicated external simbols 因此如果头文件里要定义 必须保证定义的符号
  • 刷题day51:重新安排行程 ***

    题意描述 给你一份航线列表 tickets 其中 tickets i fromi toi 表示飞机出发和降落的机场地点 请你对该行程进行重新规划排序 所有这些机票都属于一个从 JFK 肯尼迪国际机场 出发的先生 所以该行程必须从 JFK 开
  • pip install 出现HHTP链接有问题

    Could not fetch URL https pypi org simple seaborn There was a problem confirming the ssl certificate HTTPSConnectionPool
  • linux 命令执行的判断依据

    linux 命令执行的判断依据 一 指令与指令中间利用分号 来隔开 分号前的指令执行完后就会立刻接着执行后面的指令了 二 和 每个指令执行结束后 都会有一个指令回传值 如果指令执行正确 返回0 如果执行错误 则返回错误的对应数字 和 会通过
  • 2218. Maximum Value of K Coins From Piles

    There are n piles of coins on a table Each pile consists of a positive number of coins of assorted denominations In one
  • HTML 制作表格案例

    1 运行要求 2 示例代码 table align center border 1 cellspacing 0 tr th 排名 th th 趋势 th th 关键词 th th 今日搜索 th tr table
  • 彻底理解NodeJs中的回调(Callback)函数

    究竟什么是回调函数 Callback 网上有许许多多的文章 大部分看得人云里雾外 这些文章大概分成两类 第一类堆砌了太多的术语 基本上不明白术语就没法看 另一类反过来 不讲术语 完全是举一些脱离编程的生活化例子来类比 看的人更加晕头转向 作
  • Ubuntu 20.04 下Fabric V2.2.0 和 V1.1.0 运行及配置说明(均可运行)

    ubuntu 20 04 下Fabric V2 2 0 和 V1 1 0 运行及配置说明 ubuntu 20 04 下Fabric运行及配置说明 注 本文是对 hyperledger fabric 区块链快速入门教程 错误解决 良好用户体验
  • 趣图丨前端后端接口联调的时候……

    是不是感觉数据永远都对不上 看完此文 你有什么想法或观点呢 欢迎在留言区留言评论 更多精彩
  • 华为录屏全攻略,从入门到高手

    求助 华为录屏在哪里呀 找了一上午了 平时的时候也看见过 就没在意 现在需要用到了 就找不到了 真的离谱 有没有人知道的 教教我 在智能手机时代 录制屏幕成为了我们生活中必不可少的一部分 无论是录制游戏过程 在线课程还是演示教程 录屏功能都
  • [大模型] LLaMA系列大模型调研与整理-llama/alpaca/lora(部分)

    文章目录 LLaMA大模型及其衍生模型 1 LLaMA 2 stanford alpaca 3 ChatDoctor 4 alpaca lora 5 Chinese LLaMA Alpaca 6 BELLE 大模型综述 A Survey o
  • 深度学习模型部署学习一

    深度学习模型部署 学习链接 模型部署入门教程 一 模型部署简介 写在前面 本文档为学习上述链接的相关记录 基本内容一致 仅用于学习用途 若侵权请联系我删除 目 录 深度学习模型部署 1 为什么需要部署 2 部署难题 3 部署流程 4 实战模
  • js实现右键弹出自定义的菜单

    js实现右键弹出自定义的菜单 实现的步骤 1 首先阻止右键弹出系统默认的菜单 2 自定义菜单并隐藏 3 点击右键弹出自定义菜单 4 点击桌面除菜单任意位置 菜单隐藏 点击菜单 菜单不隐藏